From b762da8bc9a10ffd03c85b279832ec903c0466f7 Mon Sep 17 00:00:00 2001
From: Valere JEANTET
Date: Sun, 14 Jan 2018 01:24:16 +0100
Subject: [PATCH] new processor POP3 - usable as input or filter
sinceDB Unit can now handle []byte data
move examples.d to cmd/bitfan
vendoring
---
api/swagger.json | 22 +-
cmd/bitfan/commands/plugins.go | 3 +
.../bitfan/examples.d}/beats-ssl.conf | 0
.../bitfan/examples.d}/beats.conf | 0
.../bitfan/examples.d}/blacklist.conf | 0
.../bitfan/examples.d}/change.conf | 0
.../bitfan/examples.d}/codec/csv.conf | 0
.../bitfan/examples.d}/codec/json-lines.conf | 0
.../bitfan/examples.d}/codec/json.conf | 0
.../bitfan/examples.d}/codec/line-sep.conf | 0
.../bitfan/examples.d}/codec/line.conf | 0
.../examples.d}/codec/multiline-next.conf | 0
.../bitfan/examples.d}/codec/multiline.conf | 0
.../bitfan/examples.d}/codec/stdin.conf | 0
.../bitfan/examples.d}/codec/tail-csv.conf | 0
.../examples.d}/codec/tail-multiline.conf | 0
.../bitfan/examples.d}/codec/tail.conf | 0
.../bitfan/examples.d}/csv.conf | 0
.../dataset/access.log.2017-02-11.gz | Bin
.../dataset/access.log.2017-02-11.log | 0
.../examples.d}/dataset/apache-sepARO.log | 0
.../bitfan/examples.d}/dataset/apache.log | 0
.../bitfan/examples.d}/dataset/file.csv | 0
.../examples.d}/dataset/github-issue.html | 0
.../examples.d}/dataset/javastacktrace.log | 0
.../examples.d}/dataset/multilines.json | 0
.../bitfan/examples.d}/dataset/multinext.log | 0
.../bitfan/examples.d}/dataset/simple.json | 0
.../bitfan/examples.d}/date.conf | 0
.../bitfan/examples.d}/elasticin.conf | 0
.../bitfan/examples.d}/elasticout.conf | 0
.../bitfan/examples.d}/email.conf | 0
.../bitfan/examples.d}/error.conf | 0
.../bitfan/examples.d}/eval-math.conf | 0
.../bitfan/examples.d}/eval-templates.conf | 0
.../bitfan/examples.d}/event.conf | 0
.../bitfan/examples.d}/exec.conf | 0
.../bitfan/examples.d}/geoip.conf | 0
.../bitfan/examples.d}/grok.conf | 0
.../bitfan/examples.d}/html.conf | 0
.../bitfan/examples.d}/httpserver.conf | 0
.../bitfan/examples.d}/if-complex.conf | 0
{examples.d => cmd/bitfan/examples.d}/if.conf | 0
.../issue-21_http-poller-handle-error.conf | 0
.../bitfan/examples.d}/issue_16.conf | 0
...o-send-2-events-where-only-1-expected.conf | 0
...erge-gennumbers-and-events-processors.conf | 0
...cessor-httppoller-lost-received-event.conf | 0
...r-customize-response-headers-and-body.conf | 0
...essor-httpout-display-the-same-output.conf | 0
...issue_35-email-to-cc-use-field-values.conf | 0
{examples.d => cmd/bitfan/examples.d}/jq.conf | 0
.../bitfan/examples.d}/ldap.conf | 0
.../bitfan/examples.d}/mail/mail.conf | 0
.../bitfan/examples.d}/mail/oss.png | Bin
.../bitfan/examples.d}/mail/template.tpl | 0
.../bitfan/examples.d}/multiline.conf | 0
.../bitfan/examples.d}/newterm.conf | 0
cmd/bitfan/examples.d/pop3.conf | 22 +
.../bitfan/examples.d}/readfile.conf | 0
.../bitfan/examples.d}/sendEmailOnHTTP.conf | 0
.../bitfan/examples.d}/simple.conf | 0
.../examples.d}/simple/dataset/apache.log | 0
.../dataset/dossier sans titre/geoip.conf | 0
.../examples.d}/simple/dataset/multinext.log | 0
.../bitfan/examples.d}/simple/httpserver.conf | 0
.../bitfan/examples.d}/sophos_IAP.conf | 0
.../bitfan/examples.d}/sql.conf | 0
.../bitfan/examples.d}/stop.conf | 0
.../bitfan/examples.d}/template.conf | 0
.../bitfan/examples.d}/template.tpl | 0
.../bitfan/examples.d}/use/main.conf | 0
.../bitfan/examples.d}/use/subs/input2.conf | 0
.../bitfan/examples.d}/use/subs/lol/test.conf | 0
.../bitfan/examples.d}/use/subs/output2.conf | 0
.../bitfan/examples.d}/use/subs/use1.conf | 0
.../bitfan/examples.d}/use/subs/use11.conf | 0
.../bitfan/examples.d}/whitelist.conf | 0
cmd/bitfanUI/server/assets.go | 829 +++++++++---------
docs/content/filters/pop3.md | 99 +++
docs/content/inputs/pop3.md | 96 ++
docs/content/inputs/websocket.md | 7 +
docs/content/outputs/websocket.md | 7 +
docs/data/processors/geoip.json | 4 +-
docs/data/processors/pop3processor.json | 152 ++++
processors/filter-geoip/docdoc.go | 4 +-
processors/filter-geoip/readme.md | 31 +-
processors/pop3/conn.go | 128 +++
processors/pop3/docdoc.go | 159 ++++
processors/pop3/pop3.go | 302 +++++++
processors/pop3/readme.md | 162 ++++
processors/sincedb.go | 22 +
vendor/github.com/jaytaylor/html2text/LICENSE | 22 +
.../github.com/jaytaylor/html2text/README.md | 137 +++
.../jaytaylor/html2text/html2text.go | 473 ++++++++++
.../jhillyerd/enmime/CONTRIBUTING.md | 47 +
vendor/github.com/jhillyerd/enmime/LICENSE | 20 +
vendor/github.com/jhillyerd/enmime/Makefile | 35 +
vendor/github.com/jhillyerd/enmime/README.md | 50 ++
vendor/github.com/jhillyerd/enmime/base64.go | 69 ++
.../github.com/jhillyerd/enmime/boundary.go | 186 ++++
.../github.com/jhillyerd/enmime/charsets.go | 310 +++++++
vendor/github.com/jhillyerd/enmime/detect.go | 83 ++
vendor/github.com/jhillyerd/enmime/doc.go | 37 +
.../github.com/jhillyerd/enmime/envelope.go | 273 ++++++
vendor/github.com/jhillyerd/enmime/error.go | 60 ++
vendor/github.com/jhillyerd/enmime/header.go | 198 +++++
vendor/github.com/jhillyerd/enmime/match.go | 107 +++
vendor/github.com/jhillyerd/enmime/part.go | 344 ++++++++
.../jhillyerd/enmime/quotedprint.go | 105 +++
vendor/github.com/ssor/bom/LICENSE | 21 +
vendor/github.com/ssor/bom/README.md | 23 +
vendor/github.com/ssor/bom/bom.go | 34 +
vendor/github.com/taknb2nch/go-pop3/LICENSE | 21 +
vendor/github.com/taknb2nch/go-pop3/README.md | 115 +++
vendor/github.com/taknb2nch/go-pop3/pop3.go | 400 +++++++++
.../github.com/taknb2nch/go-pop3/pop3proto.go | 175 ++++
vendor/vendor.json | 24 +
118 files changed, 4980 insertions(+), 438 deletions(-)
rename {examples.d => cmd/bitfan/examples.d}/beats-ssl.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/beats.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/blacklist.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/change.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/csv.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/json-lines.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/json.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/line-sep.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/line.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/multiline-next.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/multiline.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/stdin.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/tail-csv.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/tail-multiline.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/codec/tail.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/csv.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/access.log.2017-02-11.gz (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/access.log.2017-02-11.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/apache-sepARO.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/apache.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/file.csv (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/github-issue.html (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/javastacktrace.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/multilines.json (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/multinext.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/dataset/simple.json (100%)
rename {examples.d => cmd/bitfan/examples.d}/date.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/elasticin.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/elasticout.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/email.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/error.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/eval-math.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/eval-templates.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/event.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/exec.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/geoip.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/grok.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/html.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/httpserver.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/if-complex.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/if.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue-21_http-poller-handle-error.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_16.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_26-processor-http-seems-to-send-2-events-where-only-1-expected.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_27-merge-gennumbers-and-events-processors.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_29-processor-httppoller-lost-received-event.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_30-httpserver-customize-response-headers-and-body.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_34-processor-httpout-display-the-same-output.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/issue_35-email-to-cc-use-field-values.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/jq.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/ldap.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/mail/mail.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/mail/oss.png (100%)
rename {examples.d => cmd/bitfan/examples.d}/mail/template.tpl (100%)
rename {examples.d => cmd/bitfan/examples.d}/multiline.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/newterm.conf (100%)
create mode 100644 cmd/bitfan/examples.d/pop3.conf
rename {examples.d => cmd/bitfan/examples.d}/readfile.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/sendEmailOnHTTP.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/simple.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/simple/dataset/apache.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/simple/dataset/dossier sans titre/geoip.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/simple/dataset/multinext.log (100%)
rename {examples.d => cmd/bitfan/examples.d}/simple/httpserver.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/sophos_IAP.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/sql.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/stop.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/template.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/template.tpl (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/main.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/subs/input2.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/subs/lol/test.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/subs/output2.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/subs/use1.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/use/subs/use11.conf (100%)
rename {examples.d => cmd/bitfan/examples.d}/whitelist.conf (100%)
create mode 100644 docs/content/filters/pop3.md
create mode 100644 docs/content/inputs/pop3.md
create mode 100644 docs/content/inputs/websocket.md
create mode 100644 docs/content/outputs/websocket.md
create mode 100644 docs/data/processors/pop3processor.json
create mode 100644 processors/pop3/conn.go
create mode 100644 processors/pop3/docdoc.go
create mode 100644 processors/pop3/pop3.go
create mode 100644 processors/pop3/readme.md
create mode 100644 vendor/github.com/jaytaylor/html2text/LICENSE
create mode 100644 vendor/github.com/jaytaylor/html2text/README.md
create mode 100644 vendor/github.com/jaytaylor/html2text/html2text.go
create mode 100644 vendor/github.com/jhillyerd/enmime/CONTRIBUTING.md
create mode 100644 vendor/github.com/jhillyerd/enmime/LICENSE
create mode 100644 vendor/github.com/jhillyerd/enmime/Makefile
create mode 100644 vendor/github.com/jhillyerd/enmime/README.md
create mode 100644 vendor/github.com/jhillyerd/enmime/base64.go
create mode 100644 vendor/github.com/jhillyerd/enmime/boundary.go
create mode 100644 vendor/github.com/jhillyerd/enmime/charsets.go
create mode 100644 vendor/github.com/jhillyerd/enmime/detect.go
create mode 100644 vendor/github.com/jhillyerd/enmime/doc.go
create mode 100644 vendor/github.com/jhillyerd/enmime/envelope.go
create mode 100644 vendor/github.com/jhillyerd/enmime/error.go
create mode 100644 vendor/github.com/jhillyerd/enmime/header.go
create mode 100644 vendor/github.com/jhillyerd/enmime/match.go
create mode 100644 vendor/github.com/jhillyerd/enmime/part.go
create mode 100644 vendor/github.com/jhillyerd/enmime/quotedprint.go
create mode 100644 vendor/github.com/ssor/bom/LICENSE
create mode 100644 vendor/github.com/ssor/bom/README.md
create mode 100644 vendor/github.com/ssor/bom/bom.go
create mode 100644 vendor/github.com/taknb2nch/go-pop3/LICENSE
create mode 100644 vendor/github.com/taknb2nch/go-pop3/README.md
create mode 100644 vendor/github.com/taknb2nch/go-pop3/pop3.go
create mode 100644 vendor/github.com/taknb2nch/go-pop3/pop3proto.go
diff --git a/api/swagger.json b/api/swagger.json
index 26c99a73..d6078334 100644
--- a/api/swagger.json
+++ b/api/swagger.json
@@ -8,10 +8,7 @@
"ContentType": {
"type": "string"
},
- "CreatedAt": {
- "type": "string",
- "format": "date-time"
- },
+ "CreatedAt": {},
"Name": {
"type": "string"
},
@@ -25,10 +22,7 @@
"Type": {
"type": "string"
},
- "UpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
+ "UpdatedAt": {},
"Value": {
"type": "array",
"items": {
@@ -63,10 +57,7 @@
"Active": {
"type": "boolean"
},
- "CreatedAt": {
- "type": "string",
- "format": "date-time"
- },
+ "CreatedAt": {},
"Description": {
"type": "string"
},
@@ -76,10 +67,7 @@
"Playground": {
"type": "boolean"
},
- "UpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
+ "UpdatedAt": {},
"Webhooks": {
"type": "array",
"items": {
@@ -114,8 +102,6 @@
"x-go-name": "Label"
},
"started_at": {
- "type": "string",
- "format": "date-time",
"x-go-name": "StartedAt"
},
"uuid": {
diff --git a/cmd/bitfan/commands/plugins.go b/cmd/bitfan/commands/plugins.go
index b0bbf4f0..b56fc7ea 100644
--- a/cmd/bitfan/commands/plugins.go
+++ b/cmd/bitfan/commands/plugins.go
@@ -43,6 +43,7 @@ import (
null "github.com/vjeantet/bitfan/processors/output-null"
rabbitmqoutput "github.com/vjeantet/bitfan/processors/output-rabbitmq"
statsd "github.com/vjeantet/bitfan/processors/output-statsd"
+ pop3processor "github.com/vjeantet/bitfan/processors/pop3"
route "github.com/vjeantet/bitfan/processors/route"
stdout "github.com/vjeantet/bitfan/processors/stdout"
websocket "github.com/vjeantet/bitfan/processors/websocket"
@@ -80,6 +81,7 @@ func init() {
initPlugin("input", "httpserver", inputhttpserverprocessor.New)
initPlugin("input", "event", inputeventprocessor.New)
initPlugin("input", "websocket", websocketinput.New)
+ initPlugin("input", "pop3", pop3processor.New)
initPlugin("filter", "eval", evalprocessor.New)
initPlugin("filter", "readfile", file.New)
@@ -107,6 +109,7 @@ func init() {
initPlugin("filter", "stdout", stdout.New)
initPlugin("filter", "http", httppoller.New)
initPlugin("filter", "httpout", httpoutprocessor.New)
+ initPlugin("filter", "pop3", pop3processor.New)
initPlugin("filter", "use", use.New)
initPlugin("filter", "route", route.New)
diff --git a/examples.d/beats-ssl.conf b/cmd/bitfan/examples.d/beats-ssl.conf
similarity index 100%
rename from examples.d/beats-ssl.conf
rename to cmd/bitfan/examples.d/beats-ssl.conf
diff --git a/examples.d/beats.conf b/cmd/bitfan/examples.d/beats.conf
similarity index 100%
rename from examples.d/beats.conf
rename to cmd/bitfan/examples.d/beats.conf
diff --git a/examples.d/blacklist.conf b/cmd/bitfan/examples.d/blacklist.conf
similarity index 100%
rename from examples.d/blacklist.conf
rename to cmd/bitfan/examples.d/blacklist.conf
diff --git a/examples.d/change.conf b/cmd/bitfan/examples.d/change.conf
similarity index 100%
rename from examples.d/change.conf
rename to cmd/bitfan/examples.d/change.conf
diff --git a/examples.d/codec/csv.conf b/cmd/bitfan/examples.d/codec/csv.conf
similarity index 100%
rename from examples.d/codec/csv.conf
rename to cmd/bitfan/examples.d/codec/csv.conf
diff --git a/examples.d/codec/json-lines.conf b/cmd/bitfan/examples.d/codec/json-lines.conf
similarity index 100%
rename from examples.d/codec/json-lines.conf
rename to cmd/bitfan/examples.d/codec/json-lines.conf
diff --git a/examples.d/codec/json.conf b/cmd/bitfan/examples.d/codec/json.conf
similarity index 100%
rename from examples.d/codec/json.conf
rename to cmd/bitfan/examples.d/codec/json.conf
diff --git a/examples.d/codec/line-sep.conf b/cmd/bitfan/examples.d/codec/line-sep.conf
similarity index 100%
rename from examples.d/codec/line-sep.conf
rename to cmd/bitfan/examples.d/codec/line-sep.conf
diff --git a/examples.d/codec/line.conf b/cmd/bitfan/examples.d/codec/line.conf
similarity index 100%
rename from examples.d/codec/line.conf
rename to cmd/bitfan/examples.d/codec/line.conf
diff --git a/examples.d/codec/multiline-next.conf b/cmd/bitfan/examples.d/codec/multiline-next.conf
similarity index 100%
rename from examples.d/codec/multiline-next.conf
rename to cmd/bitfan/examples.d/codec/multiline-next.conf
diff --git a/examples.d/codec/multiline.conf b/cmd/bitfan/examples.d/codec/multiline.conf
similarity index 100%
rename from examples.d/codec/multiline.conf
rename to cmd/bitfan/examples.d/codec/multiline.conf
diff --git a/examples.d/codec/stdin.conf b/cmd/bitfan/examples.d/codec/stdin.conf
similarity index 100%
rename from examples.d/codec/stdin.conf
rename to cmd/bitfan/examples.d/codec/stdin.conf
diff --git a/examples.d/codec/tail-csv.conf b/cmd/bitfan/examples.d/codec/tail-csv.conf
similarity index 100%
rename from examples.d/codec/tail-csv.conf
rename to cmd/bitfan/examples.d/codec/tail-csv.conf
diff --git a/examples.d/codec/tail-multiline.conf b/cmd/bitfan/examples.d/codec/tail-multiline.conf
similarity index 100%
rename from examples.d/codec/tail-multiline.conf
rename to cmd/bitfan/examples.d/codec/tail-multiline.conf
diff --git a/examples.d/codec/tail.conf b/cmd/bitfan/examples.d/codec/tail.conf
similarity index 100%
rename from examples.d/codec/tail.conf
rename to cmd/bitfan/examples.d/codec/tail.conf
diff --git a/examples.d/csv.conf b/cmd/bitfan/examples.d/csv.conf
similarity index 100%
rename from examples.d/csv.conf
rename to cmd/bitfan/examples.d/csv.conf
diff --git a/examples.d/dataset/access.log.2017-02-11.gz b/cmd/bitfan/examples.d/dataset/access.log.2017-02-11.gz
similarity index 100%
rename from examples.d/dataset/access.log.2017-02-11.gz
rename to cmd/bitfan/examples.d/dataset/access.log.2017-02-11.gz
diff --git a/examples.d/dataset/access.log.2017-02-11.log b/cmd/bitfan/examples.d/dataset/access.log.2017-02-11.log
similarity index 100%
rename from examples.d/dataset/access.log.2017-02-11.log
rename to cmd/bitfan/examples.d/dataset/access.log.2017-02-11.log
diff --git a/examples.d/dataset/apache-sepARO.log b/cmd/bitfan/examples.d/dataset/apache-sepARO.log
similarity index 100%
rename from examples.d/dataset/apache-sepARO.log
rename to cmd/bitfan/examples.d/dataset/apache-sepARO.log
diff --git a/examples.d/dataset/apache.log b/cmd/bitfan/examples.d/dataset/apache.log
similarity index 100%
rename from examples.d/dataset/apache.log
rename to cmd/bitfan/examples.d/dataset/apache.log
diff --git a/examples.d/dataset/file.csv b/cmd/bitfan/examples.d/dataset/file.csv
similarity index 100%
rename from examples.d/dataset/file.csv
rename to cmd/bitfan/examples.d/dataset/file.csv
diff --git a/examples.d/dataset/github-issue.html b/cmd/bitfan/examples.d/dataset/github-issue.html
similarity index 100%
rename from examples.d/dataset/github-issue.html
rename to cmd/bitfan/examples.d/dataset/github-issue.html
diff --git a/examples.d/dataset/javastacktrace.log b/cmd/bitfan/examples.d/dataset/javastacktrace.log
similarity index 100%
rename from examples.d/dataset/javastacktrace.log
rename to cmd/bitfan/examples.d/dataset/javastacktrace.log
diff --git a/examples.d/dataset/multilines.json b/cmd/bitfan/examples.d/dataset/multilines.json
similarity index 100%
rename from examples.d/dataset/multilines.json
rename to cmd/bitfan/examples.d/dataset/multilines.json
diff --git a/examples.d/dataset/multinext.log b/cmd/bitfan/examples.d/dataset/multinext.log
similarity index 100%
rename from examples.d/dataset/multinext.log
rename to cmd/bitfan/examples.d/dataset/multinext.log
diff --git a/examples.d/dataset/simple.json b/cmd/bitfan/examples.d/dataset/simple.json
similarity index 100%
rename from examples.d/dataset/simple.json
rename to cmd/bitfan/examples.d/dataset/simple.json
diff --git a/examples.d/date.conf b/cmd/bitfan/examples.d/date.conf
similarity index 100%
rename from examples.d/date.conf
rename to cmd/bitfan/examples.d/date.conf
diff --git a/examples.d/elasticin.conf b/cmd/bitfan/examples.d/elasticin.conf
similarity index 100%
rename from examples.d/elasticin.conf
rename to cmd/bitfan/examples.d/elasticin.conf
diff --git a/examples.d/elasticout.conf b/cmd/bitfan/examples.d/elasticout.conf
similarity index 100%
rename from examples.d/elasticout.conf
rename to cmd/bitfan/examples.d/elasticout.conf
diff --git a/examples.d/email.conf b/cmd/bitfan/examples.d/email.conf
similarity index 100%
rename from examples.d/email.conf
rename to cmd/bitfan/examples.d/email.conf
diff --git a/examples.d/error.conf b/cmd/bitfan/examples.d/error.conf
similarity index 100%
rename from examples.d/error.conf
rename to cmd/bitfan/examples.d/error.conf
diff --git a/examples.d/eval-math.conf b/cmd/bitfan/examples.d/eval-math.conf
similarity index 100%
rename from examples.d/eval-math.conf
rename to cmd/bitfan/examples.d/eval-math.conf
diff --git a/examples.d/eval-templates.conf b/cmd/bitfan/examples.d/eval-templates.conf
similarity index 100%
rename from examples.d/eval-templates.conf
rename to cmd/bitfan/examples.d/eval-templates.conf
diff --git a/examples.d/event.conf b/cmd/bitfan/examples.d/event.conf
similarity index 100%
rename from examples.d/event.conf
rename to cmd/bitfan/examples.d/event.conf
diff --git a/examples.d/exec.conf b/cmd/bitfan/examples.d/exec.conf
similarity index 100%
rename from examples.d/exec.conf
rename to cmd/bitfan/examples.d/exec.conf
diff --git a/examples.d/geoip.conf b/cmd/bitfan/examples.d/geoip.conf
similarity index 100%
rename from examples.d/geoip.conf
rename to cmd/bitfan/examples.d/geoip.conf
diff --git a/examples.d/grok.conf b/cmd/bitfan/examples.d/grok.conf
similarity index 100%
rename from examples.d/grok.conf
rename to cmd/bitfan/examples.d/grok.conf
diff --git a/examples.d/html.conf b/cmd/bitfan/examples.d/html.conf
similarity index 100%
rename from examples.d/html.conf
rename to cmd/bitfan/examples.d/html.conf
diff --git a/examples.d/httpserver.conf b/cmd/bitfan/examples.d/httpserver.conf
similarity index 100%
rename from examples.d/httpserver.conf
rename to cmd/bitfan/examples.d/httpserver.conf
diff --git a/examples.d/if-complex.conf b/cmd/bitfan/examples.d/if-complex.conf
similarity index 100%
rename from examples.d/if-complex.conf
rename to cmd/bitfan/examples.d/if-complex.conf
diff --git a/examples.d/if.conf b/cmd/bitfan/examples.d/if.conf
similarity index 100%
rename from examples.d/if.conf
rename to cmd/bitfan/examples.d/if.conf
diff --git a/examples.d/issue-21_http-poller-handle-error.conf b/cmd/bitfan/examples.d/issue-21_http-poller-handle-error.conf
similarity index 100%
rename from examples.d/issue-21_http-poller-handle-error.conf
rename to cmd/bitfan/examples.d/issue-21_http-poller-handle-error.conf
diff --git a/examples.d/issue_16.conf b/cmd/bitfan/examples.d/issue_16.conf
similarity index 100%
rename from examples.d/issue_16.conf
rename to cmd/bitfan/examples.d/issue_16.conf
diff --git a/examples.d/issue_26-processor-http-seems-to-send-2-events-where-only-1-expected.conf b/cmd/bitfan/examples.d/issue_26-processor-http-seems-to-send-2-events-where-only-1-expected.conf
similarity index 100%
rename from examples.d/issue_26-processor-http-seems-to-send-2-events-where-only-1-expected.conf
rename to cmd/bitfan/examples.d/issue_26-processor-http-seems-to-send-2-events-where-only-1-expected.conf
diff --git a/examples.d/issue_27-merge-gennumbers-and-events-processors.conf b/cmd/bitfan/examples.d/issue_27-merge-gennumbers-and-events-processors.conf
similarity index 100%
rename from examples.d/issue_27-merge-gennumbers-and-events-processors.conf
rename to cmd/bitfan/examples.d/issue_27-merge-gennumbers-and-events-processors.conf
diff --git a/examples.d/issue_29-processor-httppoller-lost-received-event.conf b/cmd/bitfan/examples.d/issue_29-processor-httppoller-lost-received-event.conf
similarity index 100%
rename from examples.d/issue_29-processor-httppoller-lost-received-event.conf
rename to cmd/bitfan/examples.d/issue_29-processor-httppoller-lost-received-event.conf
diff --git a/examples.d/issue_30-httpserver-customize-response-headers-and-body.conf b/cmd/bitfan/examples.d/issue_30-httpserver-customize-response-headers-and-body.conf
similarity index 100%
rename from examples.d/issue_30-httpserver-customize-response-headers-and-body.conf
rename to cmd/bitfan/examples.d/issue_30-httpserver-customize-response-headers-and-body.conf
diff --git a/examples.d/issue_34-processor-httpout-display-the-same-output.conf b/cmd/bitfan/examples.d/issue_34-processor-httpout-display-the-same-output.conf
similarity index 100%
rename from examples.d/issue_34-processor-httpout-display-the-same-output.conf
rename to cmd/bitfan/examples.d/issue_34-processor-httpout-display-the-same-output.conf
diff --git a/examples.d/issue_35-email-to-cc-use-field-values.conf b/cmd/bitfan/examples.d/issue_35-email-to-cc-use-field-values.conf
similarity index 100%
rename from examples.d/issue_35-email-to-cc-use-field-values.conf
rename to cmd/bitfan/examples.d/issue_35-email-to-cc-use-field-values.conf
diff --git a/examples.d/jq.conf b/cmd/bitfan/examples.d/jq.conf
similarity index 100%
rename from examples.d/jq.conf
rename to cmd/bitfan/examples.d/jq.conf
diff --git a/examples.d/ldap.conf b/cmd/bitfan/examples.d/ldap.conf
similarity index 100%
rename from examples.d/ldap.conf
rename to cmd/bitfan/examples.d/ldap.conf
diff --git a/examples.d/mail/mail.conf b/cmd/bitfan/examples.d/mail/mail.conf
similarity index 100%
rename from examples.d/mail/mail.conf
rename to cmd/bitfan/examples.d/mail/mail.conf
diff --git a/examples.d/mail/oss.png b/cmd/bitfan/examples.d/mail/oss.png
similarity index 100%
rename from examples.d/mail/oss.png
rename to cmd/bitfan/examples.d/mail/oss.png
diff --git a/examples.d/mail/template.tpl b/cmd/bitfan/examples.d/mail/template.tpl
similarity index 100%
rename from examples.d/mail/template.tpl
rename to cmd/bitfan/examples.d/mail/template.tpl
diff --git a/examples.d/multiline.conf b/cmd/bitfan/examples.d/multiline.conf
similarity index 100%
rename from examples.d/multiline.conf
rename to cmd/bitfan/examples.d/multiline.conf
diff --git a/examples.d/newterm.conf b/cmd/bitfan/examples.d/newterm.conf
similarity index 100%
rename from examples.d/newterm.conf
rename to cmd/bitfan/examples.d/newterm.conf
diff --git a/cmd/bitfan/examples.d/pop3.conf b/cmd/bitfan/examples.d/pop3.conf
new file mode 100644
index 00000000..58c1f44b
--- /dev/null
+++ b/cmd/bitfan/examples.d/pop3.conf
@@ -0,0 +1,22 @@
+input{
+stdin{}
+}
+
+filter{
+ pop3{
+ host => "pop.free.fr"
+ username => "bitfan@free.fr"
+ password => "${BITFAN_POP3PASSWORD}"
+ secure => true
+ delete => false
+ sincedb_path => "/dev/null"
+ strip_attachments => true
+
+ }
+}
+
+output{
+ stdout{
+ codec=>pp
+ }
+}
\ No newline at end of file
diff --git a/examples.d/readfile.conf b/cmd/bitfan/examples.d/readfile.conf
similarity index 100%
rename from examples.d/readfile.conf
rename to cmd/bitfan/examples.d/readfile.conf
diff --git a/examples.d/sendEmailOnHTTP.conf b/cmd/bitfan/examples.d/sendEmailOnHTTP.conf
similarity index 100%
rename from examples.d/sendEmailOnHTTP.conf
rename to cmd/bitfan/examples.d/sendEmailOnHTTP.conf
diff --git a/examples.d/simple.conf b/cmd/bitfan/examples.d/simple.conf
similarity index 100%
rename from examples.d/simple.conf
rename to cmd/bitfan/examples.d/simple.conf
diff --git a/examples.d/simple/dataset/apache.log b/cmd/bitfan/examples.d/simple/dataset/apache.log
similarity index 100%
rename from examples.d/simple/dataset/apache.log
rename to cmd/bitfan/examples.d/simple/dataset/apache.log
diff --git a/examples.d/simple/dataset/dossier sans titre/geoip.conf b/cmd/bitfan/examples.d/simple/dataset/dossier sans titre/geoip.conf
similarity index 100%
rename from examples.d/simple/dataset/dossier sans titre/geoip.conf
rename to cmd/bitfan/examples.d/simple/dataset/dossier sans titre/geoip.conf
diff --git a/examples.d/simple/dataset/multinext.log b/cmd/bitfan/examples.d/simple/dataset/multinext.log
similarity index 100%
rename from examples.d/simple/dataset/multinext.log
rename to cmd/bitfan/examples.d/simple/dataset/multinext.log
diff --git a/examples.d/simple/httpserver.conf b/cmd/bitfan/examples.d/simple/httpserver.conf
similarity index 100%
rename from examples.d/simple/httpserver.conf
rename to cmd/bitfan/examples.d/simple/httpserver.conf
diff --git a/examples.d/sophos_IAP.conf b/cmd/bitfan/examples.d/sophos_IAP.conf
similarity index 100%
rename from examples.d/sophos_IAP.conf
rename to cmd/bitfan/examples.d/sophos_IAP.conf
diff --git a/examples.d/sql.conf b/cmd/bitfan/examples.d/sql.conf
similarity index 100%
rename from examples.d/sql.conf
rename to cmd/bitfan/examples.d/sql.conf
diff --git a/examples.d/stop.conf b/cmd/bitfan/examples.d/stop.conf
similarity index 100%
rename from examples.d/stop.conf
rename to cmd/bitfan/examples.d/stop.conf
diff --git a/examples.d/template.conf b/cmd/bitfan/examples.d/template.conf
similarity index 100%
rename from examples.d/template.conf
rename to cmd/bitfan/examples.d/template.conf
diff --git a/examples.d/template.tpl b/cmd/bitfan/examples.d/template.tpl
similarity index 100%
rename from examples.d/template.tpl
rename to cmd/bitfan/examples.d/template.tpl
diff --git a/examples.d/use/main.conf b/cmd/bitfan/examples.d/use/main.conf
similarity index 100%
rename from examples.d/use/main.conf
rename to cmd/bitfan/examples.d/use/main.conf
diff --git a/examples.d/use/subs/input2.conf b/cmd/bitfan/examples.d/use/subs/input2.conf
similarity index 100%
rename from examples.d/use/subs/input2.conf
rename to cmd/bitfan/examples.d/use/subs/input2.conf
diff --git a/examples.d/use/subs/lol/test.conf b/cmd/bitfan/examples.d/use/subs/lol/test.conf
similarity index 100%
rename from examples.d/use/subs/lol/test.conf
rename to cmd/bitfan/examples.d/use/subs/lol/test.conf
diff --git a/examples.d/use/subs/output2.conf b/cmd/bitfan/examples.d/use/subs/output2.conf
similarity index 100%
rename from examples.d/use/subs/output2.conf
rename to cmd/bitfan/examples.d/use/subs/output2.conf
diff --git a/examples.d/use/subs/use1.conf b/cmd/bitfan/examples.d/use/subs/use1.conf
similarity index 100%
rename from examples.d/use/subs/use1.conf
rename to cmd/bitfan/examples.d/use/subs/use1.conf
diff --git a/examples.d/use/subs/use11.conf b/cmd/bitfan/examples.d/use/subs/use11.conf
similarity index 100%
rename from examples.d/use/subs/use11.conf
rename to cmd/bitfan/examples.d/use/subs/use11.conf
diff --git a/examples.d/whitelist.conf b/cmd/bitfan/examples.d/whitelist.conf
similarity index 100%
rename from examples.d/whitelist.conf
rename to cmd/bitfan/examples.d/whitelist.conf
diff --git a/cmd/bitfanUI/server/assets.go b/cmd/bitfanUI/server/assets.go
index d595e23a..8d942a7d 100644
--- a/cmd/bitfanUI/server/assets.go
+++ b/cmd/bitfanUI/server/assets.go
@@ -1,6 +1,7 @@
// Code generated by go-bindata.
// sources:
// assets/public/css/application.css
+// assets/public/css/application.css.map
// assets/public/images/favicon.png
// assets/public/images/open-fan.png
// assets/public/images/simple.conf
@@ -483,7 +484,27 @@ func assetsPublicCssApplicationCss() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/css/application.css", size: 6560, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/public/css/application.css", size: 6560, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
+ a := &asset{bytes: bytes, info: info}
+ return a, nil
+}
+
+var _assetsPublicCssApplicationCssMap = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x57\x4d\x6f\x1b\x37\x10\xbd\xfb\x57\x18\x7b\x0d\x91\xc4\x71\xeb\x36\xde\xd3\x0c\xc3\x6e\x18\x9b\x70\x65\xc1\x8d\xec\xa2\x07\x59\x55\x6c\xc9\xb2\xa4\x68\xd7\xae\xe3\xa2\xff\xbd\x98\x21\x29\x7e\x2c\x0d\x03\x6d\x5a\xa0\x40\x6f\xd2\xe3\xd7\xcc\x9b\x37\x8f\xdc\xdf\x77\xaa\xfb\xe9\xa6\x9d\xad\x96\xd5\xe1\xee\xbe\xd8\xa9\x6e\xc7\xeb\xf5\x6c\x79\xd5\x56\x87\xbb\x15\x00\x40\x5d\xd7\xf5\x11\xe8\xa3\x5a\x81\x7c\x27\x4e\x00\x4e\x84\x02\x90\x62\x08\x70\x56\xd7\x00\x4d\x87\xb5\x06\xe9\xc6\x8f\x00\x8e\x68\x5c\x09\x0d\xa0\x09\x1b\x09\x03\x60\x2c\x26\x01\x24\xaf\xb9\xa4\x61\xb7\xe4\x33\x02\x7c\x46\xfa\xbd\xc1\xed\xfe\x4a\x7c\x04\xf8\x48\xe0\x3a\x06\x07\x00\x03\x02\xe7\x31\xd8\x00\x34\xb5\x02\x75\x21\x6e\x10\xe0\x06\xd3\xa9\xdf\xa2\x98\x02\x4c\x53\xf0\x11\xc5\x04\x60\x92\x82\x0f\x28\xce\x00\xce\x12\x50\xad\x51\xac\x10\x60\x85\xbd\x58\xce\x01\xce\x7b\x51\x0f\x01\x86\x04\x2e\x9e\x8d\xda\xf1\xa3\x2e\x45\x8b\x00\xad\x8b\x9a\xb8\xa2\xa9\x6f\x51\xdc\x22\xc0\x6d\x06\xef\x63\x92\xa3\x87\xf7\xe2\x74\x18\x24\x92\xf7\x90\xca\xc1\x13\x7e\xf8\xfb\x2c\xd3\x2f\x02\xaf\x9f\xa7\x9e\x58\x74\x49\x04\xea\x3d\xb8\x1f\xc7\xea\xc1\xbd\x98\x7a\x07\xaa\xee\xdf\xa5\xde\xe5\x42\x01\xc6\xd4\x7b\xf8\x21\xa5\xde\xc3\xf7\x71\x3a\x0c\x12\xf5\x16\x9d\x5a\xfd\x27\xd4\x5f\x21\xc0\x15\xa6\x94\x3e\xa2\x18\x03\x8c\x53\xb0\x43\x4e\x33\x05\x37\xc8\x19\x25\xa0\x9a\x67\x3c\xdd\x21\xc0\x9d\x3b\x82\xf6\xe5\xdd\xa4\x9b\x93\xc2\x4b\x99\xe4\xea\xe1\x85\x8c\x0a\xc7\x20\x25\xb5\x90\x4f\xe9\x29\x4e\x8a\x7b\x9c\xb6\x8e\x93\xf2\xe0\x75\x9c\x94\x07\x3f\x45\x39\x39\x4c\x8d\xd2\x94\x4a\x8b\xa8\xde\x29\x76\xd1\xdf\x48\x8e\xb8\xda\x99\xfd\x8c\xa8\x52\xda\xda\x4f\x18\x66\x01\x71\xa2\xb8\x55\xd8\x69\xbe\x5c\x81\x3c\x8e\x92\xbf\xff\xdf\xb2\xbe\xb2\x65\x9d\xb8\x93\x3f\xfc\xa7\x25\x36\x1c\x6d\x33\x3d\x8e\x2e\x4d\x7f\x29\x5e\x6c\x0b\x2c\x7d\xf2\xf2\x41\xdf\x63\x74\x2d\x92\x98\xec\x9e\xb6\x9f\x39\x4c\xd9\xf7\x0f\xa2\xed\xbb\xf2\xc2\x83\x06\xe0\x80\x5d\x6a\xef\x7d\x04\x7b\xeb\xba\xc6\x08\xf4\x91\xcd\x31\x29\xae\x97\xf4\x52\x46\xd7\x78\xc8\xa2\xe7\xfa\x35\x80\x4e\x7c\x22\xa8\xc7\x46\xee\xe3\x0d\x65\x0e\x33\xa6\xce\x32\x13\x55\xcf\x10\x60\x66\x97\xcd\x25\xe1\x1c\xcf\x8f\xd1\x0c\xaf\x1e\xdd\x21\xfd\x66\xa3\x7c\xff\xcc\x4b\x24\xa4\xd0\x93\xb7\xbc\xcc\xcd\xcf\x8a\x3b\x70\xe5\xdd\x78\xdd\xb3\xf3\x09\xf3\x2a\x8b\x9d\x7e\x4e\x61\x6a\xe2\x24\x0b\x5d\x73\xef\x85\x78\xe9\x17\x81\x17\x79\x79\x34\x97\x27\x48\xde\x83\xcb\x58\xbd\x1e\x5c\xf4\x3a\x57\x53\x6a\x61\x4b\xa7\x4f\xba\xab\x28\x8b\x21\x8d\x1f\x47\xf2\xf6\xb1\x25\x32\xf1\xe0\xb2\xbc\x7b\xd6\x08\x9a\x0a\x95\xf1\xa6\x99\xb7\xec\xce\xd4\xa0\x96\xd6\x27\x54\x6d\x40\xaa\x68\x73\x66\xc3\x80\xfc\xb5\x88\x05\xd6\x78\x73\xc6\x62\xfd\x72\x68\x86\x2d\x35\x8b\xd7\x14\xd8\x30\x1c\xc6\x6f\x48\xda\x1c\x90\x36\x83\x10\x78\xcd\x80\xad\x28\x3b\x73\x40\x67\x86\x92\xda\xd3\x6b\x03\x4d\x27\xd9\xc2\x1a\x9a\x21\xa3\x19\x7e\xab\x6b\x2c\xef\x1f\x6b\xca\x51\xdb\xbc\x45\x71\x25\xa9\xd7\x6c\x8a\x19\x7d\x86\x0b\x92\xdd\x19\x86\xef\x8c\x4c\xf2\x1a\xd4\x35\x8a\x56\xb2\xa3\x18\x7e\x65\x04\x93\x73\xc2\x6b\xe6\x28\x6e\x24\x5b\xa3\xe1\x28\xc3\x0c\xd7\x22\xe6\xde\x7a\xfd\x39\x55\xf3\xb4\xaf\x04\x75\xc9\x99\xff\x13\xb5\xac\x01\xcc\x83\xdc\xde\xdf\x10\xf1\xea\xdf\x43\x4e\x49\x53\x0a\x6e\x94\xf3\xae\x4b\x19\x69\x32\xfb\x62\x5f\x95\x44\x9e\xdd\x5b\x9a\x59\xb4\x95\x36\x54\xe9\x92\xd0\x32\x47\x31\xec\x28\x21\x34\x57\x45\x35\x12\x2f\x9e\x14\x9f\x61\xdf\x7c\x8d\xc4\xd7\x80\x8c\x3e\xf4\x7c\xe3\x54\x36\xef\xb5\xea\xa0\x94\x85\xe1\x12\xbf\x09\x27\xc5\x8a\x73\xf5\x50\xfb\x56\x71\xe7\x34\xe3\x34\x77\x22\x03\x6a\x83\xe2\x40\x02\xbc\x46\x9a\xd0\x85\xae\x90\x76\x07\xaa\xd3\x7e\xec\xc7\xbd\x3a\x51\x60\x4f\xd8\x67\xe6\x85\x6c\x9f\x67\xd6\x27\x12\x7e\xdd\x2b\xa5\xd9\xd8\x6c\x56\xe8\xca\x1b\x98\x71\x57\x8a\x9e\x4b\x9a\xac\x68\x5c\x15\xad\x76\xe2\x5a\xe6\x43\xff\x70\xbd\x66\xc1\xb8\xd3\x8b\x7a\xb2\x06\x6a\xe2\xcb\x3e\xae\x7e\x26\x37\x43\x72\xcb\x54\x64\x7b\x31\xa3\x99\x48\x7c\xb4\xaf\x39\xc7\x62\x10\xa9\xff\xd6\xd0\xc9\x9b\x29\x44\xe7\x99\x9b\x63\x44\x5d\xd6\x62\x9a\x5a\xac\xd4\x0b\xbd\xc7\x42\x63\x39\xe8\x11\xe8\x6a\x49\x4f\xe6\x2f\xfc\x16\xb0\x7b\x66\xc5\xb6\xbd\xd4\x53\x00\x5d\x3d\xd4\xe0\x13\x9a\xf0\x53\xee\x09\xbc\x51\xa8\xa4\xc7\x96\x31\x4b\x43\x77\x6f\x25\xd4\xb9\x1b\x25\xfd\x52\x9d\xd8\x63\x40\xe5\x77\xb3\xf6\x25\x48\x17\x2f\xde\xf5\x9f\x5a\x1a\xd4\x23\x8a\xef\xd1\x4a\x05\x4a\x42\xea\x9e\x18\xe7\xc7\x91\xe6\xd7\xf0\x0b\xa7\x95\x64\xdc\x53\xdf\xa1\xf8\x06\xad\x1e\xa0\xc7\xb3\x1d\x7f\x83\xb6\x43\x93\x71\x57\xa6\xa3\xb9\xfd\xfc\x23\x52\x40\x16\xde\x40\x9b\xbf\x38\xee\x9c\x0e\x64\xe1\xc9\xf8\x28\xcb\x6b\x3c\xbd\xa5\x35\xdd\x57\x5c\xe3\xb8\x2b\xad\x69\xe8\x03\x57\x5a\xee\xa1\xf0\x2c\xa3\xef\x37\xba\xea\x86\xa5\xf1\x4a\xec\x54\xed\xea\x6e\x33\x99\xb6\xd5\xe1\xee\xcf\xd5\xcb\x97\xaf\xda\x49\xdb\xbe\x5a\x8c\xbf\xac\xee\xba\x97\xf4\xbb\x12\x5b\x74\xbc\x5e\x2f\x66\x93\x71\x37\x5b\x2d\xed\xd0\x2f\x62\xa7\x5a\x8e\x6f\xed\x62\xfa\xf3\x69\xb6\x98\x56\x87\xbb\x55\x3c\x93\x26\xee\xfc\xf1\x67\x00\x00\x00\xff\xff\xb7\x66\xd5\x4c\x85\x13\x00\x00")
+
+func assetsPublicCssApplicationCssMapBytes() ([]byte, error) {
+ return bindataRead(
+ _assetsPublicCssApplicationCssMap,
+ "assets/public/css/application.css.map",
+ )
+}
+
+func assetsPublicCssApplicationCssMap() (*asset, error) {
+ bytes, err := assetsPublicCssApplicationCssMapBytes()
+ if err != nil {
+ return nil, err
+ }
+
+ info := bindataFileInfo{name: "assets/public/css/application.css.map", size: 4997, mode: os.FileMode(420), modTime: time.Unix(1513293753, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -503,7 +524,7 @@ func assetsPublicImagesFaviconPng() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/images/favicon.png", size: 895, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/images/favicon.png", size: 895, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -523,7 +544,7 @@ func assetsPublicImagesOpenFanPng() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/images/open-fan.png", size: 691, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/images/open-fan.png", size: 691, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -543,7 +564,7 @@ func assetsPublicImagesSimpleConf() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/images/simple.conf", size: 193, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/images/simple.conf", size: 193, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -563,7 +584,7 @@ func assetsPublicImagesTemplateConf() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/images/template.conf", size: 400, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/images/template.conf", size: 400, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -583,12 +604,12 @@ func assetsPublicImagesTemplateTpl() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/images/template.tpl", size: 337, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/images/template.tpl", size: 337, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _assetsPublicJsBitbarJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5a\x5b\x6f\xdb\x38\x16\x7e\xcf\xaf\x38\xab\x2d\x2a\x09\x76\xa4\x0e\x66\x1f\x76\x93\x3a\x8b\xd9\xa4\x9d\x2d\xd0\x26\x45\x9b\xee\x3c\x04\x79\x90\xa5\x63\x8b\x13\x9a\x34\x44\xca\x49\x1a\xf8\xbf\x2f\x78\x91\x4d\x49\x54\x6c\x67\xa6\x18\x3f\xb4\x96\xc8\x73\xff\xce\x85\x74\xd2\x14\xbe\x7d\xba\x00\x21\x1f\x29\xc2\xbf\x8f\xec\x63\xf4\x8d\x91\x15\x56\x22\xa3\xf0\x89\x17\x35\x45\xb8\xc0\x19\x61\x44\x12\xce\x62\x98\xf1\x0a\xa6\x44\x4e\xb3\xea\xe8\xf4\x28\x9a\xd5\x2c\x57\xef\xa3\x8a\x73\x39\x56\xe4\x31\x3c\x1d\x01\x00\x90\x19\x44\xf2\x71\x89\x7c\x06\x85\x22\x47\x98\x4c\x26\x10\x36\x04\x21\xbc\x7e\x6d\x17\x92\x6c\x51\xc4\xf6\x7b\x74\x73\x6b\xb8\x68\x1e\x48\x05\xba\x8c\x16\x46\x1d\xcd\x88\x4f\x7f\xc7\x5c\x6a\x36\xe6\x75\x82\x0f\x4b\x5e\x49\x11\x77\x9e\x61\xa2\x18\x46\x0e\x47\xa5\x6b\x62\x6c\xd8\x2c\xae\xe3\x48\x96\x44\x8c\xa1\x51\xd0\xbc\x87\xa7\x23\x4d\xb7\x79\x4b\xc4\xfb\xc6\xe4\xe6\xdd\x35\x3f\x2f\x31\xbf\x6b\x0c\x57\x9f\x55\x56\xc1\x1c\xe5\xf5\xe3\x12\x61\x02\x4f\xeb\xd3\xcd\x4a\x85\xb2\xae\x18\x74\x68\x95\x15\x76\x7f\x22\xf9\x57\x59\x11\x36\x4f\xf2\x8c\xd2\xbe\x10\x6d\xfc\x8d\xb1\x1e\x1a\x5d\x6e\x43\x23\x61\xdd\xd1\xd6\x18\x79\x89\xf7\x11\x61\x42\x66\x2c\xc7\xab\xa5\x5a\x10\x1b\xc3\x74\xa8\x18\x91\xbf\x11\x59\x46\x37\xb7\x71\xcb\x84\x8d\x8f\xb6\x96\xa9\x4f\x49\x0a\x3c\xd9\x08\x89\xe2\xce\xb2\xfa\xbc\x8a\xc2\xbf\xe3\x43\xb6\x58\x52\xfc\xc4\x8b\x8c\x86\x71\xb2\x50\xff\x47\xa1\x22\x0e\xe3\xd3\x16\xc5\x7a\xdc\x7a\x4c\x53\xb8\x20\x62\x49\xb3\xc7\x46\x83\x7b\x22\x4b\x85\x90\xac\xa6\x12\x88\xc4\x85\x68\x11\x88\x92\xdf\x3b\x0a\xd1\x6c\x8a\x74\x0c\x39\x67\x12\x1f\xa4\x4f\xbd\x9c\x33\xc1\x29\x26\x94\xcf\xa3\xc0\xca\x38\x86\x5f\xaf\xe0\x18\x34\xf1\x24\x80\x91\xf9\xd6\xd1\x74\x83\xec\x92\x88\x44\x2b\x92\x50\x64\x73\x59\xc2\x64\x02\x6f\x7c\xa2\x7a\xe2\x18\x6f\xac\x52\xf4\x20\x50\x06\x1e\x21\x5b\xac\xf4\x96\xd6\x06\xc5\x7e\x51\x5a\x31\xe5\x0f\x1d\xd0\xad\x9a\x63\xe8\x78\xa5\xcf\xf6\x05\x21\x99\x93\x15\xb2\x81\x80\x28\x05\x9c\xa0\xf8\xb5\xf0\x58\xa1\xdc\xab\x77\x29\x97\xb2\x9a\xd2\x18\x9e\xc0\xbe\x80\x20\xe8\xe8\xd9\x73\xaf\x1b\x4d\xa5\x02\xdc\xe1\xa3\xf0\xc6\xd5\x2b\xd9\x2a\x96\x08\xa4\x98\x4b\x2c\x1c\x25\x86\x42\xdb\xd9\x0f\x37\xb7\xfd\x70\xf6\x95\xd6\xa1\xb1\xd4\x30\x69\xf8\x0c\x6c\xd3\xce\x83\x89\xf5\x74\x6f\x53\x9a\xb6\x7c\xe0\xb2\x8e\xbd\xbb\x05\x4a\x20\x6c\x59\x4b\x58\x65\xb4\x46\x13\x4c\xed\x17\x6f\x26\x1b\x9f\x1e\x6b\x8a\x30\x4e\x56\x19\x8d\x86\x92\xc3\xe0\x0f\xb3\x2a\x2f\xa3\x41\x47\x3b\x68\xd2\x55\x01\x32\x56\xc0\x8c\xe7\xb5\x00\x55\x62\x95\x98\x7d\x2a\x0a\x67\x51\xa8\x90\xc6\x92\xa9\x30\xe5\x25\x1c\x3f\x5f\x96\x06\x0c\xd2\xa2\x23\x8f\x35\x6b\xcf\xbb\xc1\xd2\xe6\x17\x77\x87\x8f\x53\x9e\x55\xc5\x09\xc8\xaa\xc6\x9d\x12\x3c\x79\xc7\xc1\xf8\x13\x24\x56\x8b\x76\x9a\xe9\xf7\x4e\x92\xc9\xe1\x72\x27\x35\x39\x4c\x54\x9f\xf9\xaa\xe9\x3e\xf2\x7b\xac\x34\x89\x27\x44\x2e\x9e\xc2\x4d\x4e\x59\x45\x8e\x1b\x5e\x41\x08\x23\xf3\x7d\x04\x61\x10\xfa\xc1\x46\x51\x82\xe9\x57\x0a\xc2\x37\x10\xbe\xcf\x56\xbc\x22\x12\xe1\x9c\x53\x5e\x85\x63\x08\x7f\xe5\x7c\x4e\x11\xce\xcb\x8a\x2f\x30\x1c\x03\x84\x1f\xb3\x9a\xe5\x65\xf3\x06\xd6\xb7\xfe\x32\xfc\x20\xe1\x6f\x26\x41\x55\x0b\xb5\x8f\x41\x30\x14\x7b\x8d\xce\x0a\x59\x81\xd5\x17\x14\x35\x95\x22\x9a\xd5\xdf\xbf\x3f\x0a\x5e\xc9\x64\xce\x23\x65\xca\xd8\xcd\xb9\x31\x3c\xe9\x02\x72\x02\x37\xa1\x86\x73\x78\x0b\xeb\xd8\x87\x94\x9d\x45\xd9\x88\xfd\x85\x52\x2f\xd0\x76\x80\xc0\x10\x43\x46\xa9\xa7\xda\x6e\x38\xef\x68\xca\x4e\xda\x65\xb4\x9f\xe9\xaa\xe3\x97\x72\xa1\xca\x6c\x18\xf6\x56\xd5\xdc\x17\xa9\x2d\x04\x26\xf0\xe6\x14\x08\xbc\x75\x1d\x65\xdb\xe0\x29\x90\xd1\xe8\xb9\x36\x28\xa1\xd2\x8e\x87\x89\x4b\x7d\x43\xfa\xf1\x05\x1b\x63\xf2\x6c\x6b\x55\x1f\xad\xf4\x68\xe2\xba\xf9\x83\xc4\x45\x64\x24\x25\xa4\x18\x5b\xa1\x89\xed\x3e\x41\x96\x4b\xb2\xc2\xa1\xbe\xfb\x6c\x2c\x5f\x26\x70\x50\xd4\x1e\x9d\xc2\x29\x58\x86\xab\x08\xe3\x44\xa9\x10\xa9\x7f\x76\xd6\x0f\x0b\x1d\x4b\xea\x01\x8e\xcd\x04\x07\x3c\x76\xef\xce\xc9\xc9\x86\x32\xe7\x35\x53\x01\x55\xcd\xd5\x92\x5a\x38\x78\xac\x3e\x1c\x65\x6d\x96\x87\x20\xcc\x52\xfe\x50\x74\xf1\xe9\xef\x3a\xe0\xdb\x3a\x52\x92\x79\x49\xc9\xbc\x94\x76\xcb\xcd\x9b\xdb\xf8\x87\x63\x6e\x6f\x35\xfe\x2a\x24\x6e\x55\x76\x87\xc2\x62\x3b\x11\xd2\x4c\x88\xcb\x6c\x81\xbe\x58\xd8\x53\x53\xf8\x96\x12\x98\x92\x62\xa2\xfb\x0e\x29\x74\xd7\x31\x94\xe6\xd5\x86\x89\x5e\x39\x0b\x9b\x69\x4f\x3d\xbe\x4d\x29\x39\x0b\x77\x65\xcb\x2f\xe6\xe0\xf4\x8e\xc9\xea\x11\xcc\x50\x47\x38\xeb\x74\x5d\xf5\xb6\x65\xc5\xce\x4c\xd9\x8c\x87\xa8\x19\x93\xc2\xa6\x0b\x29\xfa\x83\x78\x9a\xea\x13\x96\x19\x8d\xfc\x03\x96\x5a\xf7\xb5\x91\x34\x85\x19\x61\x05\xc8\x12\x21\x28\x78\x00\xea\x0c\x39\xcd\xf2\x3b\x6f\x1a\x6e\xf2\xe4\x55\x32\xaf\x70\x19\xb5\xfa\xde\xc6\x3a\x15\x90\x26\x00\x98\x10\x3d\x11\x93\xe2\xd4\x3b\x1b\xa9\x8c\x6a\x2a\xdf\x81\xc7\x22\x52\x58\x87\xc0\x08\x02\x60\x5c\xc2\x8c\xd7\xac\x08\x3c\x07\x95\xed\xbd\x40\x4f\xd6\x4f\x43\xb2\x74\xae\x6f\xcf\xee\x9b\x94\x48\x0a\x1e\x3f\x97\xfd\xee\x2c\xbd\x19\xf2\x93\x9a\x89\x92\xcc\x64\xe4\x0b\x5f\xf3\x71\x45\x74\x46\x72\xdf\xf6\x9d\x05\xa0\x7b\x88\x6c\x42\xab\x6b\xa6\x3e\x4a\x0e\x01\x0a\xfc\xe9\xfd\x9c\xc0\x34\x85\x45\x4d\x25\x59\x52\x34\x03\x87\x89\xc6\xee\x30\xe6\x55\xf6\x5d\xe1\xdb\x12\x68\xe5\x86\xf4\xea\x0d\x3d\xad\x67\x86\xf7\x27\xdb\x0b\x8c\x76\xa2\x6a\x95\x4e\xe0\xe6\xb6\xfd\x3a\x1f\x7a\x6f\x1c\x7f\x02\x4f\x4e\xc2\xaf\x8f\xba\x97\x32\x46\x98\xff\x26\xc5\x33\x35\x6f\xd3\x42\x3e\xc8\x44\x72\xbd\x72\x9e\x09\x8c\xe2\x1e\xb9\xc8\x2b\x4e\xe9\x35\xff\x1f\x11\x64\x4a\x31\x6a\x90\xe4\x42\x4f\x41\xd4\x53\x68\xb0\x48\x96\x5c\x10\x33\xd5\x25\x92\x2f\x61\xb4\x5d\x29\x51\x57\xf8\x18\xde\xfa\x8b\x73\x8f\xd2\x5f\xc2\x1b\x2e\xaf\xf7\x92\x7f\x36\xd9\x47\xd8\x86\x55\x0c\x4f\xc6\x4f\x6b\xd8\xba\xdc\x14\xb9\x02\x99\x3a\xf1\xb9\xbb\x95\x17\xfe\x98\xe0\x6e\x3a\x7b\x49\x9a\x80\x2c\xa3\xfd\xba\xdc\x76\x7f\xec\xfa\x7f\x8f\xc8\x1c\xef\xf0\xf9\xf1\x21\xbe\xd4\xfe\x3c\xf5\x61\x78\xeb\xd0\x29\x97\x92\x2f\xf6\x72\xe8\x0f\x43\x52\xfc\xe4\x6a\xfc\xa3\xc3\x31\x68\xdf\x80\xef\x3b\x78\x19\xf6\xae\xe3\xe3\x34\x85\x0f\x8c\x48\xf8\x8f\x7b\x23\x99\xc9\xac\x9d\xe7\x9b\xab\x54\x75\x68\x74\x81\x98\xa6\xe6\xff\x2f\x38\x27\x42\x62\x05\xa2\xe4\x95\xcc\x6b\x09\xe7\xd7\x5f\x3e\x8e\xbe\xfe\xf7\xc3\xfb\xeb\xd1\x67\x88\xb8\xbe\x9f\xcd\x68\xdc\xa3\x3c\xaf\x30\x93\xa8\x5b\xbb\xb9\x34\x11\x79\x85\x26\x7f\x2e\xae\x3e\xf5\xb6\x7f\xae\x70\x85\x4c\xc2\xb7\xcf\x70\x71\xf5\xdb\xa5\xbe\x62\x79\x77\x79\xfd\xee\x4b\xff\x8a\xe5\x55\x54\xf0\xbc\x5e\x20\x93\xfa\x4e\x25\x98\xd2\xba\x0a\xc6\x10\xb4\xae\x49\x02\x77\x24\x50\x9c\xfb\x69\xd6\x21\xf0\xdc\xab\xb8\x33\x43\x57\xea\x1d\x3e\x16\xfc\x9e\x1d\x2e\x58\x01\x5c\x2f\x24\xf7\x25\xc9\xf5\x18\xf0\x2f\x5f\x4b\x37\x7b\x96\xc6\x2f\x17\xe6\x32\xd9\x37\x44\x19\xe1\xde\x19\x6b\xbd\x4b\xf0\xcf\xff\xdc\x39\x0a\x7e\xfb\xec\x1b\xc1\x87\x94\xeb\x6d\x34\xc7\x08\xf0\x55\x42\x38\x03\x4a\x12\xb3\x21\xec\xb7\x5b\xa5\xae\x59\x6c\x06\xa6\x33\x3d\x9b\x29\xc8\x90\x99\x6d\xf0\x83\xc3\x93\xa5\x24\x22\x0a\x4f\x66\xa4\x12\xf2\x38\x2f\x09\x2d\xc2\x67\xa7\x27\xcb\x59\x6d\x7f\xd9\xd0\x63\x18\xe8\x69\x70\x90\xc9\xd6\x2b\xda\x7f\x51\x9c\x64\x45\x71\xae\x4e\x02\xd1\x8e\x43\x97\x43\x59\xe1\x82\xaf\x70\x6f\xaa\x6e\x3f\x6f\xc9\xff\x53\x26\xb0\x16\x66\x24\x2f\x38\x9c\x40\x2d\x4c\xfe\xd3\x4c\x48\x58\x19\xd1\x80\x14\x55\x12\xf9\xb4\x5d\x1f\x06\xde\x7f\x78\x27\xf5\x96\x22\xaa\x94\xf8\x24\x35\x07\x0f\x8b\x4e\x4a\x80\x30\xe8\xc0\xf3\x0f\x40\xf9\x65\x58\xde\xe9\xd6\xad\xb6\xf6\xac\xe1\x0f\xb8\xe1\xa9\x1c\x6f\x09\x38\x43\x20\x62\x1b\x0a\xce\xfa\x17\xbb\xe0\xc9\x1b\xb5\x79\x9f\xb4\xf1\x29\xd9\x91\xf7\xe2\x7b\x84\x01\xde\x2a\xc5\xf6\xe1\x0f\xcd\x0f\x08\xaa\xe1\x02\xc3\x07\x09\x82\x4c\xa7\x94\xb0\x79\x83\xc4\x5d\xa9\xa6\x88\xfe\xca\x24\x35\xf2\x0f\x4d\x52\x65\xb5\x3a\xba\x4b\xde\x18\x3f\x5c\x91\xba\x47\xb5\x3d\x71\x36\x90\x06\xa6\xdc\x86\xfb\x79\x6c\x7d\x74\x58\xce\xff\xf4\xf3\xce\x9c\xd7\x53\x83\x4f\xd6\xcb\x5b\x91\x6d\xb1\xc6\x91\x4d\x5c\x32\x29\xab\x28\x98\x92\x22\xe8\x5e\xb0\xaf\xbd\x03\x44\x9a\xc2\x95\x1d\x65\x20\x2f\x33\x36\x47\x28\x38\x98\x53\xda\xe0\x94\xd1\x8c\x14\x07\xce\x18\x69\xea\xfb\xdd\xc8\x61\xe8\x5c\x97\x3c\x75\xcf\x9e\x9e\x1f\x27\x8d\xd6\x27\xfa\x68\x6c\x22\x22\xb3\x6a\x8e\x32\xd1\xbf\xc7\x75\xcc\xdf\x78\x4b\xff\xaa\xf6\xec\xf6\xb5\x3b\x32\x74\x6d\x5f\xf0\x5a\x60\x77\xc6\x6a\x02\x46\xc9\x1e\x13\xde\xf3\x61\xf6\xe7\x67\x87\x85\xab\xbe\x0f\xd2\x7b\xcd\x8a\x39\x25\xf9\xdd\x0b\xad\x68\x63\xaf\xa7\x90\x17\x84\xda\xad\xee\x69\xa0\x75\x63\x70\x89\xf7\xfa\x2f\x48\xc0\xfc\x01\xcd\xff\x03\x00\x00\xff\xff\x53\xb0\xb5\x34\x56\x23\x00\x00")
+var _assetsPublicJsBitbarJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x6f\xdb\x38\x12\x7f\xcf\xa7\x98\xd3\x15\x95\x84\x38\x52\x17\x7b\x0f\x77\x49\x9d\xc3\x5e\xd2\xee\x15\x68\x93\xa2\x4d\x6f\x1f\x82\x3c\xc8\xd2\xd8\xe2\x86\x26\x0d\x91\x72\xe2\x06\xfe\xee\x07\x92\x92\x4c\x49\x94\xff\xa4\x08\x0a\x1c\xce\x0f\xad\x2d\x72\xfe\xff\x66\x38\x43\x25\x8e\xe1\xdb\xa7\x4b\x10\x72\x45\x11\xfe\x79\x54\xfd\x0c\xbe\x31\xb2\xc4\x42\x24\x14\x3e\xf1\xac\xa4\x08\x97\x38\x25\x8c\x48\xc2\x59\x08\x53\x5e\xc0\x84\xc8\x49\x52\x1c\x9d\x1d\x05\xd3\x92\xa5\xea\x79\x50\x70\x2e\x47\x8a\x3c\x84\xa7\x23\x00\x00\x32\x85\x40\xae\x16\xc8\xa7\x90\x29\x72\x84\xf1\x78\x0c\x7e\x4d\xe0\xc3\xeb\xd7\xd5\x42\x94\xcc\xb3\xb0\xfa\x1e\xdc\xde\x19\x2e\x9a\x07\x52\x81\x36\xa3\xb9\x51\x47\x33\xe2\x93\x3f\x31\x95\x9a\x8d\x79\x1c\xe1\xe3\x82\x17\x52\x84\x9d\xdf\x30\x56\x0c\x03\x8b\xa3\xd2\x35\x32\x36\x34\x8b\xeb\x30\x90\x39\x11\x23\xa8\x15\x34\xcf\xe1\xe9\x48\xd3\x35\x4f\x89\x78\x5f\x9b\x5c\x3f\xbb\xe1\x17\x39\xa6\xf7\xb5\xe1\xea\xb3\x4c\x0a\x98\xa1\xbc\x59\x2d\x10\xc6\xf0\xb4\x3e\x6b\x56\x0a\x94\x65\xc1\xa0\x43\xab\xac\xa8\xf6\x47\x92\x7f\x95\x05\x61\xb3\x28\x4d\x28\xed\x0b\xd1\xc6\xdf\x1a\xeb\xa1\xd6\xe5\xce\x37\x12\xd6\x1d\x6d\x8d\x91\x57\xf8\x10\x10\x26\x64\xc2\x52\xbc\x5e\xa8\x05\xd1\x18\xa6\x43\xc5\x88\xfc\x83\xc8\x3c\xb8\xbd\x0b\x5b\x26\x34\x3e\xda\x58\xa6\x3e\x39\xc9\xf0\xb4\x11\x12\x84\x9d\x65\xf5\x79\x15\xf8\x7f\xc5\xc7\x64\xbe\xa0\xf8\x89\x67\x09\xf5\xc3\x68\xae\xfe\x0f\x7c\x45\xec\x87\x67\x2d\x8a\xf5\xa8\xf5\x33\x8e\xe1\x92\x88\x05\x4d\x56\xb5\x06\x0f\x44\xe6\x0a\x21\x49\x49\x25\x10\x89\x73\xd1\x22\x10\x39\x7f\xb0\x14\xa2\xc9\x04\xe9\x08\x52\xce\x24\x3e\x4a\x97\x7a\x29\x67\x82\x53\x8c\x28\x9f\x05\x5e\x25\xe3\x04\x7e\xbf\x86\x13\xd0\xc4\x63\x0f\x8e\xcd\xb7\x8e\xa6\x0d\xb2\x73\x22\x22\xad\x48\x44\x91\xcd\x64\x0e\xe3\x31\xbc\x71\x89\xea\x89\x63\xbc\xb6\x4a\xd1\x83\x40\xe9\x39\x84\x6c\xb0\xd2\x5b\x5a\x1b\x14\xbb\x45\x69\xc5\x94\x3f\x74\x40\x37\x6a\x8e\xa0\xe3\x95\x3e\xdb\x67\x84\x64\x46\x96\xc8\x06\x02\xa2\x14\xb0\x82\xe2\xd6\xc2\x61\x85\x72\xaf\xde\xa5\x5c\xca\x4a\x4a\x43\x78\x82\xea\x01\x78\x5e\x47\xcf\x9e\x7b\xed\x68\x2a\x15\xe0\x1e\x57\xc2\x19\x57\xa7\xe4\x4a\xb1\x48\x20\xc5\x54\x62\x66\x29\x31\x14\xda\xce\x7e\xb8\xbd\xeb\x87\xb3\xaf\xb4\x0e\x4d\x45\x0d\xe3\x9a\xcf\xc0\x36\xed\x3c\x18\x57\x9e\xee\x6d\x8a\x63\x05\x23\x20\x6c\x51\x4a\x58\x26\xb4\x44\x13\x1e\x6d\xa9\x33\x37\x8d\x97\x4e\x34\x85\x1f\x46\xcb\x84\x06\x43\x70\x37\x88\xc2\xa4\x48\xf3\x60\xd0\x75\x16\x3e\x74\x9e\x43\xc2\x32\x98\xf2\xb4\x14\xa0\x8a\xa6\x12\xb3\x4f\x8d\xe0\x2c\xf0\x15\x76\x58\x34\x11\xa6\x60\xf8\xa3\xed\x85\x66\xc0\x20\x2d\x3a\x70\x58\xb3\x76\x3c\x1b\x2c\x56\x6e\x71\xf7\xb8\x9a\xf0\xa4\xc8\x4e\x41\x16\x25\xee\x94\xe0\xc8\x24\x0e\xc6\x9f\x20\xb1\x98\xb7\x13\x47\x3f\xb7\xd2\x46\x0e\x17\x30\xa9\xc9\x61\xac\x4e\x8e\xaf\x9a\xee\x23\x7f\xc0\x42\x93\x38\x42\x64\x67\x89\xdf\x64\x49\xa5\xc8\x49\xcd\xcb\xf3\xe1\xd8\x7c\x3f\x06\xdf\xf3\x43\x67\xa8\x29\x4a\x30\x27\x90\x02\xe5\x2d\xf8\xef\x93\x25\x2f\x88\x44\xb8\xe0\x94\x17\xfe\x08\xfc\xdf\x39\x9f\x51\x84\x8b\xbc\xe0\x73\xf4\x47\x00\xfe\xc7\xa4\x64\x69\x5e\x3f\x81\xf5\x9d\xbb\xb0\x3e\x4a\xf8\x8b\x49\x39\x75\x28\x56\x3f\x3d\x6f\x28\xf6\x1a\x9d\x05\xb2\x0c\x8b\x2f\x28\x4a\x2a\x45\x30\x2d\xbf\x7f\x5f\x09\x5e\xc8\x68\xc6\x03\x65\xca\xc8\xce\xa2\x11\x3c\xe9\x92\x70\x0a\xb7\xbe\x86\xb3\x7f\x07\xeb\xd0\x85\x94\x9d\x65\xd6\x88\xfd\x8d\x52\x27\xd0\x76\x80\xc0\x10\x43\x42\xa9\xa3\x7e\x36\x9c\x77\x1c\xb3\x56\xda\x25\xb4\x9f\xe9\xea\x0c\xcf\xe5\x5c\x15\x4e\xdf\xef\xad\xaa\x4e\x2e\x50\x5b\x08\x8c\xe1\xcd\x19\x10\x78\x6b\x3b\xaa\x3a\xd8\xce\x80\x1c\x1f\x6f\x3b\xd8\x24\x14\xda\xf1\x30\xb6\xa9\x6f\x49\x3f\xbe\x50\xc5\x98\x6c\x3d\x2c\xd5\x47\x2b\x7d\x3c\xb6\xdd\xfc\x41\xe2\x3c\x30\x92\x22\x92\x8d\x2a\xa1\x51\x75\x9e\x78\x49\x2a\xc9\x12\x87\x4e\xd2\xad\xb1\x7c\x9e\xc0\x41\x51\x7b\xd4\x7e\xab\x60\x19\xae\xc2\x0f\x23\xa5\x42\xa0\xfe\xd9\x59\x3f\x2a\xe8\x54\xa4\x0e\xe0\x54\x99\x60\x81\xa7\xda\xbb\xb3\x17\xaa\x42\x99\xf2\x92\xa9\x80\xaa\xe3\xb2\x22\xad\xe0\xe0\xb0\xfa\x70\x94\xb5\x59\x1e\x82\xb0\x8a\xf2\x45\xd1\xc5\x27\x7f\xea\x80\x6f\xea\x48\x4e\x66\x39\x25\xb3\x5c\x56\x5b\x6e\xdf\xdc\x85\x2f\x8e\xb9\xbd\xd5\xf8\x59\x48\xdc\xa8\x6c\xb7\x79\xd9\xa6\xc7\xa3\x89\x10\x57\xc9\x1c\x5d\xb1\xa8\xe6\x20\xff\x2d\x25\x30\x21\xd9\x58\x9f\x3b\x24\xd3\xa7\x8e\xa1\x34\x8f\x1a\x26\x7a\xe5\xdc\xaf\xfb\x37\xf5\xf3\x6d\x4c\xc9\xb9\xbf\x55\x47\xdd\x07\xb4\xd4\x0b\xfb\xba\x28\x74\x36\x08\x7b\x15\xcd\x0a\x5c\x04\xad\x13\xa3\x21\x57\xa6\xd4\xaa\x63\x44\x74\x77\x48\xb2\x33\x67\x57\xa1\xb0\x58\xd7\x8c\x03\x47\x04\x92\xe9\xcc\xd3\xee\xf0\x80\x71\x09\x53\x5e\xb2\xcc\x73\x34\xed\x9b\x19\xb9\x27\xeb\x97\x21\x59\x3a\x4b\x36\x73\x6c\x03\x26\xd3\x35\x85\xdb\x52\xa7\xb3\x37\xb0\xbb\xd8\xd1\x06\x95\xcf\x4b\x88\xee\x98\x64\xfa\x47\x35\x06\x4f\x92\xf4\x5e\x57\x12\x3d\x32\x19\xdf\x0c\x08\x39\xec\x1c\x8f\x63\x98\x97\x54\x92\x05\x45\x73\x0c\x1b\x4f\xef\x0e\x51\x5a\x24\xdf\x57\x40\xb2\x8a\x40\x2b\x37\xa4\xd7\xae\x56\xe0\x37\x33\xac\xbf\x63\xb2\x58\x81\x19\x24\x08\x67\x9d\xbe\x50\x3d\x6d\x03\x79\x57\x2d\x6f\x46\x12\xd4\x8c\x15\x5a\x07\x55\x8c\x63\x3d\xd5\x9b\xe6\xdd\x3d\x02\xa8\x75\x57\xa3\x13\xc7\x30\x25\x2c\x03\x99\x23\x78\x19\xf7\x9a\x80\xfd\x3f\xcf\x86\xf2\x2c\xe3\x5b\x93\xcc\x4e\xaa\x66\xb0\x8c\x4a\x26\x72\x32\x95\xc1\x10\xf2\xa1\x95\x9e\x19\x7f\xd9\xdc\xfc\x1f\xcc\xca\xd6\x6f\x86\x0f\xa7\x9b\xeb\xb3\x76\xca\x6a\x95\x4e\xe1\xf6\xae\xfd\x38\x1d\x7a\x6e\x42\x70\x0a\x4f\x56\xea\xaf\x8f\xba\x57\x82\x46\x98\xfb\x1e\xcf\x31\xe1\x6d\x12\x44\x3e\xca\x48\x72\xbd\x72\x91\x08\x0c\xc2\x1e\xb9\x48\x0b\x4e\xe9\x0d\xff\x0f\x11\x64\x42\x31\xa8\x31\x65\x83\x50\x81\xd5\x51\x72\x30\x8b\x16\x5c\x10\x33\x81\x44\x92\x2f\xe0\x78\xb3\x92\xa3\xee\x46\x42\x78\xeb\x6e\x24\x7a\x94\xee\x76\xa3\xe6\xf2\x7a\x2f\xf9\xe7\xe3\x7d\x84\x35\xac\x42\x78\x32\x7e\x5a\xc3\xc6\xe5\xa6\xdc\x65\xc8\x80\x33\xb0\x77\x2b\x2f\xfc\x98\xe0\x6e\x62\x3b\x49\xea\x80\x2c\x82\xfd\x3a\xb2\xcd\xfe\xd0\xf6\xff\x1e\x91\x39\xd9\xe1\xf3\x93\x43\x7c\xa9\xfd\x79\xe6\xc2\xf0\xc6\xa1\x13\x2e\x25\x9f\xef\xe5\xd0\x17\x43\x52\xf8\x64\x6b\xfc\xd2\xe1\x18\xb4\x6f\xc0\xf7\x1d\xbc\x0c\x7b\xd7\xf2\x71\x1c\xc3\x07\x46\x24\xfc\xcb\xbe\x0f\x4f\x64\xd2\xce\xf3\xe6\x22\xff\x1e\x57\xad\x59\x2f\x8e\xcd\xff\x5f\x70\x46\x84\xc4\x02\x44\xce\x0b\x99\x96\x12\x2e\x6e\xbe\x7c\x3c\xfe\xfa\xef\x0f\xef\x6f\x8e\x3f\x43\xc0\xf5\xdb\x81\x84\x86\x3d\xca\x8b\x02\x13\x89\xfa\x90\x37\x17\x7c\x22\x2d\xd0\xe4\xcf\xe5\xf5\xa7\xde\xf6\xcf\x05\x2e\x91\x49\xf8\xf6\x19\x2e\xaf\xff\xb8\xd2\xd7\x81\xef\xae\x6e\xde\x7d\xe9\x5f\x07\xbe\x0a\x32\x9e\x96\x73\x64\x52\xdf\xff\x79\x13\x5a\x16\xde\x08\xbc\xd6\x95\x9e\x67\x37\x07\x8a\x73\x3f\xcd\x3a\x04\x8e\x3b\x40\xbb\x7b\xe8\x4a\xbd\xc7\x55\xc6\x1f\xd8\xe1\x82\x15\xc0\xf5\x42\xf4\x90\x93\x54\x37\x04\xff\x70\x1d\xee\x66\xcf\xc2\xf8\xe5\xd2\xbc\xca\x70\xb5\x53\x46\xb8\xb3\xdb\x5a\xef\x12\xfc\xeb\xdf\x77\x36\x85\xdf\x3e\xbb\xc6\xc5\x21\xe5\x7a\x1b\xcd\xc8\x0b\xae\x4a\x08\xe7\x40\x49\x64\x36\xf8\xfd\xe3\x56\xa9\x6b\x16\xeb\xd6\xe9\x5c\x77\x69\x0a\x32\x64\x5a\x1d\xf0\x83\x6d\x54\x45\x49\x44\xe0\x9f\x4e\x49\x21\xe4\x49\x9a\x13\x9a\xf9\x5b\xfb\xa8\x8a\xb3\xda\xfe\xbc\xa6\xc7\x30\xd0\x7d\xe1\x20\x93\x8d\x57\xb4\xff\x82\x30\x4a\xb2\xec\x42\x4d\xad\xc1\x8e\x0b\x02\x8b\xb2\xc0\x39\x5f\xe2\xde\x54\x15\x46\x0c\xc0\x3b\xc2\xa5\x2c\x02\x6f\x42\x32\x2f\x0c\xcf\xa0\x5b\xfd\xec\x4f\xb7\x29\x68\xf1\xd9\xff\x4a\x61\x9b\x0f\x5b\xc8\x93\x3c\xe3\x70\x0a\xa5\x30\x55\x84\x26\x42\xc2\xd2\xc8\x06\xa4\xa8\x52\xd1\x65\xf3\xfa\xb0\x14\xf8\x9b\xb3\xf3\x6f\x29\xa2\x0a\x92\x4b\x52\x3d\xc8\x54\x18\xa7\x04\x08\x83\x0e\xc8\x7f\x20\x21\x9e\x97\x11\x3b\xdd\xba\xd1\xb6\x9a\x5d\xdc\x91\x33\x3c\x95\xe3\x2b\x02\xce\x10\x88\xd8\x84\x82\xb3\xfe\xab\x0c\x70\x64\x9f\xda\xbc\x4f\xf2\xb9\x94\xec\xc8\x7b\xf6\xcd\xd9\x00\x6f\x95\xa8\xfb\xf0\x87\xfa\x95\x99\x3a\xb6\x81\xe1\xa3\x04\x41\x26\x13\x4a\xd8\xac\x46\xe2\xae\x84\x55\x44\x3f\x2d\xd5\x6b\xe1\x3f\x9a\xea\x86\xcf\xa1\x13\x9b\x72\x9d\x2c\x56\x20\x79\xed\xc1\xe1\xe2\xd8\x9d\x1a\xf7\x04\xeb\x40\x2e\x99\xca\xef\xef\xe7\xf6\xf5\xd1\x61\x85\xe3\x97\x5f\x77\x16\x0e\xdd\xc0\xb8\x64\x3d\xff\x54\xac\xc2\x6b\x1c\x59\xc7\xa5\x15\xd8\x01\x2b\xec\x5e\x26\x8e\xe1\xba\xea\xaa\x20\xcd\x13\x36\x43\xc8\x38\x98\x81\x71\xb0\xe1\xa9\xbb\x9b\x03\xdb\x9d\x38\x76\xbd\x6e\xb5\x18\x5a\x77\x38\x4f\xdd\x31\xd8\xf1\x96\xde\x68\x7d\xaa\xa7\x74\x13\x11\x99\x14\x33\x94\x91\x7e\x8d\xdd\x31\xbf\xf1\x96\x7e\x19\xbd\x75\xfb\xda\xee\x5e\xba\xb6\xcf\x79\x29\xb0\xdb\xee\xd5\x01\xa3\x64\x8f\x66\x73\x7b\x98\xdd\x49\xde\x61\x61\xab\xef\x82\xf4\x5e\x6d\x6b\x4a\x49\x7a\xff\x4c\x2b\xda\xd8\xeb\x29\xe4\x04\xa1\x76\xab\x3d\x98\xb4\x2e\x2f\xae\xf0\x41\xff\x29\x15\x98\xbf\x24\xfb\x6f\x00\x00\x00\xff\xff\xe6\xbc\x72\x98\x5f\x26\x00\x00")
func assetsPublicJsBitbarJsBytes() ([]byte, error) {
return bindataRead(
@@ -603,7 +624,7 @@ func assetsPublicJsBitbarJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/js/bitbar.js", size: 9046, mode: os.FileMode(420), modTime: time.Unix(1515452010, 0)}
+ info := bindataFileInfo{name: "assets/public/js/bitbar.js", size: 9823, mode: os.FileMode(420), modTime: time.Unix(1515799140, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -623,12 +644,12 @@ func assetsPublicJsBitfanJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/js/bitfan.js", size: 5138, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/public/js/bitfan.js", size: 5138, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _assetsPublicJsPlaygroundJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\x5d\x6f\xdb\xba\x92\xef\xf9\x15\x73\xd4\x02\x92\xd6\x8e\x9c\x1e\xec\x3d\x7b\xe1\xae\x17\xe8\x47\xda\x66\x4f\x9a\x64\x1b\xf7\x9e\x87\xa2\x28\x68\x69\x6c\xf3\x54\x26\x75\x49\x2a\x8e\xd1\xfa\xbf\x2f\xf8\x21\x89\x92\x6c\xc7\xcd\xf6\x5c\xac\x5e\x62\x91\xc3\xf9\x9e\xe1\x0c\xa9\xdc\x11\x01\x6b\x9c\x49\x9e\x7e\x45\x75\xfd\x71\xfa\xfc\xa4\x35\x72\x71\x65\x07\x3e\x7e\xbc\x78\x6d\x7f\x7d\xc5\xcd\x8d\x40\x29\xa7\x74\x85\xbc\x54\x17\x19\x4c\xe0\xcc\x4e\x61\x46\x15\x17\x17\xac\x28\x15\xf4\x46\x3e\x90\x75\x6b\xf0\x0d\xcd\x15\x8a\xd6\xd0\x75\xa9\x8a\x52\xf5\x47\xec\xd2\x93\x93\x93\x79\xc9\x52\x45\x39\x83\x9b\xc5\x15\xae\xcf\x0d\x48\xc4\xc8\x0a\x87\x73\x2a\xa4\xba\xa4\x0c\xaf\xca\xd5\x0c\xc5\x50\x6e\x98\x22\xf7\x57\x7a\x4a\x2d\x71\x85\xe6\x17\x14\x39\xd9\xfc\x41\xd5\xf2\x77\x27\x43\x0c\xdf\x4e\x00\x00\x34\xc1\x62\x61\xf1\xc1\x04\x48\x8a\x89\xa6\x1f\x05\x12\x0d\xbd\xd3\x60\xa0\xa9\x0c\x82\xd3\x94\x33\x85\x4c\x05\xf1\x73\xb3\xb0\x5a\x94\x48\x54\x2f\x4a\xc5\x6f\x53\xc1\xf3\xfc\xdc\x49\xad\xf8\x3f\x28\xae\x23\x25\x4a\xdc\x01\x3f\xd5\x7c\x45\x01\x49\x71\x64\x58\x1c\x05\x83\x9a\xd5\x2e\xf8\x02\xd5\x2d\x4a\x49\x39\x8b\x62\xbd\xf6\x3d\xcf\xdc\xd2\x15\xcf\xf4\xca\x46\x5e\xb7\x54\x8b\xa4\xf0\x5e\x11\x81\x04\x26\xf0\x34\x0a\xab\xb7\x4f\x5a\x94\x49\x2d\x5a\x68\x45\x0b\x83\xcf\x61\x9c\x2c\x69\x86\xd1\x43\xc4\xff\x41\xf2\x12\xa3\x0a\x5d\x72\x47\xf2\x28\x8e\x9f\x9f\x1c\x58\xc4\x59\x14\xa6\x4b\xc2\x16\x18\x0e\xa1\x32\x62\x54\x69\x5f\x3f\x2d\x6c\xbb\x91\x2c\x2a\xca\xb1\x63\x70\x3f\xbd\x34\x47\x22\x5e\x30\xc6\x15\xd1\x94\x64\xe4\xad\xa0\x73\x88\xba\x7e\x00\x93\x09\x18\x2b\x79\x1c\xe9\xc7\xe0\x71\x8e\x1e\xf5\x1c\x3f\x7e\x0e\xa3\x11\x64\x1c\x25\x0b\x15\xac\x88\xd2\xfe\x4c\xe7\x40\x55\x28\xe1\xac\x85\x68\x57\xd0\x68\x17\x70\xa8\x35\x3f\x43\xf8\xdb\xd9\x99\xc7\xe7\xd6\xfc\xda\xf6\x14\x9b\xf2\xd5\x8a\xb0\x4c\x26\x24\xcb\x5e\xd9\xdf\x51\xc3\xb5\xb6\xe5\x18\xc2\x77\x98\x17\xe1\xb0\x1e\x9d\x51\x96\xfd\x8e\x9b\x71\x47\xbc\x35\x65\x63\x08\x5f\x29\x91\x9f\xde\x2e\xe9\x5c\x9d\xde\x78\x6b\xf4\xb3\x22\xa9\x06\xb0\x54\xf6\xc0\x48\x64\x19\x8a\x31\x84\x36\x62\xbf\xa7\x39\x0d\x5b\x00\xdb\x06\x1e\xef\x31\x1d\x37\x0e\x80\xec\x6e\x08\x44\x2c\xe4\x10\x04\xfe\xb3\x44\xa9\x7a\x06\xe0\x4c\xf2\x1c\x93\x9c\x2f\x22\x4f\x03\x4c\x11\xca\x50\x24\x34\x8b\xe1\xf9\xde\x05\x41\x5a\x0a\xc9\x05\x10\x05\x82\xaf\x21\x18\xb4\xbc\xe5\x95\x99\xbc\xe1\x92\x5a\x67\x4c\x34\xcc\x00\x82\x21\xa4\x3c\x2f\x57\x0c\xc6\x10\x0c\x0e\x2e\xb0\x70\x71\x9b\x81\xd1\x08\x4c\x8e\xb8\x57\x30\xa9\xd2\xdf\xeb\x0a\xe7\x50\x33\x32\x04\x89\xb9\x0d\xbe\xd6\x4a\x1d\xb1\xcd\xd2\xb6\x1e\xf4\x43\x52\xb4\xcc\x8c\x6b\x39\xda\x7a\x06\xe7\x2a\x8d\xd5\xd5\x8c\x88\x44\x2e\xf9\x3a\x0a\x32\x9e\xc2\xdc\xa6\x5c\x23\xa2\xa1\x13\x9f\x3c\xe8\x6e\x12\xd5\x75\x61\x04\x0e\x3a\x39\x36\x18\x42\x67\x24\x36\x4b\x05\xaa\x52\xb0\x86\xc7\xad\x97\xb7\x67\x54\xcd\x09\xbb\x11\x3c\x45\x29\xb9\xb8\x5d\xf2\xf5\x6b\x9e\x46\x69\x6c\xc5\x6d\x59\x6f\x37\x2c\xf0\x39\x04\x30\x00\x48\x13\xab\x46\xcc\x3e\x3d\xfb\x6c\x29\x8f\x46\x30\xbd\x7e\x7d\x3d\x86\x05\x2a\x30\x02\x0b\xbe\x82\x17\x37\x17\x40\x58\x06\x19\x95\x3a\xce\x80\xaa\x93\xed\x5e\x8e\x2e\xa9\x54\x85\xcd\x19\xc7\x30\xd5\x80\x57\x7c\x3d\xc4\x16\x77\xe0\xbb\x58\x6b\x43\xd3\x55\x91\xe3\x0a\x99\x72\x86\x1c\x53\x85\xab\x31\x49\x15\xbd\xc3\x03\x12\x5c\x30\x89\x42\x4d\x71\x55\xe4\x44\xe1\x51\x52\xb4\x97\x40\xd4\x91\xe3\xec\xb3\x8e\x8b\xf8\x58\x09\x55\x85\xa7\x25\x22\x35\x34\x80\x32\x17\x14\x07\x24\x78\x8f\xac\xac\xf9\xfe\x8a\x1b\x09\x13\xf8\xd4\x0b\x87\x6f\x90\xf1\xf1\x1e\x87\x1a\x02\xcd\xc6\x10\x6a\xcf\xff\x92\xf1\x34\x1c\x42\x4e\x66\x98\x8f\x21\x10\x48\x32\x50\x4b\x34\xee\xa1\x05\x1a\xb4\x05\xdd\x0e\x8f\x23\xd4\x18\xde\xd1\xca\xa9\x54\x5f\x9c\x71\x3d\x7a\x7a\xb8\xb2\x79\x70\x34\xf6\xb6\x41\x1c\x05\xab\xc1\x2f\xf3\x32\xcf\x3d\x02\x4e\xaf\x7a\x14\x66\x79\x89\x85\xa0\x4c\xfd\x1c\x4a\x2b\xca\xfa\x84\xd6\x54\x2d\x21\xc3\x39\x29\x73\x25\x81\xb3\x7c\xd3\x23\xf6\xd9\x66\x44\x2f\xfd\xe8\xbd\x56\xef\x9f\x72\x18\x04\xc3\x34\xd6\x29\xe1\x69\x94\xf1\xb4\xd4\xee\x1d\x27\xda\x28\x9b\xa8\x57\x17\xe8\x9a\x13\x26\xb0\x28\x69\x56\x6d\xe0\x95\xb7\x3d\x71\x0f\xbc\xbc\x98\xbe\x7c\xf1\xc1\x0c\x3f\x4d\xc8\x9f\xe4\xde\xdb\x0b\xd5\xa6\xd0\x7b\xe1\xdb\xf3\xa9\xb7\x65\x65\x44\x91\xa9\x9e\x08\xfe\x94\x9c\x05\xcd\x44\x61\x55\xf2\x9a\x28\x32\x86\x39\xc9\x25\x36\x73\xa5\xc8\xc7\x10\x2e\x95\x2a\xc6\xa3\x51\x38\x98\x11\x89\x2f\x0a\xfa\x8e\x4b\x35\x08\x47\xa4\xa0\xa3\xbb\x5f\x47\x19\x4f\xe5\xa8\xa8\xf4\x2a\x3d\x92\xb2\x4c\xf5\xa0\xb7\xf1\x35\x60\xda\x3d\x65\x77\xd7\x9b\x73\x11\xb9\x52\x5b\x07\xcc\x03\xd0\xd5\xa3\x57\x18\x63\xdd\x2a\x5d\xc4\xb6\x32\x3e\x0c\x34\xb2\x9d\xcb\x74\x3d\xf4\x15\x37\x89\x54\x44\x28\x69\x2c\x15\x50\x5d\xb0\x07\x31\x7c\xff\x0e\xdd\x29\x6e\x2a\xf2\x20\xde\xc7\x85\x7e\xba\x5c\x38\xf2\x89\xc0\x22\x27\x29\x46\xc1\x97\x60\x08\x01\x04\x9d\xad\xb3\x7a\xb6\x3b\x47\x9d\x3b\xe9\x24\x28\x93\xa2\x94\xcb\xe8\x1b\xec\xe5\xc0\x7f\x76\x78\xbd\xce\x30\xc3\xe3\x56\xeb\x80\xf8\x8a\x9b\x23\xa1\x5d\xb0\x54\x0a\x38\x62\xd5\x36\x6e\x6f\xe2\xad\xb7\x66\x77\xf6\x6a\x28\x21\x74\x09\x50\xfb\x92\x35\xc8\xa1\xc2\x29\x30\x4b\x74\x6e\x56\x94\x2d\x1a\x77\x82\x2a\x02\x6d\x91\xdc\x35\x87\xdb\xc7\x4d\x28\xec\x2d\x4b\x4f\xaa\x88\xbc\x60\x54\xc1\x4b\x63\xa3\x6a\xe8\x92\x93\x0c\x74\x3c\xd9\x9d\x40\xc7\x89\xf6\xdf\x6a\xfa\x95\x40\xbd\x4b\x18\x5d\xd5\x83\x95\x95\x19\x55\x75\xd2\x88\x4f\xba\x61\xff\x04\xce\x5f\x5f\x4c\xaf\x3f\xdc\xd6\x09\xe1\xfa\xe3\xf4\xe6\xe3\x14\x5e\x5d\x5f\xbd\xb9\x78\xfb\xf1\xc3\x8b\xe9\xc5\xf5\x95\x99\xf3\xfb\x48\x98\xb4\x1a\x47\xe7\xcb\xba\xa7\x9b\xd3\x45\x29\x8c\x1a\x82\x21\xfc\x7d\x08\x41\xce\x17\x52\x11\xb9\x0c\x86\xc1\x8a\x33\xfe\x95\xd0\x60\x68\x3a\x84\x93\x1e\x56\xdd\x9d\xee\x46\x2c\xc8\x3a\x18\xc2\xb3\x21\xb8\x5c\x13\x60\x9a\xd3\x42\x62\x30\x34\x4a\x8d\x5b\x29\xed\xcd\xc5\xe5\xf4\xfc\xc3\x5e\x09\x5c\xbb\xdc\x21\x64\xe3\xbb\x27\xc1\x6f\xc3\x03\x02\x74\x71\xfe\x68\xab\xe6\xcb\x7e\xb8\x3c\xdc\x4f\x65\x81\xea\x12\xd9\x42\x2d\xa3\x18\x06\xf0\x1b\x0c\xe0\x99\xf3\xbe\xda\xb3\xb4\x4f\x5d\x1d\xb2\xa9\x3d\x67\xe8\x28\xc4\x64\xae\x9e\x3e\x7e\x3d\x4e\x1f\x06\xe3\xe3\xd4\xe1\x84\x3c\xa8\x8e\x67\x83\xbd\x64\x3c\x7d\x0c\x7e\x8d\x7f\x82\xaa\xf7\x41\xc6\x83\xa3\x8c\x32\x78\x16\xd7\xd6\xf0\x9d\xd4\x5a\xe4\xc3\x8b\x3f\xba\x5a\xdb\x11\x04\xd6\x14\x55\x0c\x1c\x0a\x81\x36\x9e\xbf\xce\x00\xbf\xfd\xa5\x9a\x85\xc1\xd1\x0e\xef\x69\x77\x97\x02\x8e\x6a\xf1\x75\xdf\x7d\x7e\x87\x4c\xfd\x58\x9f\x7f\xb8\xc3\xff\x57\xf6\xf6\x4f\xa3\xe0\x89\xdd\x97\x4f\x75\xf3\xb3\x10\xbc\x64\xd9\xe9\x9c\x8b\x15\xcc\x4a\xa5\x38\xb3\x07\x55\x9e\xa0\x9f\x83\x38\x49\x73\x9a\x7e\x8d\x76\x9e\x93\x38\x1f\x6d\x19\x61\xbf\x2a\x47\x23\x5f\x9b\xde\x81\x89\x9b\xe8\xe8\xd2\x8d\x76\xd4\xf9\xae\xbd\xa6\xaf\xd1\x1d\x00\x7b\x95\xea\xc1\x6c\x5b\xab\x8e\x56\xad\x87\x81\xe4\x28\x54\x14\xbc\xbd\x0e\xaa\x23\x12\x37\xb9\xad\x5e\x3c\x95\x79\xfb\x2a\xcb\x9c\x02\xe5\x49\x9d\x87\xaf\x19\x18\xb3\xc8\x72\xb6\xa2\xca\x1e\xa3\x26\x49\x62\x2d\x06\x5e\x7a\x78\x1a\x85\x7b\x4c\x1a\xda\x48\xb6\x18\xfc\x48\xc6\x18\xbe\xc1\x68\x54\x4a\x04\xce\x74\x31\xfa\xe7\xff\x94\x28\x36\xf0\x2c\xf9\x8f\x41\x4b\x07\x49\x21\x50\x7b\xc1\x6b\xdb\x7b\x44\xe6\xf4\xcd\x8d\x59\xf6\x4c\x95\x61\x29\xe8\x42\xc7\x5f\xad\xb9\x89\xe2\x96\x1e\xfa\xe5\x8d\xd3\x49\x4f\x29\xbd\xe4\x07\xe7\xff\x38\xbf\x9a\xee\x85\xfb\x63\x89\x0c\x4a\x89\x02\x8c\xb3\x6a\xb9\x82\x5b\x64\x19\x90\x05\xa1\x2c\x70\xde\x0d\x53\x0d\xa6\x9d\xc1\xf4\xa3\x82\xac\xc1\xca\xa2\x38\x14\xb4\xc0\x9c\x32\x84\x52\xea\x8a\x8d\x2a\xd9\x9c\xc8\x83\xc9\xab\x27\x8f\x8f\x20\x93\x51\x35\x63\x3f\x64\x06\x70\xad\x82\x77\x33\x00\xbf\x4c\x80\x95\x79\x1e\x77\xb2\x4d\x03\x91\x68\xca\x91\x66\xb3\x3a\x6d\x6e\x36\x85\xb8\x3e\x38\xae\x9d\x1e\xba\xa1\x6c\x34\x99\xf2\x0c\xd3\xe6\xcc\x0c\xec\x6e\x60\xd5\x67\x0e\x74\x1a\xd9\x6b\xad\xb4\xc9\x19\x0c\xc1\xbe\xbd\xe4\x28\xd1\xad\x03\x35\x59\x7b\xaf\xf1\xdf\x5e\x5e\xbf\x7c\x71\x79\xd8\x37\x72\x24\x77\xa6\x12\x27\x95\x1c\x19\xe6\xa8\x10\xd2\x52\x08\x64\x2a\xdf\x80\x28\x19\x33\x20\xce\x13\x9c\x64\x6b\xca\x32\xbe\xb6\x92\xcc\x70\xce\x05\x96\x2c\xe7\x24\xdb\xb7\x37\xea\x9e\x50\x77\xbc\xd7\xb3\x3f\x31\xed\x1f\x2b\x86\xc6\xe3\xc2\x31\x04\xc1\x70\xc7\xc4\x17\xdd\x41\xef\x9a\xb5\x65\xe7\xae\x99\xb2\xa4\x99\x1e\xf7\xfc\x51\x77\x7f\xba\x95\x6f\x20\xb7\xde\x41\x65\xaf\x6b\x87\xaa\xdf\xb6\xb2\x26\x39\x4f\x4d\x19\x97\x2c\x05\xce\xdb\xd4\x5c\x83\xff\xfa\xfc\xf2\x7c\x7a\xde\xd9\xba\xdc\x45\x8d\x69\xf5\x21\x20\x45\x91\x53\x8b\x67\xa4\x0b\x91\xe7\xda\x8b\x84\x44\x35\x29\xd5\xfc\xf4\xef\x1d\x29\xea\x33\x02\x08\x35\x70\xd8\x9f\x1d\xc3\x7f\xdf\x5e\x5f\x25\x52\x09\xca\x16\x74\xbe\x89\x1a\x25\xc7\x9d\x2d\xb4\xd7\xfc\x0b\x94\x65\x6e\x52\xf6\x9e\xce\x6f\xeb\x95\xc2\xd0\x4d\x29\x8a\x2f\x16\x39\x02\x61\x1b\x50\x64\xb6\x33\x0a\xc0\x39\x4b\x48\x3e\x69\xb6\x4e\xed\x92\x49\xa0\xc8\xcc\x5c\xf2\x98\x44\xbc\xe4\x6b\x96\xcc\x64\xa2\xc8\xac\x1b\x0c\x1d\xa7\xef\xd7\xe5\x3d\xaf\xbe\xbc\x7e\x7b\x7b\xd8\xe5\x8d\xab\x6b\x4f\xc5\xcc\xf2\x9c\x72\xc6\xb4\x4b\x2a\x6e\xd2\x9f\x2e\xcf\xeb\xcc\x71\x52\xb9\x6e\x9d\x4a\x34\x01\x98\x00\xc3\x35\xfc\x81\xb3\x5b\x33\x16\x05\x6b\x39\x1e\x8d\xb4\x7b\x79\x07\x32\x30\x80\xa0\x3a\x92\xd1\x48\xab\xae\xb6\x85\x2a\xe1\x8c\x17\xc8\x60\xe2\x09\xae\x1d\xde\x17\xbe\xd5\x41\x1b\xfa\x63\x78\x65\x99\xd6\x59\x08\xa5\x22\xb3\x9c\xca\x25\x66\xbf\xd4\x27\x19\xdb\x93\x96\xd0\x44\x8b\x05\x2b\x94\x52\x4b\x9f\xf2\x15\x4a\x17\xee\xcd\x51\x74\x25\x6a\xce\x17\x0e\x50\xad\x8a\x1c\x26\xf0\x34\xa9\x0e\x52\x65\x14\x3c\x69\xa6\x4f\xab\xe1\x7d\x92\x55\xf4\x0e\x09\xa7\x29\x5e\xf2\xc5\xfb\x1a\xd4\xb8\x73\xa1\x43\xc2\x02\x27\xda\x73\x3a\xb7\x66\x2d\x77\x6d\x56\x27\xba\xc5\x4f\xaa\x44\xf5\x45\x67\x00\x98\x4c\x76\xa6\x00\xf8\xfe\x7d\x1f\x92\xea\x2f\x65\x19\xde\x5f\xcf\x23\x0d\x1e\xff\x57\xfb\x16\xad\x5f\x41\x86\x5a\x31\x32\x8c\x13\x52\x14\x7a\xab\x69\x6b\x31\x11\xa6\xd4\x8a\xfa\x27\x55\x78\x37\xf6\x88\xf7\xcf\x4a\x15\x5d\xe1\xad\x09\xee\x31\xac\xf8\x0a\x99\x8a\x3c\x5e\xa7\x74\x85\x71\xa2\xf7\x59\xa2\xa2\xf0\x72\x7a\x1b\xc6\x7d\x14\x46\x8d\xef\xa6\xef\x2f\xc7\x60\x2f\x67\xdf\xd1\xc5\x32\xa7\x8b\xa5\xba\x98\x9b\xcd\x38\xea\xaa\xd0\x5a\xa9\x8d\x69\x1b\x77\x4e\x65\x3c\x99\xa5\xb9\x6c\x9e\xf2\x22\x6a\x06\x3f\x9d\x7d\x76\xe3\xef\x50\xd3\xea\x17\xca\xed\x9c\x42\x98\x3d\x50\x02\x9e\xa6\xa5\x90\x7a\x07\x6c\x85\xa2\xb2\x0e\x6b\xaa\x49\x93\x80\x76\xba\x9c\x45\x71\xc8\xe1\x18\x57\x14\x13\x5b\x94\x7e\xab\x12\xf7\x9a\x08\xbd\xc9\x85\x43\x90\x8a\x6c\xaa\x53\x57\x73\x17\x3c\x86\xf0\x46\xf0\x59\x8e\x2b\xc8\x4a\xd4\x59\x42\xf2\x15\xc2\xb9\x26\x14\x36\x19\xb2\x2d\x4c\xc3\xb4\xc9\x2e\xf7\xa6\x5a\xc8\xb9\xac\xc2\xee\x01\x29\x0c\xe8\xcf\x96\xc2\x4b\x19\xaf\x34\xfe\xac\xc5\xbd\x5f\x38\xcf\xc5\xea\xd5\x92\x28\x9b\xa0\x03\x5b\xc7\x06\xc3\x0e\x33\x4d\x9d\x6f\xc3\xb4\x57\x14\xd7\xf3\x1a\x65\xba\x24\xea\x54\xcb\xab\x23\x44\x29\x11\x05\x9a\xe7\x60\x18\x2c\x69\x96\x21\x0b\xe2\xe7\x56\xae\x7a\x91\xce\x0b\x2e\x80\x74\x46\xa8\x0b\x86\xaa\xb1\xd0\x08\xbf\x68\x84\xe3\x1e\x7e\x53\xcd\x0d\xfb\xd0\x0e\x9d\xb7\xc0\x8d\x54\x6b\xea\x25\x8d\x35\x1b\xd3\xd8\x0a\xb2\xb3\xd9\x7a\x1c\xc6\x71\xbb\x76\xaf\x5e\x6e\x97\x5c\xa8\xb4\x54\xf5\xc1\x62\x86\x73\x5d\x50\x13\x58\x12\x96\xe5\x58\x1f\x52\x9a\x0a\x09\x73\x45\x60\x02\x7f\x3b\x3b\x7b\xee\x8f\xe7\x44\xaa\xdf\x71\x53\x54\x37\xf7\xf6\x4b\x17\x07\x50\xdf\x5e\xfd\x8e\x9b\x77\x16\xa7\xb3\x51\x05\xe1\xab\x4e\xe7\x4f\x67\xb2\xaf\xb8\xd1\xf9\x31\x5c\x84\x10\x7b\x10\x9d\x0e\xce\x7c\xbf\xb1\xa4\xb2\x43\x5f\xef\x80\xaf\x89\xc2\x4e\x33\xe3\x08\xf4\x16\x9c\xf6\x65\xf8\xcf\x89\x93\x37\x6e\x23\xe8\x75\x90\xad\x0d\xf0\xed\x35\xfc\x12\x74\x69\x9a\x9f\xf6\x72\x8b\xe4\x70\xaa\x79\x58\x63\x98\x81\x20\x6a\x89\x42\x47\x0b\x64\xa8\xf4\x2e\x4f\x40\x09\x5a\xe4\x78\x6a\xf8\xd8\x81\x85\x48\x20\x20\x31\xe5\x2c\x83\x8c\x97\xb3\x0a\x54\xb7\xb8\x12\x95\xa9\x11\x74\x52\x96\x8a\xac\x8a\xee\xfa\x1d\x7a\x3a\xeb\xb0\xba\x6d\xbf\xee\xb0\x6c\x17\x89\x8f\xa0\xe9\x99\xab\x1f\xa3\x11\x08\x5c\x50\xa9\x74\x49\xb6\xc4\xca\xab\xea\x48\xaa\x8e\xd6\x13\x92\xd9\xd6\xeb\x52\xc3\x32\x14\x51\xf8\x15\x37\x65\x11\x0e\x3d\xbf\x19\xda\x9c\xa1\xfd\xd7\x38\x71\xed\x5a\x7b\x36\x0e\xb3\x37\x3b\x83\x69\xbb\xfb\xef\xd0\xb4\xb6\x9d\xd5\x16\xcc\xd5\x29\xfe\xa5\xbc\x2d\xf3\xbc\x4f\xa1\x4c\xd7\xf4\x65\xc5\x33\xb4\x5f\x0e\x3d\x29\x88\x6b\xa5\x20\x61\xe4\xee\x54\x91\x99\x84\xc4\xde\x44\xd7\x99\xc5\x35\xa2\x55\xe7\x65\x12\x8d\xf7\x2d\x92\xc5\x79\x47\xf2\xd2\x22\xed\xf6\x68\xba\x44\x68\xe8\xfa\xa9\xa1\x59\x6d\x3b\xc1\x5d\xab\xab\x0e\xaf\xbd\xca\xb6\x29\x5d\x41\xdc\x9d\xd8\xa3\x25\x71\x58\x77\x89\xe2\x8e\xe3\xb5\x2c\x1e\xed\x2e\x5b\xf6\x76\xa0\xcb\x96\x1d\x7d\x3c\x5b\x0e\xeb\x2e\xb6\xdc\x75\x84\x66\xcb\xa3\x5d\xb1\x55\x63\xd8\xd3\x28\x1e\xd7\xd3\x85\x9e\x81\xc3\xb1\x6f\xee\x1e\x8c\x26\x5e\x83\xe8\x97\x1e\x84\x31\x67\x0d\x62\xde\x3c\x18\xdf\x00\xe1\xb8\x65\x8f\x3e\x94\x23\xe6\xbd\x79\x30\xbe\xce\xc2\x71\x4b\x85\x7d\x28\x87\xc9\x7b\x1b\x76\xb7\xf1\x2a\x65\xea\xd6\x00\xfd\x9e\xd0\x81\xec\xbb\xa2\xbe\xf9\xe8\x5f\x51\x3f\xb6\x75\x3d\xbe\x31\xdd\xdf\xe0\x1e\xd1\x79\xdb\x73\x87\x5b\x64\xd9\xb8\x75\xe8\xb0\x3d\x74\xe3\x2d\xed\xe5\x63\xef\xf2\xda\x53\x9a\xde\x67\x6a\xb0\x43\x40\x81\x43\xdf\xbd\xb0\xd4\xfe\x69\x0a\xc4\x0f\x7a\xcb\x88\xe2\xce\xe7\x50\x3a\x53\x56\xf8\x93\xb5\xe4\xa5\x82\x5f\x26\x10\x04\xbb\x6e\xb2\x19\xae\xbf\x94\x82\xc2\x04\x9a\x26\xb3\x5e\x4b\xea\x4e\xb3\x8d\xae\x7f\x9b\xed\x7f\x58\xdb\x6b\x5f\x1d\x8d\x1d\x97\xe0\xfe\xb2\x63\x5a\xd5\x43\xba\xf2\xea\x4f\x2a\x5b\x5d\xeb\xae\xeb\xf7\xfe\xd5\x7b\x87\x97\x63\x9a\x4b\xff\xe9\x5c\x94\xee\xf9\x96\xd4\x6b\x39\x61\xf7\x37\x01\x3b\xd2\x99\x20\xeb\xe6\x73\x5c\x73\xbe\x9f\x13\x29\xf7\x7a\x07\x34\xfd\xc2\x01\xf9\x1e\xee\x64\x3a\xca\xfe\x6b\x1a\x9b\xee\xb3\xe3\x3a\x9f\x33\x30\x5e\xb7\xef\x2b\x0a\x7f\x89\x15\xe2\x31\xfa\xd8\xdf\x13\x3d\x84\x6c\x7b\x30\xfa\x28\xfb\x99\xc1\x47\xd9\x01\x41\x2e\xae\x1e\x13\x7a\x17\x57\x3f\x1a\x79\xbd\x73\xef\x26\xf5\x26\xde\x76\xf8\xb0\x19\xbc\x93\xc0\x9f\xf0\xd9\x87\xce\x8a\x94\x2d\x82\x6e\x3a\xac\xb3\xa5\x43\x95\x08\x94\x05\x67\xd2\xb6\x55\x3f\xf8\x29\xc8\xf6\xc4\x3e\xad\x9a\xd2\xcf\xc5\x8e\xcf\xc7\xdd\x58\x98\x2f\x58\x1d\x4b\x0f\x26\x02\x81\x2b\x7e\x87\x2e\x17\x18\x15\x04\x8f\x5a\xea\xa5\x91\x6e\xb1\x6c\xd5\x66\x70\x4f\xef\xd5\xff\x4d\x36\xff\x8b\xfb\x03\x18\xaa\xf1\xa5\x52\x85\xab\x79\x4b\x91\xef\x58\x7f\x64\x92\xfc\x39\x8a\x69\x9d\x27\x3e\xfe\x04\x13\x5a\x47\x81\xbd\x5b\x8a\xf7\xd5\x09\x42\xa5\xf1\xf6\x11\xd9\x25\xde\x61\x3e\x86\x5f\xdb\xa3\xe6\xbb\xa3\x31\x7c\xdb\xc2\x49\x3f\xae\xe0\x5f\x7d\x78\xa8\x5b\xf6\x84\x69\x2f\x7e\xf0\xdc\x70\x34\xfa\xff\x73\x74\x78\x62\x23\x7b\x34\x82\x8f\x8a\xe6\xd2\xfc\x5a\xd8\xff\x3e\x79\xb9\x79\x43\x73\x3c\xbf\x57\xc8\xf4\x6e\xee\x52\x84\x34\xcd\xb0\xe9\x6c\x0a\xa2\x96\x30\xe7\x02\x08\x2c\xe8\x1d\x32\x5d\x82\x23\x60\xb5\xa0\x89\xa8\xdd\x08\x23\xbd\xde\x6f\x4a\x35\x52\xf3\x35\xad\xfd\xff\x1c\x81\xff\x2c\xa9\x70\xff\x04\x83\xf7\x6a\x54\xcd\x57\x4e\xe5\x72\x56\x35\x9c\x38\x32\x6f\xb8\xb8\x21\x6a\x69\xd1\x27\x7a\xb6\x1d\xdf\xf6\x6b\x53\x47\xb7\x69\xc4\xff\x3d\xda\xd1\x60\xbf\x27\x6a\x99\xcc\x73\xce\x45\x14\x3d\x83\x81\x7d\x17\x84\x65\x7c\x15\xc5\x31\xfc\x1b\x9c\xdd\x3f\x3b\x3b\x3b\x3b\x6b\x57\xb3\x89\xe2\xd6\x3b\xa2\x67\xbf\x75\x66\x64\x39\x93\x6e\xaa\xbe\x51\xf0\xe8\x19\x2e\x06\xd5\x9f\xf0\x34\x3c\xf4\xd2\x14\xe3\x3b\x20\xbc\x3f\xcf\x4f\xb6\xff\x1b\x00\x00\xff\xff\x94\x28\xfb\x62\x04\x36\x00\x00")
+var _assetsPublicJsPlaygroundJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3c\xfd\x73\xdb\xb6\x92\xbf\xeb\xaf\xd8\xb2\x99\x21\x79\x96\x29\xa7\xef\x5e\xef\x8d\xfc\xf4\x6e\x52\xdb\x4d\x7c\x75\xec\x5c\xac\xb4\x33\x97\xf3\x79\x20\x72\x25\xa1\xa6\x00\x3d\x02\xb4\xac\x49\xf5\xbf\xdf\xe0\x83\x24\xf8\x25\x3b\x6e\xf2\xa6\xd5\x2f\x96\x88\xfd\xc6\xee\x62\x17\x00\x7d\x4f\x32\xd8\xe0\x4c\xf0\xf8\x0e\xe5\xd5\x87\xe9\xf1\xa0\xf6\xe4\xfc\xd2\x3c\xf8\xf0\xe1\xfc\xd4\x7c\xbb\xc3\xed\xbb\x0c\x85\x98\xd2\x15\xf2\x5c\x9e\x27\x30\x81\x23\x33\x84\x09\x95\x3c\x3b\x67\xeb\x5c\xb6\x1e\xbc\x27\x1b\xf7\xd9\x8f\x34\x95\x98\xb9\x4f\xae\x72\xd9\xc0\x33\x4f\x34\xe2\x60\x30\x98\xe7\x2c\x96\x94\x33\x78\xb7\xb8\xc4\xcd\x99\x86\x08\x18\x59\xe1\x10\xe6\x34\x13\xf2\x82\x32\xbc\xcc\x57\x33\xcc\x86\x20\xb6\x4c\x92\x87\x4b\x3d\x28\x97\xb8\x42\xf3\x75\x9d\x92\xed\x2f\x54\x2e\x7f\xb2\x2a\x84\xf0\x69\x00\x00\xa0\x58\xae\x17\x86\x24\x4c\x80\xc4\x18\x29\x09\x02\x4f\xa0\x66\x79\xe8\xc1\x01\x28\x56\x70\x00\xde\x61\xcc\x99\x44\x26\xbd\xf0\x58\x23\x17\x88\x91\x40\xf9\x2a\x97\xfc\x3a\xce\x78\x9a\x9e\x59\xcd\x25\xff\x99\xe2\x26\x90\x59\x8e\x1d\xf0\x53\x25\x5b\xe0\x91\x18\x47\x5a\xcc\x91\x62\x54\x0a\xdc\x44\x58\xa0\xbc\x46\x21\x28\x67\x41\xa8\xb0\xdf\xf2\xc4\x22\xaf\x78\x62\x70\x2b\xc5\x2d\xb2\x52\x4d\xe2\x83\x24\x19\x12\x98\xc0\x8b\xc0\x2f\x7e\x7d\x54\x0a\x4d\x4a\x15\xfd\x4a\x45\xdf\xbb\xf1\xc3\x68\x49\x13\x0c\x1e\x13\xe1\x67\x92\xe6\x18\x14\x24\xa3\x7b\x92\x06\x61\x78\x3c\xd8\x83\xc4\x59\xe0\xc7\x4b\xc2\x16\xe8\x0f\xa1\x98\xd3\xa0\x98\x09\xf5\xa9\x51\xeb\x26\xb2\x28\x38\x87\x56\xc0\x7e\x7e\x71\x8a\x24\x7b\xc5\x18\x97\x44\x71\x12\x81\x83\x41\xe7\x10\x34\x7d\x02\x26\x13\xd0\xb3\xe5\x48\xa4\x3e\x9a\x8e\xf5\xf9\xa0\x15\x03\xe1\x31\x8c\x46\x90\x70\x14\xcc\x97\xb0\x22\x52\x62\xa6\xc8\x53\xe9\x0b\x38\xaa\x11\xea\x8a\x1f\xe5\x0a\x96\xb4\x92\x67\x08\x7f\x3d\x3a\x72\xe4\xdc\xe9\x6f\xbb\x96\x61\x63\xbe\x5a\x11\x96\x88\x88\x24\xc9\x89\xf9\x1e\x54\x52\xab\xd9\x1c\x83\xff\x06\xd3\xb5\x3f\x2c\x9f\xce\x28\x4b\x7e\xc2\xed\xb8\xa1\xde\x86\xb2\x31\xf8\x27\x32\x4b\x0f\xaf\x97\x74\x2e\x0f\xdf\x39\x38\xea\xb3\x22\xb1\x02\x30\x5c\x7a\x60\x04\xb2\x04\xb3\x31\xf8\x26\x7e\x7f\x8b\x53\xea\x57\x4a\x54\xb0\xf8\x80\xf1\xb8\x9a\x7c\x64\xf7\x43\x20\xd9\x42\x0c\x21\xc3\x7f\xe6\x28\x64\xcb\xf8\x9c\x09\x9e\x62\x94\xf2\x45\xe0\x68\xcf\x24\xa1\x0c\xb3\x88\x26\x8e\xb1\x9a\xf0\x5e\x9c\x67\x82\x67\x40\x24\x64\x7c\x03\x2a\x4a\x5c\x4f\x39\xd1\xa3\xef\xb8\xa0\xc6\x11\x23\x05\x74\x00\xde\x10\x62\x9e\xe6\x2b\x06\xe3\xc7\x51\x0c\x64\x43\x86\xd1\x08\x74\xa6\x78\x90\x30\x29\x12\xe1\x69\x41\x75\xa8\x64\x19\x82\xc0\xd4\x84\x5f\x0d\x53\xc5\x6c\x85\x5a\xb7\x84\xfa\x90\x18\x8d\x30\xe3\x52\xac\x1a\xcc\xce\xfa\x49\x35\xe5\x72\x46\xb2\x48\x2c\xf9\x26\xf0\x12\x1e\xc3\x5c\x27\x5f\xa3\xa3\x66\x13\x0e\x1e\xf5\x35\x81\xf2\x6a\xad\xf5\xf5\x1a\xe9\xd6\x6b\x25\xe0\x50\xa3\x66\x28\xf3\x8c\x55\x22\xee\x9c\x1c\x3e\xa3\x72\x4e\xd8\xbb\x8c\xc7\x28\x04\xcf\xae\xb5\x1d\x2c\xfd\x78\x08\x54\xe2\xaa\xf0\x81\x38\x2a\xf5\x8d\x84\x09\xeb\x88\x32\x81\x99\x0c\xea\x43\xd6\x94\xd5\x0c\x05\xa1\xa1\xa4\x12\x49\x8e\x61\x8b\xda\x9c\xc7\xb9\xce\x07\x7b\x24\x7b\xc3\xef\x31\xeb\x11\xcc\x71\x32\xfd\x7c\x60\xa6\x7d\x7a\x75\x7a\x05\x63\x48\xa8\x50\xb1\x0c\xa7\x3c\x06\xca\xe6\x1c\x28\xb3\x33\x71\x62\x10\xf7\xb1\xbd\xa0\x42\xae\x4d\xbe\x8a\x0b\x7e\x2f\x22\xf2\x2b\x79\x70\x02\x5c\x6e\xd7\x2a\xc0\x5f\x9f\x4d\x9d\x38\x4c\x88\x24\x53\x3d\xe0\xfd\x2a\x38\xf3\xaa\x91\xb5\x21\x7e\x4a\x24\x19\xc3\x9c\xa4\x02\xab\xb1\x3c\x4b\xc7\xe0\x2f\xa5\x5c\x8f\x47\x23\xb5\x14\xcc\x88\xc0\x57\x6b\xfa\x86\x0b\xa9\x56\x84\x11\x59\xd3\xd1\xfd\x77\xa3\x84\xc7\x62\xb4\x2e\xa4\x14\x1a\x34\xb6\xb6\xc7\xe4\xe3\xcb\x9b\x8a\xa4\xc8\x63\x05\xe5\xc4\x79\x89\x77\x9b\xf0\xb8\x19\xe2\xca\xe9\x95\x15\x05\x4c\xe0\xe3\x4d\x6d\x28\x45\xa9\x85\x87\x09\xd4\x48\x7c\xac\x71\xbe\xe9\xcf\x18\x19\x8f\x23\x33\x87\x22\x6c\x31\xe5\x66\xe0\x02\x99\xa5\x5f\x80\x96\x7f\x53\x64\x0b\xb9\xac\x47\xf7\x9c\x67\x10\x68\x99\x75\xf9\x03\x14\xfe\xee\x50\x3a\x06\x7a\x70\xd0\xd4\xb0\x50\xc5\x80\xf5\x30\xfb\x48\x6f\x5a\x48\xae\x2e\x06\x39\x6c\x44\xb8\x71\xbc\xf3\x05\xe3\x19\x82\x5a\x15\x38\x2b\xa4\x69\xc1\xa9\x45\xcf\x8c\x45\xca\x4f\xd4\x7a\xe7\x55\x33\x1a\x9d\x68\x6c\x2b\x8d\xd7\xa5\x83\x15\x49\x52\x96\x63\x6b\x70\xd7\x25\x18\xfc\xb2\x44\x06\x8c\x03\x49\x29\x11\x6a\xb5\x1b\x42\x2e\x10\x54\x9d\xd2\x02\x57\x46\x4d\xc9\x0c\xd3\x6b\xa9\x8a\x31\x2b\xea\x2b\x85\xd9\xa9\x4b\x05\x3b\x01\xaf\x57\x60\x87\x62\xa1\xbd\xe2\x1e\x65\xb8\x4e\x49\x8c\xc1\xe8\x7f\xa3\xff\x0c\x3e\xbe\x3a\xfc\x9f\x9b\x70\xb4\x70\x0a\x93\x87\x21\x6c\x43\xf8\x54\x24\x33\xef\x56\x2d\x06\xdb\x48\xf2\x0b\xbe\xc1\xec\x84\x08\x0c\x42\xd8\x85\x15\x9d\xff\xbb\x1d\x0d\x95\x1c\x8d\xd5\xa0\xc7\x36\xa5\xb2\xef\xf1\x9f\x39\xcd\x50\x15\x03\x9e\xb7\x6f\xce\x2a\xc0\xee\x3a\xa5\xa6\xb0\x4b\x15\x0e\x21\xc8\xec\xef\xb0\xcd\x62\xd7\x29\x9b\xce\x9c\x30\xa9\xcc\x77\x00\x1e\x4c\xfe\x01\x5e\x5b\x3b\xb1\xa1\x32\x5e\xd6\x7c\xab\xd7\x7b\x88\x40\xf0\x96\x44\x2c\xbd\x71\x27\x40\x43\xe7\x53\x9c\x93\x3c\x35\x25\x1f\x7c\x33\x01\x96\xa7\x69\x1f\xed\x4a\x7a\x05\x7c\x50\x3a\x90\x4b\xa3\x2d\x7c\x69\x05\xc0\x54\xe0\x53\x49\x7b\x9f\x76\x1d\x86\x28\x69\xf5\x8e\xcc\x32\x24\x77\xdd\x88\xc6\x34\x24\xcb\xc8\xf6\x4f\x6e\x9b\x8f\x37\x5f\xc7\x36\x42\x66\x94\x2d\xfe\xdc\xc6\xf1\x3d\xcf\xff\x2a\xc6\xa1\x4c\xfe\xb9\x2d\xe3\xbd\xfc\xee\x2f\x5f\xc7\x6f\x66\x9c\xa7\x7f\x72\xdb\xa8\x7c\xff\x75\x8c\x23\xe9\x0a\xa3\xd3\x3c\xd3\x3d\xf2\x9f\xdc\x4a\x7f\x39\xfa\x92\x36\xea\x58\xb4\x75\x99\x1a\xad\x73\xb1\x0c\xba\x65\x4a\xf8\x78\x5f\x87\x33\xec\x44\xd2\xdd\x48\x0b\xcf\xe9\x3f\xba\xd1\x68\x32\x2e\x57\xe7\x6e\x08\x3d\x3a\x76\x97\xf0\x5a\x6d\xd0\x8d\xa4\xcd\x39\x36\x7f\xda\x10\xbb\x7a\x19\xbd\xeb\x6b\x37\x7f\xa1\x72\xa9\x7b\x23\xa1\x6a\xa2\x21\xc4\xe1\x60\xd0\xb9\x21\x90\x65\xaa\x9b\x2d\xab\x2e\xae\x77\xfe\xf6\xed\x02\x78\x1a\x05\x16\x28\x25\x65\x8b\xaa\x2f\x80\x84\xc7\xf9\x0a\x99\xdd\xed\xf1\x1a\x65\x98\x2d\xe3\x74\xf7\xd3\xb5\xbf\xb2\xa7\x25\x3b\xd7\x3d\xe7\x14\x57\xeb\x94\x48\xac\xda\xb2\x9a\x54\x7b\x71\x20\xf0\xea\xed\xd2\xd1\x8d\xaa\xa7\x42\xe0\x73\xf0\x9a\x8d\x54\xd1\x4d\x82\x6a\x27\xc7\x4a\x51\x90\x05\x9d\x79\xc6\x57\xf0\xea\xdd\x39\x10\x96\x80\xe9\x85\x55\x77\x89\x8f\xf6\xd9\x6f\x91\xe5\x95\xe4\x77\xb8\xd5\xdd\x56\x69\x87\xd1\x08\x3e\x75\x3a\xef\x92\x6f\x4e\xb9\x6a\x7f\x93\x31\xf8\x6a\x62\x55\xfb\xe5\x0f\x0b\xd7\xf2\x32\x24\x09\xc8\x25\x2a\xeb\x77\x68\x73\x74\xe3\x4e\x76\x27\x8b\xaa\xe1\xb5\x5c\x52\x2a\xe4\xad\xed\x61\x1c\x4e\xea\x71\xd1\xda\x78\x8f\x52\xad\xdb\xdf\x52\x36\x06\xbb\x9d\xe7\x69\xea\x10\xb6\x66\x54\x4f\x61\x96\xe6\xb8\xce\xd4\x5a\xfa\xbb\x38\xac\x28\x6b\x33\xd8\x50\xb9\x84\xc4\xe4\x3d\x01\x9c\xa5\xdb\x92\xc9\x8d\xf1\xc8\x66\xfc\xa8\x69\x2a\xc3\x67\x37\x18\xbc\x08\x0a\x1f\x57\x6d\x07\x49\xb6\x41\x6b\x1b\xf5\xc3\x87\xf3\x53\x98\xc0\x22\xa7\x49\x50\xf4\x8a\xa3\x11\x7c\x6b\x3f\xf0\xc3\xf9\xf4\x87\x57\xef\x21\xe5\x24\x31\x02\x55\x0d\xa0\x9a\x42\xf1\x47\xdd\x6f\xf0\x9f\xb4\xbd\x20\x94\x77\x8a\x66\xf6\x28\x3b\xf6\x3b\xdc\xaa\x68\x79\x04\x1c\xda\xad\x68\x6d\xef\x0c\x0e\x14\xa1\xce\x4e\xed\x0e\xb7\x91\x90\x24\x93\x42\xcf\x9f\x47\xd9\x3a\x97\x5e\x08\xbf\xfd\x06\xcd\x21\x93\xe8\xbc\xf0\x09\x6d\xab\xe6\x6e\xd9\x96\xed\xa6\x77\xeb\x0d\xc1\x83\x66\x9a\x83\xce\x95\xce\x3a\xd6\x73\x96\x2f\x95\x38\xfa\xd7\x9f\x3b\xdc\x3e\x69\xe9\x79\xc2\x42\xf2\x87\x5e\x1d\x06\x65\x24\x9d\x33\x2a\xe1\x07\x6d\xcf\xe2\xd1\x85\x0a\x26\xe5\xec\x26\x3d\x2b\x07\x2e\x43\x69\x34\x82\x93\x0c\x55\xea\xd6\xa6\x28\x1f\x16\x33\xc2\xa8\x2c\x43\x3d\x6c\x85\xeb\xb7\x70\x76\x7a\x3e\xbd\x7a\x7f\x0d\xc5\xc8\xd5\x87\xe9\xbb\x0f\x53\x38\xb9\xba\xfc\xf1\xfc\xf5\x87\xf7\xaf\xa6\xe7\x57\x97\x7a\xcc\x3d\x38\x83\x49\xed\xa8\xcc\xfa\xda\x61\xcc\xd9\x9c\x2e\x8a\x52\x6f\x08\x7f\x1b\x82\x97\xf2\x85\x90\xaa\x1d\x1f\x82\xb7\xe2\x8c\xdf\x11\xea\x0d\xcd\xf6\xc2\xa0\x45\xf7\x3d\xd9\xf4\x90\xce\xc8\xc6\x1b\xc2\xcb\x61\x91\x0a\xc0\xc3\x38\xa5\x6b\x81\xde\xd0\x18\xb5\xd2\xed\xc7\xf3\x8b\xe9\xd9\xfb\x5e\x0d\xcc\xf1\x60\x93\x8d\x89\xbd\x96\x06\xdf\x3f\xa2\x41\x93\xec\xe7\x1e\x48\xb9\xca\xef\xdf\x07\xef\xe7\xb2\x40\x79\xa1\xb7\x11\x83\x10\x0e\xe0\x7b\x38\x80\x97\xd6\xf9\x76\x4e\x82\x3e\xbf\xdc\x37\xad\xfa\x1c\xb5\x69\x13\x9d\x5c\x5a\x26\xf9\xee\xc9\x26\xd1\x44\x9f\x67\x11\xab\xe7\x5e\x8b\xbc\x84\x83\x7e\x46\x75\xa3\x7c\x17\x7e\x01\x8b\xf7\x41\x86\xa5\x1c\x8f\xcf\xce\xcb\xb0\x67\x62\xde\xbf\xfa\xa5\x69\xb9\x8e\x60\x30\x33\xf2\x84\x58\x68\x93\xfa\x7a\xf3\xf0\xfd\x1f\xd5\xb8\x0d\x03\x3c\xe9\x48\x53\x20\x4b\xce\xee\x91\xc9\xcf\x3b\xd7\xdc\x7f\xa2\xf9\xaf\x3a\xcb\x7c\x11\x78\xdf\x9a\xd5\xf5\x70\x9d\x92\xed\x22\xe3\x39\x4b\x0e\xe7\x3c\x5b\xc1\x2c\x97\x92\x33\x73\x30\xef\x28\x79\xe3\x85\x51\x9c\xd2\xf8\x2e\xe8\x3c\x13\xb6\x2e\x5a\x9b\x80\x7e\x33\x8e\x46\xae\x25\x9d\xc3\x61\x3b\xd0\xb0\xa3\x7d\xda\x30\xe5\x9b\x3a\x4e\xdb\x9a\x1d\x00\xbd\x06\x75\x60\x76\x35\xac\x27\x9b\xd6\xa1\x40\x52\xcc\x64\xe0\xbd\xbe\xf2\x42\x38\x76\x07\x77\xc5\x0f\xc7\x64\xce\x02\xcb\x12\x6b\x40\x51\x2d\xf2\x57\x0c\xf4\xb4\x88\x7c\xb6\xa2\xd2\x5c\x1f\x89\xa2\xc8\xcc\x98\x82\x29\x00\x5f\x04\x7e\xcf\x94\xfa\x26\x8a\x0d\x05\x37\x8a\x31\x84\x4f\x30\x1a\xe5\x02\x81\x33\x55\x35\xfe\xfa\xdf\x39\x66\x5b\x78\x19\xfd\xc7\x41\xcd\x06\xd1\x3a\x43\xe5\x05\x76\xab\x24\xd0\x37\x0d\xec\x33\x23\x9e\x2e\x37\x0c\x07\x55\xed\xb8\xd8\x4a\x9a\x20\xac\xd9\xa1\x5d\xe3\x58\x9b\xb4\x8c\xd2\xca\x7d\x70\xf6\xf3\xd9\xe5\xb4\x17\x4e\x1f\xf2\xe4\x02\x33\xd0\xce\xaa\xf4\xf2\xae\x91\x25\x40\x16\x84\x32\xcf\x7a\x37\x4c\x15\x98\x72\x06\xdd\x30\x66\x64\x03\x46\x17\xc9\x61\x4d\xd7\x98\x52\x86\x90\x0b\x55\xb6\x51\x29\xaa\x8b\x48\xa0\xd3\xea\xe0\xf9\x11\xa4\xb3\xa9\x12\xec\xb3\xa6\x01\x6c\x4d\xef\x5c\x88\xea\xdb\xec\x72\x40\x22\xc5\x3a\x50\x72\x16\xd7\x6b\xaa\x45\x21\x2c\x6f\xc9\xf4\x86\xb2\xb6\x64\xcc\x13\x8c\xab\x1b\x02\x60\x56\x02\x63\x3e\x7d\xb0\x5c\xe9\x5e\x5a\xa5\xce\x4d\x53\xf0\xfa\xd6\x91\x27\xa9\x6e\x1c\xc8\x29\x80\xfb\x26\xff\xf5\xc5\xd5\x0f\xaf\x2e\xf6\xfb\x46\x8a\xe4\x5e\x97\xe3\xa4\xd0\x23\xc1\x14\x25\x42\x9c\x67\x19\x32\x99\x6e\x21\xcb\x19\xd3\x20\xd6\x13\xac\x66\x1b\xca\x12\xbe\x31\x9a\xcc\x70\xce\x33\xcc\x99\x6a\x5e\xfb\xd6\x45\xd5\xb8\xa9\xc6\xf4\x6a\xf6\x2b\xc6\xed\x4b\x14\xbe\xf6\x38\x7f\xac\x9a\xea\x8e\x81\x5b\xd5\xe8\x76\x8d\x9a\xfa\xb3\x6b\x24\xcf\x69\xa2\x9e\x3b\xfe\xa8\x5a\x35\xd5\x87\x57\x90\xee\xbd\x8c\x56\x73\x0d\x45\x57\x6c\x74\x8d\x52\x1e\xeb\x62\x2e\x5a\x66\x38\xaf\x73\xb3\x7d\xf8\xe9\xd9\xc5\xd9\xf4\xac\xb1\x6c\xd9\xcb\x69\xb6\x23\x27\xeb\x75\x4a\x0d\x9d\x91\x2a\x43\x8e\x95\x17\x65\x02\xe5\x24\x97\xf3\xc3\xbf\x35\xb4\xa8\x5a\x79\x5f\x01\xfb\xed\xd1\x31\xfc\xd7\xf5\xd5\x65\x64\x8e\x60\xe8\x7c\x1b\x54\x46\x0e\x1b\xcb\x67\xab\x3d\xcf\x50\xe4\xa9\x4e\xd9\x3d\x7b\x87\x3b\xa7\x20\x86\x66\x4a\x91\x7c\xb1\x48\x11\x08\xdb\x82\x24\xb3\xce\x28\x00\xeb\x2c\x3e\xf9\xa8\xc4\x3a\x34\x28\x13\x4f\x92\x99\xbe\xd0\xa6\x13\xf1\x92\x6f\x58\x34\x13\x91\x24\xb3\x66\x30\x34\x9c\xbe\x5d\x9d\xb7\xbc\xfa\xe2\xea\xf5\xf5\x7e\x97\xd7\xae\xae\x3c\x15\x13\x23\x73\xcc\x19\x53\x2e\x29\xb9\x4e\x7f\xaa\x46\x2f\x13\xc7\xa0\x70\xdd\x32\x93\x28\x06\x30\x01\x86\x1b\xf8\x05\x67\xd7\xfa\x59\xe0\x6d\xc4\x78\xa4\x6f\xfb\xd5\x37\x4d\xbc\x62\xd3\x44\x11\x2d\x5a\xdb\x1a\xa9\x88\x33\xbe\xd6\xf7\x1c\x2a\xc5\x95\xc3\xbb\xca\xd7\xda\x68\xcd\x7f\x0c\x27\x46\x68\x95\x85\x50\x48\x32\x4b\xa9\x58\x62\xf2\x4d\xb9\xed\xb0\x1b\xd4\x94\x26\x4a\x2d\x58\xa1\x10\x4a\xfb\x98\xaf\x50\xd8\x70\xb7\x57\x62\xa8\x2c\x55\x4d\xf9\xc2\x02\xca\xd5\x3a\x85\x09\xbc\x88\x8a\x6d\x4e\x11\x78\xdf\x56\xc3\x87\xc5\xe3\x3e\xcd\x0a\x7e\xfb\x94\x53\x1c\x2f\xf8\xe2\x6d\x09\xaa\xdd\x79\xad\x42\xc2\x00\x47\xca\x73\x1a\x37\x04\x6b\xee\x5a\x61\x47\xaa\xd7\x8f\x8a\x44\x75\xab\x32\x80\xb9\x4b\xd1\x4e\x01\xf0\xdb\x6f\x7d\x44\x8a\xbf\x94\x25\xf8\x70\x35\x0f\x14\x78\x08\xff\x70\xee\x0c\xb6\xeb\x47\x5f\x99\x45\xf8\x61\x44\xd6\x6b\xb5\xce\xd4\x6d\x18\x65\xba\xd0\xea\xd8\xdb\xc1\xfb\xb1\xc3\xba\xbd\x19\x23\xe9\x0a\xaf\x75\x68\x8f\x61\xc5\x57\xc8\x64\xe0\x48\x3a\xa5\x2b\x0c\x23\xb5\xca\x12\x19\xf8\x17\xd3\x6b\x3f\x6c\x93\xd0\x46\x7c\x33\x7d\x7b\x31\xb6\x57\x51\xdf\xd0\xc5\x32\xa5\x8b\xa5\x3c\x9f\xeb\xa5\x38\x68\x1a\xd0\xcc\x51\x9d\xd2\xae\x79\x7b\xc2\xd1\x59\xe8\xeb\xb5\x53\xbe\x0e\xaa\x87\x1f\x8f\x6e\xec\xf3\x37\xa8\x78\xb5\xd7\xd6\x7a\x46\x21\xcc\xec\x29\x01\x8f\xe3\x3c\x13\x6a\xfd\xab\x05\xa2\x34\xee\xaa\x6b\x49\x9d\x7e\x3a\x1d\xce\x90\xd8\xe7\x6e\x8c\x4b\x8a\x91\x29\x49\x3f\x15\x69\x7b\x43\x32\xb5\xc4\xf9\x43\x10\x92\x6c\x8b\x9d\x51\x7d\xeb\x75\x0c\xfe\xbb\x8c\xcf\x52\x5c\x41\x92\xa3\xca\x11\x82\xaf\x10\xce\x14\x23\xbf\xca\x8f\x75\x65\x2a\xa1\x75\x6e\x79\xd0\xb5\x42\xca\x45\x11\x74\x8f\x68\xa1\x41\xbf\xb4\x16\x4e\xc2\x38\x51\xf4\x93\x9a\xf4\x6e\xd9\x3c\xcf\x56\x27\x4b\x22\x4d\x7a\xf6\x4c\x15\xeb\x0d\x1b\xc2\x54\x55\xbe\x09\xd2\x56\x49\x5c\x8e\x2b\x92\xf1\x92\xc8\x43\xa5\xaf\x8a\x10\x29\xb3\xc0\x53\x32\x7b\x43\x6f\x49\x93\x04\x99\x17\x1e\x1b\xbd\x4a\x24\x95\x15\x6c\x00\xa9\x7c\x50\x96\x0b\x45\x5b\xa1\x08\xde\x2a\x82\xe3\x16\x7d\x5d\xca\x0d\xdb\xd0\x96\x9c\x83\x60\x9f\x14\x38\x25\x4a\x35\x9b\xd5\xd4\x98\xf2\xb1\xb1\xd4\x3a\x12\x86\x61\xbd\x72\x2f\x7e\x5c\x2f\x79\x26\xe3\x5c\x96\xfb\x8b\x09\xce\x55\x39\x4d\x60\x49\x58\x92\x62\xb9\x57\xa9\xeb\x23\x4c\x25\x81\x09\xfc\xf5\xe8\xe8\xd8\x7d\x9e\x12\x21\x7f\xc2\xed\xba\xb8\xa3\x6c\xae\xf7\x5b\x80\xf2\x60\xe9\x27\xdc\xbe\x31\x34\xed\x1c\x15\x10\xae\xe9\x54\xf6\xb4\x53\x76\x87\x5b\x95\x1d\xfd\x85\x0f\xa1\x03\xd1\xe8\xdf\xf4\x6d\xf5\x25\x15\x0d\xfe\x6a\xfd\x3b\x25\x12\x1b\xad\x8c\x65\xd0\x42\x38\x6c\xeb\xf0\xf7\x89\xd5\x37\xac\x13\x68\xf5\x8f\xb5\xe5\xef\xf5\x15\x7c\xe3\x35\x79\xea\xaf\xe6\x04\x8a\xa4\x70\xa8\x64\xd8\xa0\x9f\x40\x46\xe4\x12\x33\x15\x2d\x90\xa0\x54\x6b\x3c\x01\x99\xd1\x75\x8a\x87\x5a\x8e\x0e\x2a\x44\x00\x01\x81\x31\x67\x09\x24\x3c\x9f\x15\xa0\xaa\xc1\x15\x28\x75\x85\xa0\x92\xb2\x90\x64\xb5\x6e\xe2\x77\xd8\xe9\xa8\x21\xea\xae\xfe\xb3\x63\x66\x9b\x44\x5c\x02\x55\xc7\x5c\x7c\x19\x8d\x20\xc3\x05\x15\x52\x15\x64\x4b\x2c\xbc\xaa\x8c\xa4\x62\x77\x3d\x22\x89\x69\xbc\x2e\x14\x2c\xc3\x2c\xf0\xef\x70\x9b\xaf\xfd\xa1\xe3\x37\xc5\x36\xd8\xf1\x60\xa0\x9d\xb8\x74\xad\x9e\x85\x43\xaf\xcc\x76\xc2\xd4\xbc\xbb\xbf\xa1\x6a\x6c\x1b\xd8\x06\xcc\x56\x29\xee\xc9\xa8\x29\xf2\x9c\x17\x40\x74\xcf\x74\xbb\xe2\x09\x9a\xf7\x24\xbe\x5d\x13\xdb\x48\x41\xc4\xc8\xfd\xa1\x24\x33\x01\x11\x89\x25\xbd\xc7\x32\xb3\xd8\x36\xb4\xe8\xbb\x74\xa2\x71\xde\xbc\x30\x34\x8b\x4b\x74\xed\x0e\x4d\x15\x08\x15\x5f\x37\x35\x54\xd8\xa6\x0f\xec\xc2\x2e\xfa\xbb\x3a\x96\x69\x52\x9a\x8a\xd8\x63\xab\x67\x6b\x62\xa9\x76\xa9\x62\x77\xe5\x95\x2e\x0e\xef\xa6\x58\xe6\x88\xa0\x29\x96\x79\xfa\x7c\xb1\x2c\xd5\x2e\xb1\xec\x99\x84\x12\xcb\xe1\x5d\x88\x55\x52\xe8\x69\x13\x9f\xd6\xd1\xf9\xce\x04\xfb\x63\x77\xba\x5b\x30\x8a\x79\x09\xa2\x7e\xb4\x20\xf4\x74\x96\x20\xfa\x97\x03\xe3\x4e\x80\x3f\xae\xcd\x47\x1b\xca\x32\x73\x7e\x39\x30\xae\xcd\xfc\x71\xcd\x84\x6d\x28\x4b\xc9\xf9\x35\x6c\x2e\xe3\x45\xca\x54\x8d\x01\xba\x1d\xa1\x05\xe9\x3b\x47\x7e\xf7\xc1\x3d\x47\x7e\x6e\xe3\xfa\xf4\xb6\xb4\xbf\xbd\x7d\x42\xdf\x6d\x76\x1d\xae\x91\x25\xe3\xda\x96\xc3\x6e\xdf\x89\xb4\x30\xe7\x8f\xad\xb3\x65\xc7\x68\x6a\x9d\x29\xc1\xf6\x01\x79\x96\x7c\xf3\xcc\x52\xf9\xa7\x2e\x10\xdf\xab\x25\x23\x68\xde\x0c\x57\x99\xb2\xa0\x1f\x6d\x04\xcf\x25\x7c\xd3\x77\x4f\x9a\xe1\xe6\x36\xcf\x28\x4c\xa0\x6a\x31\x4b\x5c\x52\xf6\x99\x75\x72\xed\x83\x67\xf7\x6d\xc2\x56\xf3\x6a\x79\x74\x9c\x57\xbb\x68\x4f\x69\x54\xf7\xd9\xca\xa9\x3f\xa9\xa8\xf5\xac\x4f\x3b\x29\x6f\xc8\xf2\x94\xd6\xd2\xfd\x34\x4e\x4b\x7b\xde\x9a\xeb\x6c\x38\xdd\x4f\x47\x36\xcb\xc8\xa6\x7a\xff\x50\x6f\xee\xa7\x44\x88\x5e\xe7\x80\xaa\x5d\xd8\xa3\xde\xe3\x8d\x4c\xc3\xd6\x5f\xa7\xaf\x69\x7e\x3a\x0e\xf4\x39\x03\xed\x74\x5d\x7a\x36\x51\x8c\x12\xcf\xb1\x47\x7f\x4b\xf4\x18\xb1\xdd\xde\xe0\xa3\xec\x4b\xc6\x1e\x65\x7b\x14\x39\xbf\x7c\x4e\xe4\x9d\x5f\x7e\x6e\xe0\xb5\xf6\xbc\xab\xcc\x1b\x39\xab\xe1\xe3\xd3\xe0\x6c\x03\x7e\x81\x8b\x1f\x2a\x29\x52\xb6\xf0\x9a\xd9\xb0\x4c\x96\x96\x54\x94\xa1\x58\x73\x26\x4c\x57\xf5\x99\x97\x41\x76\x03\xf3\xa9\x95\x94\x6e\x2a\x2e\xde\xdb\x7a\xd6\x71\x85\x7e\x5b\xcf\x8a\xf4\x68\x22\xc8\x70\xc5\xef\xd1\xe6\x02\x6d\x02\xef\x59\xa8\x4e\x1a\x69\xd6\xca\xc6\x6c\x9a\xf6\xf4\x41\xfe\x3e\xdd\xdc\x57\x8b\xf7\x50\x28\x9e\x2f\xa5\x5c\xdb\x92\x37\xcf\xd2\x0e\xfc\x27\x26\xc9\x2f\x63\x98\x2f\xb0\x75\x59\xdb\x82\xac\x9c\xf9\x6d\xb1\x69\x50\x58\xb9\x8a\x84\x0b\xbc\xc7\x74\x0c\xdf\x55\x4f\xcc\xb5\xba\x4f\xd6\x1f\xad\x4a\x9f\xbb\x33\xd8\xb7\x23\xd8\xb1\x13\xa8\xfa\xef\x88\x29\x9f\xec\xdd\x04\x1c\x8d\x7e\xe7\xfe\x5f\xb9\xef\xf7\xf9\xfb\x7d\x03\x13\x8f\xa3\x11\x7c\x90\x34\x15\xfa\xdb\xc2\xbc\x22\xff\xc3\xf6\x47\x9a\xe2\xd9\x83\x44\xa6\x96\x60\x1b\xd8\x42\x77\xb0\xba\x1d\x59\x13\xb9\xd4\xd7\x03\x09\x2c\xe8\x3d\x32\x55\x37\x23\x60\x81\x50\xc5\x41\x37\xc1\x40\xe1\xbb\x9d\xa4\x22\xaa\xef\xa9\x9a\x7f\x25\x60\x5f\xba\x32\x6f\xea\xe3\x83\x1c\x15\xe3\x85\x3b\xd8\x4c\x53\x3c\x8e\x2c\x9b\x1f\x79\xf6\x8e\xc8\xa5\x21\x1f\xa9\xd1\x7a\x54\x9a\xdb\x9d\x96\x6f\xd5\x3d\xff\x7b\xd0\xd1\x15\xbf\x25\x72\x19\xcd\x53\xce\xb3\x20\x78\x09\x07\xe6\x77\x46\x58\xc2\x57\x41\x18\xc2\xbf\xc1\xd1\xc3\xcb\xa3\xa3\xa3\xa3\x7a\x09\x1a\x49\x6e\xbc\x20\x78\xf9\x7d\x63\x44\xe4\x33\x61\x87\xca\x43\x00\x87\x9f\x96\xe2\xa0\xf8\xe3\xeb\xff\x2e\xd0\xfb\xa3\xaa\xa0\x3b\x20\x9c\x3f\xc7\x83\xdd\xff\x07\x00\x00\xff\xff\x1f\x7f\xe0\x50\xae\x42\x00\x00")
func assetsPublicJsPlaygroundJsBytes() ([]byte, error) {
return bindataRead(
@@ -643,7 +664,7 @@ func assetsPublicJsPlaygroundJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/js/playground.js", size: 13828, mode: os.FileMode(420), modTime: time.Unix(1515701802, 0)}
+ info := bindataFileInfo{name: "assets/public/js/playground.js", size: 17070, mode: os.FileMode(420), modTime: time.Unix(1515799140, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -663,7 +684,7 @@ func assetsPublicTestTxt() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/test.txt", size: 8, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/test.txt", size: 8, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -683,7 +704,7 @@ func assetsPublicVendorAceAceJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ace.js", size: 373191, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ace.js", size: 373191, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -703,7 +724,7 @@ func assetsPublicVendorAceExtBeautifyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-beautify.js", size: 3818, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-beautify.js", size: 3818, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -723,7 +744,7 @@ func assetsPublicVendorAceExtChromevoxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-chromevox.js", size: 6360, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-chromevox.js", size: 6360, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -743,7 +764,7 @@ func assetsPublicVendorAceExtElastic_tabstops_liteJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-elastic_tabstops_lite.js", size: 3840, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-elastic_tabstops_lite.js", size: 3840, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -763,7 +784,7 @@ func assetsPublicVendorAceExtEmmetJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-emmet.js", size: 21478, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-emmet.js", size: 21478, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -783,7 +804,7 @@ func assetsPublicVendorAceExtError_markerJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-error_marker.js", size: 140, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-error_marker.js", size: 140, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -803,7 +824,7 @@ func assetsPublicVendorAceExtKeybinding_menuJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-keybinding_menu.js", size: 3640, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-keybinding_menu.js", size: 3640, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -823,7 +844,7 @@ func assetsPublicVendorAceExtLanguage_toolsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-language_tools.js", size: 34629, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-language_tools.js", size: 34629, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -843,7 +864,7 @@ func assetsPublicVendorAceExtLinkingJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-linking.js", size: 1031, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-linking.js", size: 1031, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -863,7 +884,7 @@ func assetsPublicVendorAceExtModelistJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-modelist.js", size: 4000, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-modelist.js", size: 4000, mode: os.FileMode(493), modTime: time.Unix(1510703867, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -883,7 +904,7 @@ func assetsPublicVendorAceExtOld_ieJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-old_ie.js", size: 11914, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-old_ie.js", size: 11914, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -903,7 +924,7 @@ func assetsPublicVendorAceExtSearchboxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-searchbox.js", size: 11702, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-searchbox.js", size: 11702, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -923,7 +944,7 @@ func assetsPublicVendorAceExtSettings_menuJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-settings_menu.js", size: 12570, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-settings_menu.js", size: 12570, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -943,7 +964,7 @@ func assetsPublicVendorAceExtSpellcheckJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-spellcheck.js", size: 1440, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-spellcheck.js", size: 1440, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -963,7 +984,7 @@ func assetsPublicVendorAceExtSplitJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-split.js", size: 4193, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-split.js", size: 4193, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -983,7 +1004,7 @@ func assetsPublicVendorAceExtStatic_highlightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-static_highlight.js", size: 2819, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-static_highlight.js", size: 2819, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1003,7 +1024,7 @@ func assetsPublicVendorAceExtStatusbarJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-statusbar.js", size: 1088, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-statusbar.js", size: 1088, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1023,7 +1044,7 @@ func assetsPublicVendorAceExtTextareaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-textarea.js", size: 9133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-textarea.js", size: 9133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1043,7 +1064,7 @@ func assetsPublicVendorAceExtThemelistJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-themelist.js", size: 1502, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-themelist.js", size: 1502, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1063,7 +1084,7 @@ func assetsPublicVendorAceExtWhitespaceJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/ext-whitespace.js", size: 2894, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/ext-whitespace.js", size: 2894, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1083,7 +1104,7 @@ func assetsPublicVendorAceKeybindingEmacsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/keybinding-emacs.js", size: 24469, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/keybinding-emacs.js", size: 24469, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1103,7 +1124,7 @@ func assetsPublicVendorAceKeybindingVimJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/keybinding-vim.js", size: 97052, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/keybinding-vim.js", size: 97052, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1123,7 +1144,7 @@ func assetsPublicVendorAceModeAbapJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-abap.js", size: 5813, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-abap.js", size: 5813, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1143,7 +1164,7 @@ func assetsPublicVendorAceModeAbcJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-abc.js", size: 4719, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-abc.js", size: 4719, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1163,7 +1184,7 @@ func assetsPublicVendorAceModeActionscriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-actionscript.js", size: 20555, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-actionscript.js", size: 20555, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1183,7 +1204,7 @@ func assetsPublicVendorAceModeAdaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ada.js", size: 1762, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ada.js", size: 1762, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1203,7 +1224,7 @@ func assetsPublicVendorAceModeApache_confJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-apache_conf.js", size: 13919, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-apache_conf.js", size: 13919, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1223,7 +1244,7 @@ func assetsPublicVendorAceModeApplescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-applescript.js", size: 5409, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-applescript.js", size: 5409, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1243,7 +1264,7 @@ func assetsPublicVendorAceModeAsciidocJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-asciidoc.js", size: 8159, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-asciidoc.js", size: 8159, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1263,7 +1284,7 @@ func assetsPublicVendorAceModeAssembly_x86Js() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-assembly_x86.js", size: 8898, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-assembly_x86.js", size: 8898, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1283,7 +1304,7 @@ func assetsPublicVendorAceModeAutohotkeyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-autohotkey.js", size: 63650, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-autohotkey.js", size: 63650, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1303,7 +1324,7 @@ func assetsPublicVendorAceModeBatchfileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-batchfile.js", size: 4866, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-batchfile.js", size: 4866, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1323,7 +1344,7 @@ func assetsPublicVendorAceModeBroJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-bro.js", size: 6221, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-bro.js", size: 6221, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1343,7 +1364,7 @@ func assetsPublicVendorAceModeC9searchJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-c9search.js", size: 4090, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-c9search.js", size: 4090, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1363,7 +1384,7 @@ func assetsPublicVendorAceModeC_cppJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-c_cpp.js", size: 11062, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-c_cpp.js", size: 11062, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1383,7 +1404,7 @@ func assetsPublicVendorAceModeCirruJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-cirru.js", size: 3003, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-cirru.js", size: 3003, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1403,7 +1424,7 @@ func assetsPublicVendorAceModeClojureJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-clojure.js", size: 8028, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-clojure.js", size: 8028, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1423,7 +1444,7 @@ func assetsPublicVendorAceModeCobolJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-cobol.js", size: 2313, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-cobol.js", size: 2313, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1443,7 +1464,7 @@ func assetsPublicVendorAceModeCoffeeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-coffee.js", size: 7416, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-coffee.js", size: 7416, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1463,7 +1484,7 @@ func assetsPublicVendorAceModeColdfusionJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-coldfusion.js", size: 62595, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-coldfusion.js", size: 62595, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1483,7 +1504,7 @@ func assetsPublicVendorAceModeCsharpJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csharp.js", size: 8852, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csharp.js", size: 8852, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1503,7 +1524,7 @@ func assetsPublicVendorAceModeCsound_documentJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_document.js", size: 68087, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_document.js", size: 68087, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1523,7 +1544,7 @@ func assetsPublicVendorAceModeCsound_orchestraJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_orchestra.js", size: 36915, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_orchestra.js", size: 36915, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1543,7 +1564,7 @@ func assetsPublicVendorAceModeCsound_scoreJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_score.js", size: 7471, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-csound_score.js", size: 7471, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1563,7 +1584,7 @@ func assetsPublicVendorAceModeCssJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-css.js", size: 20137, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-css.js", size: 20137, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1583,7 +1604,7 @@ func assetsPublicVendorAceModeCurlyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-curly.js", size: 61089, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-curly.js", size: 61089, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1603,7 +1624,7 @@ func assetsPublicVendorAceModeDJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-d.js", size: 8957, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-d.js", size: 8957, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1623,7 +1644,7 @@ func assetsPublicVendorAceModeDartJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dart.js", size: 14409, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dart.js", size: 14409, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1643,7 +1664,7 @@ func assetsPublicVendorAceModeDiffJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-diff.js", size: 2409, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-diff.js", size: 2409, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1663,7 +1684,7 @@ func assetsPublicVendorAceModeDjangoJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-django.js", size: 61387, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-django.js", size: 61387, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1683,7 +1704,7 @@ func assetsPublicVendorAceModeDockerfileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dockerfile.js", size: 8240, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dockerfile.js", size: 8240, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1703,7 +1724,7 @@ func assetsPublicVendorAceModeDotJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dot.js", size: 7580, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-dot.js", size: 7580, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1723,7 +1744,7 @@ func assetsPublicVendorAceModeDroolsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-drools.js", size: 10771, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-drools.js", size: 10771, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1743,7 +1764,7 @@ func assetsPublicVendorAceModeEiffelJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-eiffel.js", size: 2844, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-eiffel.js", size: 2844, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1763,7 +1784,7 @@ func assetsPublicVendorAceModeEjsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ejs.js", size: 70669, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ejs.js", size: 70669, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1783,7 +1804,7 @@ func assetsPublicVendorAceModeElixirJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-elixir.js", size: 15753, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-elixir.js", size: 15753, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1803,7 +1824,7 @@ func assetsPublicVendorAceModeElmJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-elm.js", size: 4943, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-elm.js", size: 4943, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1823,7 +1844,7 @@ func assetsPublicVendorAceModeErlangJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-erlang.js", size: 29721, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-erlang.js", size: 29721, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1843,7 +1864,7 @@ func assetsPublicVendorAceModeForthJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-forth.js", size: 6999, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-forth.js", size: 6999, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1863,7 +1884,7 @@ func assetsPublicVendorAceModeFortranJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-fortran.js", size: 8438, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-fortran.js", size: 8438, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1883,7 +1904,7 @@ func assetsPublicVendorAceModeFtlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ftl.js", size: 32533, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ftl.js", size: 32533, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1903,7 +1924,7 @@ func assetsPublicVendorAceModeGcodeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gcode.js", size: 1464, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gcode.js", size: 1464, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1923,7 +1944,7 @@ func assetsPublicVendorAceModeGherkinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gherkin.js", size: 2380, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gherkin.js", size: 2380, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1943,7 +1964,7 @@ func assetsPublicVendorAceModeGitignoreJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gitignore.js", size: 899, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gitignore.js", size: 899, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1963,7 +1984,7 @@ func assetsPublicVendorAceModeGlslJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-glsl.js", size: 13230, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-glsl.js", size: 13230, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -1983,7 +2004,7 @@ func assetsPublicVendorAceModeGobstonesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gobstones.js", size: 20466, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-gobstones.js", size: 20466, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2003,7 +2024,7 @@ func assetsPublicVendorAceModeGolangJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-golang.js", size: 6923, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-golang.js", size: 6923, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2023,7 +2044,7 @@ func assetsPublicVendorAceModeGraphqlschemaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-graphqlschema.js", size: 3442, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-graphqlschema.js", size: 3442, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2043,7 +2064,7 @@ func assetsPublicVendorAceModeGroovyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-groovy.js", size: 22574, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-groovy.js", size: 22574, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2063,7 +2084,7 @@ func assetsPublicVendorAceModeHamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haml.js", size: 39373, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haml.js", size: 39373, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2083,7 +2104,7 @@ func assetsPublicVendorAceModeHandlebarsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-handlebars.js", size: 61949, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-handlebars.js", size: 61949, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2103,7 +2124,7 @@ func assetsPublicVendorAceModeHaskellJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haskell.js", size: 11490, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haskell.js", size: 11490, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2123,7 +2144,7 @@ func assetsPublicVendorAceModeHaskell_cabalJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haskell_cabal.js", size: 2282, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haskell_cabal.js", size: 2282, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2143,7 +2164,7 @@ func assetsPublicVendorAceModeHaxeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haxe.js", size: 6543, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-haxe.js", size: 6543, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2163,7 +2184,7 @@ func assetsPublicVendorAceModeHjsonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-hjson.js", size: 5980, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-hjson.js", size: 5980, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2183,7 +2204,7 @@ func assetsPublicVendorAceModeHtmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html.js", size: 60070, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html.js", size: 60070, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2203,7 +2224,7 @@ func assetsPublicVendorAceModeHtml_elixirJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html_elixir.js", size: 77273, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html_elixir.js", size: 77273, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2223,7 +2244,7 @@ func assetsPublicVendorAceModeHtml_rubyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html_ruby.js", size: 70998, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-html_ruby.js", size: 70998, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2243,7 +2264,7 @@ func assetsPublicVendorAceModeIniJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ini.js", size: 2710, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ini.js", size: 2710, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2263,7 +2284,7 @@ func assetsPublicVendorAceModeIoJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-io.js", size: 5675, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-io.js", size: 5675, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2283,7 +2304,7 @@ func assetsPublicVendorAceModeJackJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jack.js", size: 5774, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jack.js", size: 5774, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2303,7 +2324,7 @@ func assetsPublicVendorAceModeJadeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jade.js", size: 53258, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jade.js", size: 53258, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2323,7 +2344,7 @@ func assetsPublicVendorAceModeJavaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-java.js", size: 21939, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-java.js", size: 21939, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2343,7 +2364,7 @@ func assetsPublicVendorAceModeJavascriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-javascript.js", size: 18201, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-javascript.js", size: 18201, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2363,7 +2384,7 @@ func assetsPublicVendorAceModeJsonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-json.js", size: 5179, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-json.js", size: 5179, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2383,7 +2404,7 @@ func assetsPublicVendorAceModeJsoniqJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsoniq.js", size: 233266, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsoniq.js", size: 233266, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2403,7 +2424,7 @@ func assetsPublicVendorAceModeJspJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsp.js", size: 36608, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsp.js", size: 36608, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2423,7 +2444,7 @@ func assetsPublicVendorAceModeJssmJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jssm.js", size: 5904, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jssm.js", size: 5904, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2443,7 +2464,7 @@ func assetsPublicVendorAceModeJsxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsx.js", size: 6968, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-jsx.js", size: 6968, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2463,7 +2484,7 @@ func assetsPublicVendorAceModeJuliaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-julia.js", size: 7549, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-julia.js", size: 7549, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2483,7 +2504,7 @@ func assetsPublicVendorAceModeKotlinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-kotlin.js", size: 11847, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-kotlin.js", size: 11847, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2503,7 +2524,7 @@ func assetsPublicVendorAceModeLatexJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-latex.js", size: 5040, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-latex.js", size: 5040, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2523,7 +2544,7 @@ func assetsPublicVendorAceModeLeanJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lean.js", size: 5576, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lean.js", size: 5576, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2543,7 +2564,7 @@ func assetsPublicVendorAceModeLessJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-less.js", size: 22169, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-less.js", size: 22169, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2563,7 +2584,7 @@ func assetsPublicVendorAceModeLiquidJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-liquid.js", size: 32187, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-liquid.js", size: 32187, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2583,7 +2604,7 @@ func assetsPublicVendorAceModeLispJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lisp.js", size: 1961, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lisp.js", size: 1961, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2603,7 +2624,7 @@ func assetsPublicVendorAceModeLive_scriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-live_script.js", size: 19962, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-live_script.js", size: 19962, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2623,7 +2644,7 @@ func assetsPublicVendorAceModeLivescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-livescript.js", size: 4984, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-livescript.js", size: 4984, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2643,7 +2664,7 @@ func assetsPublicVendorAceModeLogiqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-logiql.js", size: 5712, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-logiql.js", size: 5712, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2663,7 +2684,7 @@ func assetsPublicVendorAceModeLogstashJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-logstash.js", size: 9305, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-logstash.js", size: 9305, mode: os.FileMode(420), modTime: time.Unix(1510761539, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2683,7 +2704,7 @@ func assetsPublicVendorAceModeLslJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lsl.js", size: 26630, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lsl.js", size: 26630, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2703,7 +2724,7 @@ func assetsPublicVendorAceModeLuaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lua.js", size: 7291, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lua.js", size: 7291, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2723,7 +2744,7 @@ func assetsPublicVendorAceModeLuapageJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-luapage.js", size: 68524, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-luapage.js", size: 68524, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2743,7 +2764,7 @@ func assetsPublicVendorAceModeLuceneJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lucene.js", size: 1173, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-lucene.js", size: 1173, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2763,7 +2784,7 @@ func assetsPublicVendorAceModeMakefileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-makefile.js", size: 6558, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-makefile.js", size: 6558, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2783,7 +2804,7 @@ func assetsPublicVendorAceModeMarkdownJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-markdown.js", size: 66976, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-markdown.js", size: 66976, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2803,7 +2824,7 @@ func assetsPublicVendorAceModeMaskJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mask.js", size: 42280, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mask.js", size: 42280, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2823,7 +2844,7 @@ func assetsPublicVendorAceModeMatlabJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-matlab.js", size: 20567, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-matlab.js", size: 20567, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2843,7 +2864,7 @@ func assetsPublicVendorAceModeMazeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-maze.js", size: 4891, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-maze.js", size: 4891, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2863,7 +2884,7 @@ func assetsPublicVendorAceModeMelJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mel.js", size: 24949, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mel.js", size: 24949, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2883,7 +2904,7 @@ func assetsPublicVendorAceModeMips_assemblerJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mips_assembler.js", size: 5959, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mips_assembler.js", size: 5959, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2903,7 +2924,7 @@ func assetsPublicVendorAceModeMipsassemblerJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mipsassembler.js", size: 3189, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mipsassembler.js", size: 3189, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2923,7 +2944,7 @@ func assetsPublicVendorAceModeMushcodeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mushcode.js", size: 6712, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mushcode.js", size: 6712, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2943,7 +2964,7 @@ func assetsPublicVendorAceModeMysqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mysql.js", size: 6523, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-mysql.js", size: 6523, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2963,7 +2984,7 @@ func assetsPublicVendorAceModeNixJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-nix.js", size: 13344, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-nix.js", size: 13344, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -2983,7 +3004,7 @@ func assetsPublicVendorAceModeNsisJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-nsis.js", size: 10118, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-nsis.js", size: 10118, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3003,7 +3024,7 @@ func assetsPublicVendorAceModeObjectivecJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-objectivec.js", size: 54730, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-objectivec.js", size: 54730, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3023,7 +3044,7 @@ func assetsPublicVendorAceModeOcamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ocaml.js", size: 15593, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ocaml.js", size: 15593, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3043,7 +3064,7 @@ func assetsPublicVendorAceModePascalJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pascal.js", size: 4559, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pascal.js", size: 4559, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3063,7 +3084,7 @@ func assetsPublicVendorAceModePerlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-perl.js", size: 7392, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-perl.js", size: 7392, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3083,7 +3104,7 @@ func assetsPublicVendorAceModePgsqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pgsql.js", size: 56065, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pgsql.js", size: 56065, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3103,7 +3124,7 @@ func assetsPublicVendorAceModePhpJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-php.js", size: 472615, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-php.js", size: 472615, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3123,7 +3144,7 @@ func assetsPublicVendorAceModePigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pig.js", size: 6322, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-pig.js", size: 6322, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3143,7 +3164,7 @@ func assetsPublicVendorAceModePlain_textJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-plain_text.js", size: 506, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-plain_text.js", size: 506, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3163,7 +3184,7 @@ func assetsPublicVendorAceModePowershellJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-powershell.js", size: 32702, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-powershell.js", size: 32702, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3183,7 +3204,7 @@ func assetsPublicVendorAceModePraatJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-praat.js", size: 10270, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-praat.js", size: 10270, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3203,7 +3224,7 @@ func assetsPublicVendorAceModePrologJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-prolog.js", size: 8377, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-prolog.js", size: 8377, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3223,7 +3244,7 @@ func assetsPublicVendorAceModePropertiesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-properties.js", size: 1099, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-properties.js", size: 1099, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3243,7 +3264,7 @@ func assetsPublicVendorAceModeProtobufJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-protobuf.js", size: 12761, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-protobuf.js", size: 12761, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3263,7 +3284,7 @@ func assetsPublicVendorAceModePythonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-python.js", size: 4693, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-python.js", size: 4693, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3283,7 +3304,7 @@ func assetsPublicVendorAceModeRJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-r.js", size: 5005, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-r.js", size: 5005, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3303,7 +3324,7 @@ func assetsPublicVendorAceModeRazorJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-razor.js", size: 67166, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-razor.js", size: 67166, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3323,7 +3344,7 @@ func assetsPublicVendorAceModeRdocJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rdoc.js", size: 4692, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rdoc.js", size: 4692, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3343,7 +3364,7 @@ func assetsPublicVendorAceModeRedJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-red.js", size: 12603, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-red.js", size: 12603, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3363,7 +3384,7 @@ func assetsPublicVendorAceModeRhtmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rhtml.js", size: 65135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rhtml.js", size: 65135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3383,7 +3404,7 @@ func assetsPublicVendorAceModeRstJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rst.js", size: 3024, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rst.js", size: 3024, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3403,7 +3424,7 @@ func assetsPublicVendorAceModeRubyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ruby.js", size: 10102, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-ruby.js", size: 10102, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3423,7 +3444,7 @@ func assetsPublicVendorAceModeRustJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rust.js", size: 6528, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-rust.js", size: 6528, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3443,7 +3464,7 @@ func assetsPublicVendorAceModeSassJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sass.js", size: 11582, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sass.js", size: 11582, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3463,7 +3484,7 @@ func assetsPublicVendorAceModeScadJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scad.js", size: 6523, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scad.js", size: 6523, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3483,7 +3504,7 @@ func assetsPublicVendorAceModeScalaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scala.js", size: 22753, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scala.js", size: 22753, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3503,7 +3524,7 @@ func assetsPublicVendorAceModeSchemeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scheme.js", size: 3658, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-scheme.js", size: 3658, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3523,7 +3544,7 @@ func assetsPublicVendorAceModeShJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sh.js", size: 7203, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sh.js", size: 7203, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3543,7 +3564,7 @@ func assetsPublicVendorAceModeSjsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sjs.js", size: 21414, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sjs.js", size: 21414, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3563,7 +3584,7 @@ func assetsPublicVendorAceModeSmartyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-smarty.js", size: 63536, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-smarty.js", size: 63536, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3583,7 +3604,7 @@ func assetsPublicVendorAceModeSnippetsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-snippets.js", size: 3687, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-snippets.js", size: 3687, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3603,7 +3624,7 @@ func assetsPublicVendorAceModeSoy_templateJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-soy_template.js", size: 68565, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-soy_template.js", size: 68565, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3623,7 +3644,7 @@ func assetsPublicVendorAceModeSpaceJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-space.js", size: 2236, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-space.js", size: 2236, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3643,7 +3664,7 @@ func assetsPublicVendorAceModeSparqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sparql.js", size: 7865, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sparql.js", size: 7865, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3663,7 +3684,7 @@ func assetsPublicVendorAceModeSqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sql.js", size: 1842, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sql.js", size: 1842, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3683,7 +3704,7 @@ func assetsPublicVendorAceModeSqlserverJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sqlserver.js", size: 16425, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-sqlserver.js", size: 16425, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3703,7 +3724,7 @@ func assetsPublicVendorAceModeStylusJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-stylus.js", size: 14308, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-stylus.js", size: 14308, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3723,7 +3744,7 @@ func assetsPublicVendorAceModeSvgJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-svg.js", size: 32087, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-svg.js", size: 32087, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3743,7 +3764,7 @@ func assetsPublicVendorAceModeSwiftJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-swift.js", size: 6939, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-swift.js", size: 6939, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3763,7 +3784,7 @@ func assetsPublicVendorAceModeSwigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-swig.js", size: 31151, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-swig.js", size: 31151, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3783,7 +3804,7 @@ func assetsPublicVendorAceModeTclJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tcl.js", size: 6130, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tcl.js", size: 6130, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3803,7 +3824,7 @@ func assetsPublicVendorAceModeTexJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tex.js", size: 2761, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tex.js", size: 2761, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3823,7 +3844,7 @@ func assetsPublicVendorAceModeTextJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-text.js", size: 0, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-text.js", size: 0, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3843,7 +3864,7 @@ func assetsPublicVendorAceModeTextileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-textile.js", size: 2087, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-textile.js", size: 2087, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3863,7 +3884,7 @@ func assetsPublicVendorAceModeTomlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-toml.js", size: 2204, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-toml.js", size: 2204, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3883,7 +3904,7 @@ func assetsPublicVendorAceModeTsxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tsx.js", size: 20651, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-tsx.js", size: 20651, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3903,7 +3924,7 @@ func assetsPublicVendorAceModeTurtleJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-turtle.js", size: 5034, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-turtle.js", size: 5034, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3923,7 +3944,7 @@ func assetsPublicVendorAceModeTwigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-twig.js", size: 63705, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-twig.js", size: 63705, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3943,7 +3964,7 @@ func assetsPublicVendorAceModeTypescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-typescript.js", size: 20339, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-typescript.js", size: 20339, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3963,7 +3984,7 @@ func assetsPublicVendorAceModeValaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vala.js", size: 16588, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vala.js", size: 16588, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -3983,7 +4004,7 @@ func assetsPublicVendorAceModeVbscriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vbscript.js", size: 5073, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vbscript.js", size: 5073, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4003,7 +4024,7 @@ func assetsPublicVendorAceModeVelocityJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-velocity.js", size: 64810, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-velocity.js", size: 64810, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4023,7 +4044,7 @@ func assetsPublicVendorAceModeVerilogJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-verilog.js", size: 2689, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-verilog.js", size: 2689, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4043,7 +4064,7 @@ func assetsPublicVendorAceModeVhdlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vhdl.js", size: 2088, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-vhdl.js", size: 2088, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4063,7 +4084,7 @@ func assetsPublicVendorAceModeWollokJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-wollok.js", size: 20439, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-wollok.js", size: 20439, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4083,7 +4104,7 @@ func assetsPublicVendorAceModeXmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-xml.js", size: 11805, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-xml.js", size: 11805, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4103,7 +4124,7 @@ func assetsPublicVendorAceModeXqueryJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-xquery.js", size: 230649, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-xquery.js", size: 230649, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4123,7 +4144,7 @@ func assetsPublicVendorAceModeYamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/mode-yaml.js", size: 4357, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/mode-yaml.js", size: 4357, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4143,7 +4164,7 @@ func assetsPublicVendorAceSnippetsAbapJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/abap.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/abap.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4163,7 +4184,7 @@ func assetsPublicVendorAceSnippetsAbcJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/abc.js", size: 947, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/abc.js", size: 947, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4183,7 +4204,7 @@ func assetsPublicVendorAceSnippetsActionscriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/actionscript.js", size: 2973, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/actionscript.js", size: 2973, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4203,7 +4224,7 @@ func assetsPublicVendorAceSnippetsAdaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ada.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ada.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4223,7 +4244,7 @@ func assetsPublicVendorAceSnippetsApache_confJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/apache_conf.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/apache_conf.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4243,7 +4264,7 @@ func assetsPublicVendorAceSnippetsApplescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/applescript.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/applescript.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4263,7 +4284,7 @@ func assetsPublicVendorAceSnippetsAsciidocJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/asciidoc.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/asciidoc.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4283,7 +4304,7 @@ func assetsPublicVendorAceSnippetsAssembly_x86Js() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/assembly_x86.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/assembly_x86.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4303,7 +4324,7 @@ func assetsPublicVendorAceSnippetsAutohotkeyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/autohotkey.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/autohotkey.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4323,7 +4344,7 @@ func assetsPublicVendorAceSnippetsBatchfileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/batchfile.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/batchfile.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4343,7 +4364,7 @@ func assetsPublicVendorAceSnippetsBroJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/bro.js", size: 126, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/bro.js", size: 126, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4363,7 +4384,7 @@ func assetsPublicVendorAceSnippetsC9searchJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/c9search.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/c9search.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4383,7 +4404,7 @@ func assetsPublicVendorAceSnippetsC_cppJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/c_cpp.js", size: 2663, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/c_cpp.js", size: 2663, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4403,7 +4424,7 @@ func assetsPublicVendorAceSnippetsCirruJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/cirru.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/cirru.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4423,7 +4444,7 @@ func assetsPublicVendorAceSnippetsClojureJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/clojure.js", size: 2040, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/clojure.js", size: 2040, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4443,7 +4464,7 @@ func assetsPublicVendorAceSnippetsCobolJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/cobol.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/cobol.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4463,7 +4484,7 @@ func assetsPublicVendorAceSnippetsCoffeeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/coffee.js", size: 2233, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/coffee.js", size: 2233, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4483,7 +4504,7 @@ func assetsPublicVendorAceSnippetsColdfusionJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/coldfusion.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/coldfusion.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4503,7 +4524,7 @@ func assetsPublicVendorAceSnippetsCsharpJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csharp.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csharp.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4523,7 +4544,7 @@ func assetsPublicVendorAceSnippetsCsound_documentJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_document.js", size: 302, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_document.js", size: 302, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4543,7 +4564,7 @@ func assetsPublicVendorAceSnippetsCsound_orchestraJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_orchestra.js", size: 1073, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_orchestra.js", size: 1073, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4563,7 +4584,7 @@ func assetsPublicVendorAceSnippetsCsound_scoreJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_score.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/csound_score.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4583,7 +4604,7 @@ func assetsPublicVendorAceSnippetsCssJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/css.js", size: 19650, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/css.js", size: 19650, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4603,7 +4624,7 @@ func assetsPublicVendorAceSnippetsCurlyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/curly.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/curly.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4623,7 +4644,7 @@ func assetsPublicVendorAceSnippetsDJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/d.js", size: 125, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/d.js", size: 125, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4643,7 +4664,7 @@ func assetsPublicVendorAceSnippetsDartJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dart.js", size: 1319, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dart.js", size: 1319, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4663,7 +4684,7 @@ func assetsPublicVendorAceSnippetsDiffJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/diff.js", size: 551, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/diff.js", size: 551, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4683,7 +4704,7 @@ func assetsPublicVendorAceSnippetsDjangoJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/django.js", size: 4000, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/django.js", size: 4000, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4703,7 +4724,7 @@ func assetsPublicVendorAceSnippetsDockerfileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dockerfile.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dockerfile.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4723,7 +4744,7 @@ func assetsPublicVendorAceSnippetsDotJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dot.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/dot.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4743,7 +4764,7 @@ func assetsPublicVendorAceSnippetsDroolsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/drools.js", size: 370, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/drools.js", size: 370, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4763,7 +4784,7 @@ func assetsPublicVendorAceSnippetsEiffelJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/eiffel.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/eiffel.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4783,7 +4804,7 @@ func assetsPublicVendorAceSnippetsEjsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ejs.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ejs.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4803,7 +4824,7 @@ func assetsPublicVendorAceSnippetsElixirJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/elixir.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/elixir.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4823,7 +4844,7 @@ func assetsPublicVendorAceSnippetsElmJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/elm.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/elm.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4843,7 +4864,7 @@ func assetsPublicVendorAceSnippetsErlangJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/erlang.js", size: 3574, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/erlang.js", size: 3574, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4863,7 +4884,7 @@ func assetsPublicVendorAceSnippetsForthJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/forth.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/forth.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4883,7 +4904,7 @@ func assetsPublicVendorAceSnippetsFortranJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/fortran.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/fortran.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4903,7 +4924,7 @@ func assetsPublicVendorAceSnippetsFtlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ftl.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ftl.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4923,7 +4944,7 @@ func assetsPublicVendorAceSnippetsGcodeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gcode.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gcode.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4943,7 +4964,7 @@ func assetsPublicVendorAceSnippetsGherkinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gherkin.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gherkin.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4963,7 +4984,7 @@ func assetsPublicVendorAceSnippetsGitignoreJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gitignore.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gitignore.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -4983,7 +5004,7 @@ func assetsPublicVendorAceSnippetsGlslJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/glsl.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/glsl.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5003,7 +5024,7 @@ func assetsPublicVendorAceSnippetsGobstonesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gobstones.js", size: 607, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/gobstones.js", size: 607, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5023,7 +5044,7 @@ func assetsPublicVendorAceSnippetsGolangJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/golang.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/golang.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5043,7 +5064,7 @@ func assetsPublicVendorAceSnippetsGraphqlschemaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/graphqlschema.js", size: 662, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/graphqlschema.js", size: 662, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5063,7 +5084,7 @@ func assetsPublicVendorAceSnippetsGroovyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/groovy.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/groovy.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5083,7 +5104,7 @@ func assetsPublicVendorAceSnippetsHamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haml.js", size: 448, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haml.js", size: 448, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5103,7 +5124,7 @@ func assetsPublicVendorAceSnippetsHandlebarsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/handlebars.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/handlebars.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5123,7 +5144,7 @@ func assetsPublicVendorAceSnippetsHaskellJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haskell.js", size: 1975, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haskell.js", size: 1975, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5143,7 +5164,7 @@ func assetsPublicVendorAceSnippetsHaskell_cabalJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haskell_cabal.js", size: 149, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haskell_cabal.js", size: 149, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5163,7 +5184,7 @@ func assetsPublicVendorAceSnippetsHaxeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haxe.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/haxe.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5183,7 +5204,7 @@ func assetsPublicVendorAceSnippetsHjsonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/hjson.js", size: 128, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/hjson.js", size: 128, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5203,7 +5224,7 @@ func assetsPublicVendorAceSnippetsHtmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html.js", size: 19148, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html.js", size: 19148, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5223,7 +5244,7 @@ func assetsPublicVendorAceSnippetsHtml_elixirJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html_elixir.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html_elixir.js", size: 145, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5243,7 +5264,7 @@ func assetsPublicVendorAceSnippetsHtml_rubyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html_ruby.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/html_ruby.js", size: 141, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5263,7 +5284,7 @@ func assetsPublicVendorAceSnippetsIniJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ini.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ini.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5283,7 +5304,7 @@ func assetsPublicVendorAceSnippetsIoJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/io.js", size: 1219, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/io.js", size: 1219, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5303,7 +5324,7 @@ func assetsPublicVendorAceSnippetsJackJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jack.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jack.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5323,7 +5344,7 @@ func assetsPublicVendorAceSnippetsJadeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jade.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jade.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5343,7 +5364,7 @@ func assetsPublicVendorAceSnippetsJavaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/java.js", size: 4322, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/java.js", size: 4322, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5363,7 +5384,7 @@ func assetsPublicVendorAceSnippetsJavascriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/javascript.js", size: 3840, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/javascript.js", size: 3840, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5383,7 +5404,7 @@ func assetsPublicVendorAceSnippetsJsonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/json.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/json.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5403,7 +5424,7 @@ func assetsPublicVendorAceSnippetsJsoniqJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsoniq.js", size: 1716, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsoniq.js", size: 1716, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5423,7 +5444,7 @@ func assetsPublicVendorAceSnippetsJspJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsp.js", size: 2778, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsp.js", size: 2778, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5443,7 +5464,7 @@ func assetsPublicVendorAceSnippetsJssmJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jssm.js", size: 127, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jssm.js", size: 127, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5463,7 +5484,7 @@ func assetsPublicVendorAceSnippetsJsxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsx.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/jsx.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5483,7 +5504,7 @@ func assetsPublicVendorAceSnippetsJuliaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/julia.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/julia.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5503,7 +5524,7 @@ func assetsPublicVendorAceSnippetsKotlinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/kotlin.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/kotlin.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5523,7 +5544,7 @@ func assetsPublicVendorAceSnippetsLatexJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/latex.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/latex.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5543,7 +5564,7 @@ func assetsPublicVendorAceSnippetsLeanJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lean.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lean.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5563,7 +5584,7 @@ func assetsPublicVendorAceSnippetsLessJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/less.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/less.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5583,7 +5604,7 @@ func assetsPublicVendorAceSnippetsLiquidJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/liquid.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/liquid.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5603,7 +5624,7 @@ func assetsPublicVendorAceSnippetsLispJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lisp.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lisp.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5623,7 +5644,7 @@ func assetsPublicVendorAceSnippetsLive_scriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/live_script.js", size: 134, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/live_script.js", size: 134, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5643,7 +5664,7 @@ func assetsPublicVendorAceSnippetsLivescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/livescript.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/livescript.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5663,7 +5684,7 @@ func assetsPublicVendorAceSnippetsLogiqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/logiql.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/logiql.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5683,7 +5704,7 @@ func assetsPublicVendorAceSnippetsLslJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lsl.js", size: 35423, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lsl.js", size: 35423, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5703,7 +5724,7 @@ func assetsPublicVendorAceSnippetsLuaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lua.js", size: 508, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lua.js", size: 508, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5723,7 +5744,7 @@ func assetsPublicVendorAceSnippetsLuapageJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/luapage.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/luapage.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5743,7 +5764,7 @@ func assetsPublicVendorAceSnippetsLuceneJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lucene.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/lucene.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5763,7 +5784,7 @@ func assetsPublicVendorAceSnippetsMakefileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/makefile.js", size: 198, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/makefile.js", size: 198, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5783,7 +5804,7 @@ func assetsPublicVendorAceSnippetsMarkdownJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/markdown.js", size: 1973, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/markdown.js", size: 1973, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5803,7 +5824,7 @@ func assetsPublicVendorAceSnippetsMaskJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mask.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mask.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5823,7 +5844,7 @@ func assetsPublicVendorAceSnippetsMatlabJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/matlab.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/matlab.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5843,7 +5864,7 @@ func assetsPublicVendorAceSnippetsMazeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/maze.js", size: 270, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/maze.js", size: 270, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5863,7 +5884,7 @@ func assetsPublicVendorAceSnippetsMelJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mel.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mel.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5883,7 +5904,7 @@ func assetsPublicVendorAceSnippetsMips_assemblerJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mips_assembler.js", size: 151, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mips_assembler.js", size: 151, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5903,7 +5924,7 @@ func assetsPublicVendorAceSnippetsMipsassemblerJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mipsassembler.js", size: 136, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mipsassembler.js", size: 136, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5923,7 +5944,7 @@ func assetsPublicVendorAceSnippetsMushcodeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mushcode.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mushcode.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5943,7 +5964,7 @@ func assetsPublicVendorAceSnippetsMysqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mysql.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/mysql.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5963,7 +5984,7 @@ func assetsPublicVendorAceSnippetsNixJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/nix.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/nix.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -5983,7 +6004,7 @@ func assetsPublicVendorAceSnippetsNsisJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/nsis.js", size: 127, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/nsis.js", size: 127, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6003,7 +6024,7 @@ func assetsPublicVendorAceSnippetsObjectivecJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/objectivec.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/objectivec.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6023,7 +6044,7 @@ func assetsPublicVendorAceSnippetsOcamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ocaml.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ocaml.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6043,7 +6064,7 @@ func assetsPublicVendorAceSnippetsPascalJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pascal.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pascal.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6063,7 +6084,7 @@ func assetsPublicVendorAceSnippetsPerlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/perl.js", size: 5513, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/perl.js", size: 5513, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6083,7 +6104,7 @@ func assetsPublicVendorAceSnippetsPgsqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pgsql.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pgsql.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6103,7 +6124,7 @@ func assetsPublicVendorAceSnippetsPhpJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/php.js", size: 6763, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/php.js", size: 6763, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6123,7 +6144,7 @@ func assetsPublicVendorAceSnippetsPigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pig.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/pig.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6143,7 +6164,7 @@ func assetsPublicVendorAceSnippetsPlain_textJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/plain_text.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/plain_text.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6163,7 +6184,7 @@ func assetsPublicVendorAceSnippetsPowershellJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/powershell.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/powershell.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6183,7 +6204,7 @@ func assetsPublicVendorAceSnippetsPraatJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/praat.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/praat.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6203,7 +6224,7 @@ func assetsPublicVendorAceSnippetsPrologJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/prolog.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/prolog.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6223,7 +6244,7 @@ func assetsPublicVendorAceSnippetsPropertiesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/properties.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/properties.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6243,7 +6264,7 @@ func assetsPublicVendorAceSnippetsProtobufJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/protobuf.js", size: 132, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/protobuf.js", size: 132, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6263,7 +6284,7 @@ func assetsPublicVendorAceSnippetsPythonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/python.js", size: 3672, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/python.js", size: 3672, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6283,7 +6304,7 @@ func assetsPublicVendorAceSnippetsRJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/r.js", size: 2630, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/r.js", size: 2630, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6303,7 +6324,7 @@ func assetsPublicVendorAceSnippetsRazorJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/razor.js", size: 164, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/razor.js", size: 164, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6323,7 +6344,7 @@ func assetsPublicVendorAceSnippetsRdocJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rdoc.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rdoc.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6343,7 +6364,7 @@ func assetsPublicVendorAceSnippetsRedJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/red.js", size: 123, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/red.js", size: 123, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6363,7 +6384,7 @@ func assetsPublicVendorAceSnippetsRhtmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rhtml.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rhtml.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6383,7 +6404,7 @@ func assetsPublicVendorAceSnippetsRstJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rst.js", size: 442, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rst.js", size: 442, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6403,7 +6424,7 @@ func assetsPublicVendorAceSnippetsRubyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ruby.js", size: 21279, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/ruby.js", size: 21279, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6423,7 +6444,7 @@ func assetsPublicVendorAceSnippetsRustJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rust.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/rust.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6443,7 +6464,7 @@ func assetsPublicVendorAceSnippetsSassJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sass.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sass.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6463,7 +6484,7 @@ func assetsPublicVendorAceSnippetsScadJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scad.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scad.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6483,7 +6504,7 @@ func assetsPublicVendorAceSnippetsScalaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scala.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scala.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6503,7 +6524,7 @@ func assetsPublicVendorAceSnippetsSchemeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scheme.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/scheme.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6523,7 +6544,7 @@ func assetsPublicVendorAceSnippetsShJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sh.js", size: 2053, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sh.js", size: 2053, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6543,7 +6564,7 @@ func assetsPublicVendorAceSnippetsSjsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sjs.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sjs.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6563,7 +6584,7 @@ func assetsPublicVendorAceSnippetsSmartyJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/smarty.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/smarty.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6583,7 +6604,7 @@ func assetsPublicVendorAceSnippetsSnippetsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/snippets.js", size: 297, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/snippets.js", size: 297, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6603,7 +6624,7 @@ func assetsPublicVendorAceSnippetsSoy_templateJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/soy_template.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/soy_template.js", size: 147, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6623,7 +6644,7 @@ func assetsPublicVendorAceSnippetsSpaceJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/space.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/space.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6643,7 +6664,7 @@ func assetsPublicVendorAceSnippetsSparqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sparql.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sparql.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6663,7 +6684,7 @@ func assetsPublicVendorAceSnippetsSqlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sql.js", size: 942, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sql.js", size: 942, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6683,7 +6704,7 @@ func assetsPublicVendorAceSnippetsSqlserverJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sqlserver.js", size: 2139, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/sqlserver.js", size: 2139, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6703,7 +6724,7 @@ func assetsPublicVendorAceSnippetsStylusJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/stylus.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/stylus.js", size: 135, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6723,7 +6744,7 @@ func assetsPublicVendorAceSnippetsSvgJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/svg.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/svg.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6743,7 +6764,7 @@ func assetsPublicVendorAceSnippetsSwiftJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/swift.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/swift.js", size: 133, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6763,7 +6784,7 @@ func assetsPublicVendorAceSnippetsSwigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/swig.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/swig.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6783,7 +6804,7 @@ func assetsPublicVendorAceSnippetsTclJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tcl.js", size: 1690, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tcl.js", size: 1690, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6803,7 +6824,7 @@ func assetsPublicVendorAceSnippetsTexJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tex.js", size: 3636, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tex.js", size: 3636, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6823,7 +6844,7 @@ func assetsPublicVendorAceSnippetsTextJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/text.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/text.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6843,7 +6864,7 @@ func assetsPublicVendorAceSnippetsTextileJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/textile.js", size: 540, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/textile.js", size: 540, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6863,7 +6884,7 @@ func assetsPublicVendorAceSnippetsTomlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/toml.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/toml.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6883,7 +6904,7 @@ func assetsPublicVendorAceSnippetsTsxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tsx.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/tsx.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6903,7 +6924,7 @@ func assetsPublicVendorAceSnippetsTurtleJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/turtle.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/turtle.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6923,7 +6944,7 @@ func assetsPublicVendorAceSnippetsTwigJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/twig.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/twig.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6943,7 +6964,7 @@ func assetsPublicVendorAceSnippetsTypescriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/typescript.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/typescript.js", size: 143, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6963,7 +6984,7 @@ func assetsPublicVendorAceSnippetsValaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vala.js", size: 3127, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vala.js", size: 3127, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -6983,7 +7004,7 @@ func assetsPublicVendorAceSnippetsVbscriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vbscript.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vbscript.js", size: 139, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7003,7 +7024,7 @@ func assetsPublicVendorAceSnippetsVelocityJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/velocity.js", size: 651, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/velocity.js", size: 651, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7023,7 +7044,7 @@ func assetsPublicVendorAceSnippetsVerilogJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/verilog.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/verilog.js", size: 137, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7043,7 +7064,7 @@ func assetsPublicVendorAceSnippetsVhdlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vhdl.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/vhdl.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7063,7 +7084,7 @@ func assetsPublicVendorAceSnippetsWollokJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/wollok.js", size: 1263, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/wollok.js", size: 1263, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7083,7 +7104,7 @@ func assetsPublicVendorAceSnippetsXmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/xml.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/xml.js", size: 129, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7103,7 +7124,7 @@ func assetsPublicVendorAceSnippetsXqueryJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/xquery.js", size: 1716, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/xquery.js", size: 1716, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7123,7 +7144,7 @@ func assetsPublicVendorAceSnippetsYamlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/yaml.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/snippets/yaml.js", size: 131, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7143,7 +7164,7 @@ func assetsPublicVendorAceThemeAmbianceJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-ambiance.js", size: 27779, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-ambiance.js", size: 27779, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7163,7 +7184,7 @@ func assetsPublicVendorAceThemeChaosJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-chaos.js", size: 2842, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-chaos.js", size: 2842, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7183,7 +7204,7 @@ func assetsPublicVendorAceThemeChromeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-chrome.js", size: 2712, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-chrome.js", size: 2712, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7203,7 +7224,7 @@ func assetsPublicVendorAceThemeCloudsJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-clouds.js", size: 2081, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-clouds.js", size: 2081, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7223,7 +7244,7 @@ func assetsPublicVendorAceThemeClouds_midnightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-clouds_midnight.js", size: 2432, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-clouds_midnight.js", size: 2432, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7243,7 +7264,7 @@ func assetsPublicVendorAceThemeCobaltJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-cobalt.js", size: 2353, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-cobalt.js", size: 2353, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7263,7 +7284,7 @@ func assetsPublicVendorAceThemeCrimson_editorJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-crimson_editor.js", size: 2812, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-crimson_editor.js", size: 2812, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7283,7 +7304,7 @@ func assetsPublicVendorAceThemeDawnJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dawn.js", size: 2240, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dawn.js", size: 2240, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7303,7 +7324,7 @@ func assetsPublicVendorAceThemeDraculaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dracula.js", size: 2292, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dracula.js", size: 2292, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7323,7 +7344,7 @@ func assetsPublicVendorAceThemeDreamweaverJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dreamweaver.js", size: 3138, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-dreamweaver.js", size: 3138, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7343,7 +7364,7 @@ func assetsPublicVendorAceThemeEclipseJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-eclipse.js", size: 2125, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-eclipse.js", size: 2125, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7363,7 +7384,7 @@ func assetsPublicVendorAceThemeGithubJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-github.js", size: 2176, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-github.js", size: 2176, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7383,7 +7404,7 @@ func assetsPublicVendorAceThemeGobJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-gob.js", size: 2381, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-gob.js", size: 2381, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7403,7 +7424,7 @@ func assetsPublicVendorAceThemeGruvboxJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-gruvbox.js", size: 1667, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-gruvbox.js", size: 1667, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7423,7 +7444,7 @@ func assetsPublicVendorAceThemeIdle_fingersJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-idle_fingers.js", size: 2248, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-idle_fingers.js", size: 2248, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7443,7 +7464,7 @@ func assetsPublicVendorAceThemeIplasticJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-iplastic.js", size: 6476, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-iplastic.js", size: 6476, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7463,7 +7484,7 @@ func assetsPublicVendorAceThemeKatzenmilchJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-katzenmilch.js", size: 3126, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-katzenmilch.js", size: 3126, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7483,7 +7504,7 @@ func assetsPublicVendorAceThemeKr_themeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-kr_theme.js", size: 2296, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-kr_theme.js", size: 2296, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7503,7 +7524,7 @@ func assetsPublicVendorAceThemeKuroirJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-kuroir.js", size: 2054, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-kuroir.js", size: 2054, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7523,7 +7544,7 @@ func assetsPublicVendorAceThemeMerbivoreJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-merbivore.js", size: 2236, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-merbivore.js", size: 2236, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7543,7 +7564,7 @@ func assetsPublicVendorAceThemeMerbivore_softJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-merbivore_soft.js", size: 2448, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-merbivore_soft.js", size: 2448, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7563,7 +7584,7 @@ func assetsPublicVendorAceThemeMono_industrialJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-mono_industrial.js", size: 2791, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-mono_industrial.js", size: 2791, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7583,7 +7604,7 @@ func assetsPublicVendorAceThemeMonokaiJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-monokai.js", size: 2375, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-monokai.js", size: 2375, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7603,7 +7624,7 @@ func assetsPublicVendorAceThemePastel_on_darkJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-pastel_on_dark.js", size: 2633, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-pastel_on_dark.js", size: 2633, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7623,7 +7644,7 @@ func assetsPublicVendorAceThemeSolarized_darkJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-solarized_dark.js", size: 2312, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-solarized_dark.js", size: 2312, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7643,7 +7664,7 @@ func assetsPublicVendorAceThemeSolarized_lightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-solarized_light.js", size: 2360, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-solarized_light.js", size: 2360, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7663,7 +7684,7 @@ func assetsPublicVendorAceThemeSqlserverJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-sqlserver.js", size: 2892, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-sqlserver.js", size: 2892, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7683,7 +7704,7 @@ func assetsPublicVendorAceThemeTerminalJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-terminal.js", size: 2913, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-terminal.js", size: 2913, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7703,7 +7724,7 @@ func assetsPublicVendorAceThemeTextmateJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-textmate.js", size: 2585, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-textmate.js", size: 2585, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7723,7 +7744,7 @@ func assetsPublicVendorAceThemeTomorrowJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow.js", size: 2556, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow.js", size: 2556, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7743,7 +7764,7 @@ func assetsPublicVendorAceThemeTomorrow_nightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night.js", size: 2820, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night.js", size: 2820, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7763,7 +7784,7 @@ func assetsPublicVendorAceThemeTomorrow_night_blueJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_blue.js", size: 3031, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_blue.js", size: 3031, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7783,7 +7804,7 @@ func assetsPublicVendorAceThemeTomorrow_night_brightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_bright.js", size: 3496, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_bright.js", size: 3496, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7803,7 +7824,7 @@ func assetsPublicVendorAceThemeTomorrow_night_eightiesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_eighties.js", size: 3221, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-tomorrow_night_eighties.js", size: 3221, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7823,7 +7844,7 @@ func assetsPublicVendorAceThemeTwilightJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-twilight.js", size: 2499, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-twilight.js", size: 2499, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7843,7 +7864,7 @@ func assetsPublicVendorAceThemeVibrant_inkJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-vibrant_ink.js", size: 2204, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-vibrant_ink.js", size: 2204, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7863,7 +7884,7 @@ func assetsPublicVendorAceThemeXcodeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/theme-xcode.js", size: 1918, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/theme-xcode.js", size: 1918, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7883,7 +7904,7 @@ func assetsPublicVendorAceWorkerCoffeeJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-coffee.js", size: 190653, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-coffee.js", size: 190653, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7903,7 +7924,7 @@ func assetsPublicVendorAceWorkerCssJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-css.js", size: 140901, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-css.js", size: 140901, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7923,7 +7944,7 @@ func assetsPublicVendorAceWorkerHtmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-html.js", size: 217400, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-html.js", size: 217400, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7943,7 +7964,7 @@ func assetsPublicVendorAceWorkerJavascriptJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-javascript.js", size: 164517, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-javascript.js", size: 164517, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7963,7 +7984,7 @@ func assetsPublicVendorAceWorkerJsonJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-json.js", size: 32910, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-json.js", size: 32910, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -7983,7 +8004,7 @@ func assetsPublicVendorAceWorkerLuaJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-lua.js", size: 47096, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-lua.js", size: 47096, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8003,7 +8024,7 @@ func assetsPublicVendorAceWorkerPhpJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-php.js", size: 78296, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-php.js", size: 78296, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8023,7 +8044,7 @@ func assetsPublicVendorAceWorkerXmlJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/ace/worker-xml.js", size: 55540, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/ace/worker-xml.js", size: 55540, mode: os.FileMode(493), modTime: time.Unix(1510703303, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8043,7 +8064,7 @@ func assetsPublicVendorBootstrapBootstrapMinCss() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/bootstrap/bootstrap.min.css", size: 127343, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/bootstrap/bootstrap.min.css", size: 127343, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8063,7 +8084,7 @@ func assetsPublicVendorBootstrapBootstrapMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/bootstrap/bootstrap.min.js", size: 50564, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/bootstrap/bootstrap.min.js", size: 50564, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8083,7 +8104,7 @@ func assetsPublicVendorDropzoneDropzoneCss() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/dropzone/dropzone.css", size: 12587, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/dropzone/dropzone.css", size: 12587, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8103,7 +8124,7 @@ func assetsPublicVendorDropzoneDropzoneJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/dropzone/dropzone.js", size: 120533, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/dropzone/dropzone.js", size: 120533, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8123,7 +8144,7 @@ func assetsPublicVendorFuzzysortFuzzysortJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/fuzzysort/fuzzysort.js", size: 23254, mode: os.FileMode(420), modTime: time.Unix(1515280641, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/fuzzysort/fuzzysort.js", size: 23254, mode: os.FileMode(420), modTime: time.Unix(1515798920, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8143,7 +8164,7 @@ func assetsPublicVendorJqueryJqueryMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/jquery/jquery.min.js", size: 86659, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/jquery/jquery.min.js", size: 86659, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8163,7 +8184,7 @@ func assetsPublicVendorJsrenderJsrenderMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/jsrender/jsrender.min.js", size: 21998, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/jsrender/jsrender.min.js", size: 21998, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8183,7 +8204,7 @@ func assetsPublicVendorMomentjsMomentWithLocalesJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment-with-locales.js", size: 463697, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment-with-locales.js", size: 463697, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8203,7 +8224,7 @@ func assetsPublicVendorMomentjsMomentWithLocalesMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment-with-locales.min.js", size: 308044, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment-with-locales.min.js", size: 308044, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8223,7 +8244,7 @@ func assetsPublicVendorMomentjsMomentMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment.min.js", size: 51265, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/momentjs/moment.min.js", size: 51265, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8243,7 +8264,7 @@ func assetsPublicVendorNotieNotieMinCss() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/notie/notie.min.css", size: 1781, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/notie/notie.min.css", size: 1781, mode: os.FileMode(493), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8263,7 +8284,7 @@ func assetsPublicVendorNotieNotieMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/notie/notie.min.js", size: 14941, mode: os.FileMode(493), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/notie/notie.min.js", size: 14941, mode: os.FileMode(493), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8283,7 +8304,7 @@ func assetsPublicVendorPopperPopperMinJs() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/public/vendor/popper/popper.min.js", size: 19236, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/public/vendor/popper/popper.min.js", size: 19236, mode: os.FileMode(420), modTime: time.Unix(1510362553, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8303,7 +8324,7 @@ func assetsViewsLayoutHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/layout.html", size: 4950, mode: os.FileMode(420), modTime: time.Unix(1515192907, 0)}
+ info := bindataFileInfo{name: "assets/views/layout.html", size: 4950, mode: os.FileMode(420), modTime: time.Unix(1515798920, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8323,7 +8344,7 @@ func assetsViewsLogsLogsHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/logs/logs.html", size: 2373, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/views/logs/logs.html", size: 2373, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8343,7 +8364,7 @@ func assetsViewsPipelines_pipelineactionsHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/_pipelineactions.html", size: 1274, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/_pipelineactions.html", size: 1274, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8363,7 +8384,7 @@ func assetsViewsPipelines_sidebarHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/_sidebar.html", size: 2659, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/_sidebar.html", size: 2659, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8383,7 +8404,7 @@ func assetsViewsPipelinesAssetsEditHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/assets/edit.html", size: 5604, mode: os.FileMode(420), modTime: time.Unix(1514502403, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/assets/edit.html", size: 5604, mode: os.FileMode(420), modTime: time.Unix(1514077070, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8403,7 +8424,7 @@ func assetsViewsPipelinesEditHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/edit.html", size: 1285, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/edit.html", size: 1285, mode: os.FileMode(420), modTime: time.Unix(1510526816, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8423,7 +8444,7 @@ func assetsViewsPipelinesIndexHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/index.html", size: 1768, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/index.html", size: 1768, mode: os.FileMode(420), modTime: time.Unix(1511336721, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8443,7 +8464,7 @@ func assetsViewsPipelinesNewHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/pipelines/new.html", size: 1030, mode: os.FileMode(420), modTime: time.Unix(1514502261, 0)}
+ info := bindataFileInfo{name: "assets/views/pipelines/new.html", size: 1030, mode: os.FileMode(420), modTime: time.Unix(1510527443, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8463,7 +8484,7 @@ func assetsViewsPlaygrounds_sidebarHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/playgrounds/_sidebar.html", size: 2132, mode: os.FileMode(420), modTime: time.Unix(1515356674, 0)}
+ info := bindataFileInfo{name: "assets/views/playgrounds/_sidebar.html", size: 2132, mode: os.FileMode(420), modTime: time.Unix(1515798920, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8483,7 +8504,7 @@ func assetsViewsPlaygroundsPlayHtml() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "assets/views/playgrounds/play.html", size: 7506, mode: os.FileMode(420), modTime: time.Unix(1515286468, 0)}
+ info := bindataFileInfo{name: "assets/views/playgrounds/play.html", size: 7506, mode: os.FileMode(420), modTime: time.Unix(1515798920, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -8541,6 +8562,7 @@ func AssetNames() []string {
// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
"assets/public/css/application.css": assetsPublicCssApplicationCss,
+ "assets/public/css/application.css.map": assetsPublicCssApplicationCssMap,
"assets/public/images/favicon.png": assetsPublicImagesFaviconPng,
"assets/public/images/open-fan.png": assetsPublicImagesOpenFanPng,
"assets/public/images/simple.conf": assetsPublicImagesSimpleConf,
@@ -8987,6 +9009,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"public": &bintree{nil, map[string]*bintree{
"css": &bintree{nil, map[string]*bintree{
"application.css": &bintree{assetsPublicCssApplicationCss, map[string]*bintree{}},
+ "application.css.map": &bintree{assetsPublicCssApplicationCssMap, map[string]*bintree{}},
}},
"images": &bintree{nil, map[string]*bintree{
"favicon.png": &bintree{assetsPublicImagesFaviconPng, map[string]*bintree{}},
diff --git a/docs/content/filters/pop3.md b/docs/content/filters/pop3.md
new file mode 100644
index 00000000..258eb8fe
--- /dev/null
+++ b/docs/content/filters/pop3.md
@@ -0,0 +1,99 @@
++++
+title = "pop3"
+description = "Read mail from a pop3 server"
+weight = 10
++++
+
+Used on filter section, you may omit the `interval` option to scan for new emails only when a message comes from input.
+
+{{% processordetails pop3processor %}}
+
+
+## Produced event examples
+{{%expand%}}
+```
+{
+ "delivered-to": {
+ "bitfan@free.fr": "",
+ },
+ "cc": {
+ "valere.jeantet+cc@gmail.com": "",
+ },
+ "from": {
+ "valere.jeantet@gmail.com": "Valere Jeantet",
+ },
+ "@timestamp": 2018-01-14 00:22:57 Local,
+ "uid": "0acv1f1810845a5aa63e020051224870",
+ "subject": "MSGBI",
+ "html": "\r\n",
+ "return-path": {
+ "valere.jeantet@gmail.com": "",
+ },
+ "to": {
+ "bitfan@free.fr": "bitfan@free.fr",
+ "valere.jeantet@gmail.com": "Valere Jeantet",
+ },
+ "message": "[image: Capture d’écran 2018-01-12 à 12.11.52.png]\r\n",
+ "headers": {
+ "Return-Path": []string{
+ "",
+ },
+ "Dkim-Signature": []string{
+ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=XXX; h=mime-version:from:date:message-id:subject:to:cc; bh=ODEQpVa/5Qcw==",
+ },
+ "X-Received": []string{
+ "by 10.XXX.55.XX with SMTP id z37mr30058367uad.XXX.1515881XXX; Sat, 13 Jan 2018 14:11:25 -0800 (PST)",
+ },
+ "Content-Type": []string{
+ "multipart/mixed; boundary=\"001a11409cc4725d6c0562afa937\"",
+ },
+ "Received": []string{
+ "from mail-SSS-f17X.google.com (mx25XXX.priv.proxad.net [172.XXX.XXX.95]) by SSSS-g26.priv.proxad.net (Postfix) with ESMTP id 1C055A00634 for ; Sat, 13 Jan 2018 23:11:27 +0100 (CET)",
+ "from mail-ua0-XXXX.google.com ([209.XXX.XXX.179]) by mx1-XXX.XXX.fr (MXproxy) with ESMTPS for bitfan@free.fr (version=TLSv1/SSLv3 cipher=AES128-XXX-SHA256 bits=128); Sat, 13 Jan 2018 23:11:28 +0100 (CET)",
+ "by mail-ua0-SSSS.google.com with SMTP id x10so6315721ual.8 for ; Sat, 13 Jan 2018 14:11:26 -0800 (PST)",
+ },
+ "X-Gm-Message-State": []string{
+ "AKwxytfekxmrRWAc21hNb05lq kKc+spWodYAlFaCMPvuFfWOAjybzg==",
+ },
+ "Mime-Version": []string{
+ "1.0",
+ },
+ "From": []string{
+ "Valere Jeantet ",
+ },
+ "Message-Id": []string{
+ "",
+ },
+ "To": []string{
+ "\"bitfan@free.fr\" , Valere Jeantet ",
+ },
+ "Delivered-To": []string{
+ "bitfan@free.fr",
+ },
+ "X-Proxad-Sc": []string{
+ "state=HAM score=0",
+ },
+ "X-Proxad-Cause": []string{
+ "(null)",
+ },
+ "X-Google-Smtp-Source": []string{
+ "ACJfBosF8RqtE9BCxZvUZbC0WnryH5nlfIn12xmVhWoP3KazNLz4RfB82gEdZofHxtKo=",
+ },
+ "Subject": []string{
+ "Message from me",
+ },
+ "X-Google-Dkim-Signature": []string{
+ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20561025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=ODEQpVa/ym6uT9lFT7X pdvw==",
+ },
+ "Date": []string{
+ "Sat, 13 Jan 2018 22:11:13 +0000",
+ },
+ "Cc": []string{
+ "valere.jeantet+cc@gmail.com",
+ },
+ },
+ "text": "[image: Capture d’écran 2018-01-12 à 12.11.52.png]\r\n",
+ "sentAt": 2018-01-13 22:11:13 ,
+}
+```
+{{%expand%}}
\ No newline at end of file
diff --git a/docs/content/inputs/pop3.md b/docs/content/inputs/pop3.md
new file mode 100644
index 00000000..9d30cbe9
--- /dev/null
+++ b/docs/content/inputs/pop3.md
@@ -0,0 +1,96 @@
++++
+title = "pop3"
+description = "Read mail from a pop3 server"
+weight = 10
++++
+
+{{% processordetails pop3processor %}}
+
+## Produced event examples
+{{%expand%}}
+```
+{
+ "delivered-to": {
+ "bitfan@free.fr": "",
+ },
+ "cc": {
+ "valere.jeantet+cc@gmail.com": "",
+ },
+ "from": {
+ "valere.jeantet@gmail.com": "Valere Jeantet",
+ },
+ "@timestamp": 2018-01-14 00:22:57 Local,
+ "uid": "0acv1f1810845a5aa63e020051224870",
+ "subject": "MSGBI",
+ "html": "\r\n",
+ "return-path": {
+ "valere.jeantet@gmail.com": "",
+ },
+ "to": {
+ "bitfan@free.fr": "bitfan@free.fr",
+ "valere.jeantet@gmail.com": "Valere Jeantet",
+ },
+ "message": "[image: Capture d’écran 2018-01-12 à 12.11.52.png]\r\n",
+ "headers": {
+ "Return-Path": []string{
+ "",
+ },
+ "Dkim-Signature": []string{
+ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=XXX; h=mime-version:from:date:message-id:subject:to:cc; bh=ODEQpVa/5Qcw==",
+ },
+ "X-Received": []string{
+ "by 10.XXX.55.XX with SMTP id z37mr30058367uad.XXX.1515881XXX; Sat, 13 Jan 2018 14:11:25 -0800 (PST)",
+ },
+ "Content-Type": []string{
+ "multipart/mixed; boundary=\"001a11409cc4725d6c0562afa937\"",
+ },
+ "Received": []string{
+ "from mail-SSS-f17X.google.com (mx25XXX.priv.proxad.net [172.XXX.XXX.95]) by SSSS-g26.priv.proxad.net (Postfix) with ESMTP id 1C055A00634 for ; Sat, 13 Jan 2018 23:11:27 +0100 (CET)",
+ "from mail-ua0-XXXX.google.com ([209.XXX.XXX.179]) by mx1-XXX.XXX.fr (MXproxy) with ESMTPS for bitfan@free.fr (version=TLSv1/SSLv3 cipher=AES128-XXX-SHA256 bits=128); Sat, 13 Jan 2018 23:11:28 +0100 (CET)",
+ "by mail-ua0-SSSS.google.com with SMTP id x10so6315721ual.8 for ; Sat, 13 Jan 2018 14:11:26 -0800 (PST)",
+ },
+ "X-Gm-Message-State": []string{
+ "AKwxytfekxmrRWAc21hNb05lq kKc+spWodYAlFaCMPvuFfWOAjybzg==",
+ },
+ "Mime-Version": []string{
+ "1.0",
+ },
+ "From": []string{
+ "Valere Jeantet ",
+ },
+ "Message-Id": []string{
+ "",
+ },
+ "To": []string{
+ "\"bitfan@free.fr\" , Valere Jeantet ",
+ },
+ "Delivered-To": []string{
+ "bitfan@free.fr",
+ },
+ "X-Proxad-Sc": []string{
+ "state=HAM score=0",
+ },
+ "X-Proxad-Cause": []string{
+ "(null)",
+ },
+ "X-Google-Smtp-Source": []string{
+ "ACJfBosF8RqtE9BCxZvUZbC0WnryH5nlfIn12xmVhWoP3KazNLz4RfB82gEdZofHxtKo=",
+ },
+ "Subject": []string{
+ "Message from me",
+ },
+ "X-Google-Dkim-Signature": []string{
+ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20561025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=ODEQpVa/ym6uT9lFT7X pdvw==",
+ },
+ "Date": []string{
+ "Sat, 13 Jan 2018 22:11:13 +0000",
+ },
+ "Cc": []string{
+ "valere.jeantet+cc@gmail.com",
+ },
+ },
+ "text": "[image: Capture d’écran 2018-01-12 à 12.11.52.png]\r\n",
+ "sentAt": 2018-01-13 22:11:13 ,
+}
+```
+{{%expand%}}
\ No newline at end of file
diff --git a/docs/content/inputs/websocket.md b/docs/content/inputs/websocket.md
new file mode 100644
index 00000000..05df2c52
--- /dev/null
+++ b/docs/content/inputs/websocket.md
@@ -0,0 +1,7 @@
++++
+title = "websocket"
+description = ""
+weight = 10
++++
+
+{{% processordetails websocketinput %}}
\ No newline at end of file
diff --git a/docs/content/outputs/websocket.md b/docs/content/outputs/websocket.md
new file mode 100644
index 00000000..99589dd0
--- /dev/null
+++ b/docs/content/outputs/websocket.md
@@ -0,0 +1,7 @@
++++
+title = "websocket"
+description = ""
+weight = 10
++++
+
+{{% processordetails websocket %}}
\ No newline at end of file
diff --git a/docs/data/processors/geoip.json b/docs/data/processors/geoip.json
index 63b40725..7a56e11b 100644
--- a/docs/data/processors/geoip.json
+++ b/docs/data/processors/geoip.json
@@ -1,5 +1,5 @@
{
- "Doc": "",
+ "Doc": "The GeoIP filter adds information about the geographical location of IP addresses,\nbased on data from the Maxmind GeoLite2 databases\n\nThis processor use a GeoLite2 City database. From Maxmind’s description — \"GeoLite2 databases are free IP geolocation databases comparable to, but less accurate than, MaxMind’s GeoIP2 databases\". Please see GeoIP Lite2 license for more details.\nDatabae is not bundled in the processor, you can download directly from Maxmind’s website and use the\ndatabase option to specify their location. The GeoLite2 databases can be downloaded from https://dev.maxmind.com/geoip/geoip2/geolite2.",
"DocShort": "Adds geographical information about an IP address",
"ImportPath": "github.com/vjeantet/bitfan/processors/filter-geoip",
"Name": "geoip",
@@ -18,7 +18,7 @@
},
{
"Alias": "database",
- "DefaultValue": null,
+ "DefaultValue": "\"http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz\"",
"Doc": "Path or URL to the MaxMind GeoIP2 database.\nDefault value is \"http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz\"\nNote that URL can point to gzipped database (*.mmdb.gz) but local path must point to an unzipped file.",
"ExampleLS": "",
"Name": "Database",
diff --git a/docs/data/processors/pop3processor.json b/docs/data/processors/pop3processor.json
new file mode 100644
index 00000000..9758546c
--- /dev/null
+++ b/docs/data/processors/pop3processor.json
@@ -0,0 +1,152 @@
+{
+ "Doc": "Periodically scan an POP3 mailbox for new emails.",
+ "DocShort": "Read mails from POP3 server",
+ "ImportPath": "github.com/vjeantet/bitfan/processors/pop3",
+ "Name": "pop3processor",
+ "Options": {
+ "Doc": "",
+ "Options": [
+ {
+ "Alias": ",squash",
+ "DefaultValue": null,
+ "Doc": "",
+ "ExampleLS": "",
+ "Name": "processors.CommonOptions",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "processors.CommonOptions"
+ },
+ {
+ "Alias": "interval",
+ "DefaultValue": null,
+ "Doc": "When new mail should be retreived from POP3 server ?\nNothing by default, as this processor can be used in filter",
+ "ExampleLS": "",
+ "Name": "Interval",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "interval"
+ },
+ {
+ "Alias": "host",
+ "DefaultValue": null,
+ "Doc": "POP3 host name",
+ "ExampleLS": "",
+ "Name": "Host",
+ "PossibleValues": null,
+ "Required": true,
+ "Type": "string"
+ },
+ {
+ "Alias": "port",
+ "DefaultValue": "110",
+ "Doc": "POP3 server's port.\n\nWhen empty and secure is true (pop3s) the default port number is 995",
+ "ExampleLS": "",
+ "Name": "Port",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "int"
+ },
+ {
+ "Alias": "secure",
+ "DefaultValue": "false",
+ "Doc": "Use TLS POP3S connexion with server.\nThe default pop3s port is 995 in this case",
+ "ExampleLS": "",
+ "Name": "Secure",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ },
+ {
+ "Alias": "username",
+ "DefaultValue": null,
+ "Doc": "POP3 mailbox Username",
+ "ExampleLS": "",
+ "Name": "Username",
+ "PossibleValues": null,
+ "Required": true,
+ "Type": "string"
+ },
+ {
+ "Alias": "password",
+ "DefaultValue": null,
+ "Doc": "POP3 mailbox Password\nyou may use an env variable to pass value, like password =\u003e \"${BITFAN_POP3_PASSWORD}\"",
+ "ExampleLS": "",
+ "Name": "Password",
+ "PossibleValues": null,
+ "Required": true,
+ "Type": "string"
+ },
+ {
+ "Alias": "dial_timeout",
+ "DefaultValue": "30",
+ "Doc": "How long to wait for the server to respond ?\n(in second)",
+ "ExampleLS": "",
+ "Name": "DialTimeout",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "int"
+ },
+ {
+ "Alias": "delete",
+ "DefaultValue": "true",
+ "Doc": "Should delete message after retreiving it ?\n\nWhen false, this processor will use sinceDB to not retreive an already seen message",
+ "ExampleLS": "",
+ "Name": "Delete",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ },
+ {
+ "Alias": "strip_attachments",
+ "DefaultValue": "false",
+ "Doc": "Add Attachements, Inlines, in the produced event ?\nWhen false Parts are added like\n```\n \"parts\": {\n {\n \"Size\": 336303,\n \"Content\": $$ContentAsBytes$$,\n \"Type\": \"inline\",\n \"ContentType\": \"image/png\",\n \"Disposition\": \"inline\",\n \"FileName\": \"Capture d’écran 2018-01-12 à 12.11.52.png\",\n },\n {\n \"Content\": $$ContentAsBytes$$,\n \"Type\": \"attachement\",\n \"ContentType\": \"application/pdf\",\n \"Disposition\": \"attachment\",\n \"FileName\": \"58831639.pdf\",\n \"Size\": 14962,\n },\n},\n```",
+ "ExampleLS": "",
+ "Name": "StripAttachments",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ },
+ {
+ "Alias": "verify_cert",
+ "DefaultValue": "true",
+ "Doc": "When using a secure pop connexion (POP3S) should server'cert be verified ?",
+ "ExampleLS": "",
+ "Name": "VerifyCert",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ },
+ {
+ "Alias": "sincedb_path",
+ "DefaultValue": ": Host@Username",
+ "Doc": "Path of the sincedb database file\n\nThe sincedb database keeps track of the last seen message\n\nSet it to `\"/dev/null\"` to not persist sincedb features\n\nTracks are done by host and username combination, you can customize this if needed giving a specific path",
+ "ExampleLS": ": sincedb_path =\u003e \"/dev/null\"",
+ "Name": "SincedbPath",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "string"
+ },
+ {
+ "Alias": "add_raw_message",
+ "DefaultValue": "false",
+ "Doc": "Add a field to event with the raw message data ?",
+ "ExampleLS": "",
+ "Name": "AddRawMessage",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ },
+ {
+ "Alias": "add_all_headers",
+ "DefaultValue": "false",
+ "Doc": "Add a field to event with all headers as hash ?",
+ "ExampleLS": "",
+ "Name": "AddAllHeaders",
+ "PossibleValues": null,
+ "Required": false,
+ "Type": "bool"
+ }
+ ]
+ },
+ "Ports": []
+}
\ No newline at end of file
diff --git a/processors/filter-geoip/docdoc.go b/processors/filter-geoip/docdoc.go
index f2b95eda..0a9636e6 100644
--- a/processors/filter-geoip/docdoc.go
+++ b/processors/filter-geoip/docdoc.go
@@ -7,7 +7,7 @@ func (p *processor) Doc() *doc.Processor {
return &doc.Processor{
Name: "geoip",
ImportPath: "github.com/vjeantet/bitfan/processors/filter-geoip",
- Doc: "",
+ Doc: "The GeoIP filter adds information about the geographical location of IP addresses,\nbased on data from the Maxmind GeoLite2 databases\n\nThis processor use a GeoLite2 City database. From Maxmind’s description\u2009—\u2009\"GeoLite2 databases are free IP geolocation databases comparable to, but less accurate than, MaxMind’s GeoIP2 databases\". Please see GeoIP Lite2 license for more details.\nDatabae is not bundled in the processor, you can download directly from Maxmind’s website and use the\ndatabase option to specify their location. The GeoLite2 databases can be downloaded from https://dev.maxmind.com/geoip/geoip2/geolite2.",
DocShort: "Adds geographical information about an IP address",
Options: &doc.ProcessorOptions{
Doc: "",
@@ -28,7 +28,7 @@ func (p *processor) Doc() *doc.Processor {
Doc: "Path or URL to the MaxMind GeoIP2 database.\nDefault value is \"http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz\"\nNote that URL can point to gzipped database (*.mmdb.gz) but local path must point to an unzipped file.",
Required: false,
Type: "string",
- DefaultValue: nil,
+ DefaultValue: "\"http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz\"",
PossibleValues: []string{},
ExampleLS: "",
},
diff --git a/processors/filter-geoip/readme.md b/processors/filter-geoip/readme.md
index 3eef915f..9f13e66a 100644
--- a/processors/filter-geoip/readme.md
+++ b/processors/filter-geoip/readme.md
@@ -1,27 +1,32 @@
# GEOIP
+The GeoIP filter adds information about the geographical location of IP addresses,
+based on data from the Maxmind GeoLite2 databases
+This processor use a GeoLite2 City database. From Maxmind’s description — "GeoLite2 databases are free IP geolocation databases comparable to, but less accurate than, MaxMind’s GeoIP2 databases". Please see GeoIP Lite2 license for more details.
+Databae is not bundled in the processor, you can download directly from Maxmind’s website and use the
+database option to specify their location. The GeoLite2 databases can be downloaded from https://dev.maxmind.com/geoip/geoip2/geolite2.
## Synopsys
-| SETTING | TYPE | REQUIRED | DEFAULT VALUE |
-|------------------|---------------|----------|---------------|
-| database | string | false | "" |
-| database_type | string | false | "" |
-| refresh_interval | time.Duration | false | |
-| fields | array | false | [] |
-| lru_cache_size | int64 | false | 0 |
-| source | string | true | "" |
-| tag_on_failure | array | false | [] |
-| target | string | false | "" |
-| language | string | false | "" |
+| SETTING | TYPE | REQUIRED | DEFAULT VALUE |
+|------------------|---------------|----------|----------------------------------------------------------------------------|
+| database | string | false | "http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz" |
+| database_type | string | false | "" |
+| refresh_interval | time.Duration | false | |
+| fields | array | false | [] |
+| lru_cache_size | int64 | false | 0 |
+| source | string | true | "" |
+| tag_on_failure | array | false | [] |
+| target | string | false | "" |
+| language | string | false | "" |
## Details
### database
* Value type is string
-* Default value is `""`
+* Default value is `"http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz"`
Path or URL to the MaxMind GeoIP2 database.
Default value is "http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz"
@@ -88,7 +93,7 @@ Language to use for city/region/continent names
```
geoip{
- database => ""
+ database => "http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz"
database_type => ""
refresh_interval => 30
fields => []
diff --git a/processors/pop3/conn.go b/processors/pop3/conn.go
new file mode 100644
index 00000000..1e4d6bac
--- /dev/null
+++ b/processors/pop3/conn.go
@@ -0,0 +1,128 @@
+package pop3processor
+
+import (
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "time"
+
+ pop3 "github.com/taknb2nch/go-pop3"
+)
+
+var (
+ EOF = errors.New("skip the all mail remaining")
+)
+
+func receiveMail(c *pop3.Client, lastSeenUID string, receiveFn receiveMailFunc) error {
+ var err error
+ defer func() {
+ if err != nil && err != EOF {
+ c.Rset()
+ }
+
+ c.Quit()
+ c.Close()
+ }()
+
+ var mis []pop3.MessageInfo
+
+ if mis, err = c.UidlAll(); err != nil {
+ return err
+ }
+
+ // reverse order of mis id
+ // create a new mis2
+ mis_filtered := []pop3.MessageInfo{}
+ for i := len(mis) - 1; i >= 0; i-- {
+ mi := mis[i]
+ if mi.Uid == lastSeenUID {
+ break
+ }
+ mis_filtered = append(mis_filtered, mi)
+ }
+
+ // iterate over mis id and
+ // push id to mis2
+ // when id == lastseen ; break
+ // iterate over mis
+
+ // for _, mi := range mis_filtered { // natural order (FIRST OUT)
+ for i := len(mis_filtered) - 1; i >= 0; i-- { // reverse order (LAST FIRST)
+ mi := mis_filtered[i]
+
+ var data string
+
+ data, err = c.Retr(mi.Number)
+ del, err := receiveFn(mi.Number, mi.Uid, data, err)
+
+ if err != nil && err != EOF {
+ return err
+ }
+
+ if del {
+ if err = c.Dele(mi.Number); err != nil {
+ return err
+ }
+ }
+
+ if err == EOF {
+ break
+ }
+ }
+
+ return nil
+}
+
+type receiveMailFunc func(number int, uid, data string, err error) (bool, error)
+
+func newPop3Client(host string, port int, username string, password string, secure bool, verifyCert bool, timeout int) (*pop3.Client, error) {
+ var err error
+ var client *pop3.Client
+ defer func() {
+ if err != nil && err != EOF {
+ client.Rset()
+ client.Quit()
+ client.Close()
+ }
+ }()
+
+ defaultTimeout := time.Duration(timeout) * time.Second
+
+ var conn net.Conn
+ conn, err = createConn(host, port, secure, !verifyCert, defaultTimeout)
+ if err != nil {
+ return nil, fmt.Errorf("create connection to %v:%v failed: %v", host, port, err)
+ }
+
+ client, err = pop3.NewClient(conn)
+
+ if err = client.User(username); err != nil {
+ return nil, fmt.Errorf("Username Error: %v\n", err)
+ }
+
+ if err = client.Pass(password); err != nil {
+ return nil, fmt.Errorf("Password Error: %v\n", err)
+ }
+
+ return client, nil
+}
+
+func createConn(
+ host string,
+ port int,
+ tlsActive bool,
+ tlsSkipVerify bool,
+ timeout time.Duration,
+) (net.Conn, error) {
+ address := fmt.Sprintf("%v:%v", host, port)
+ dailer := &net.Dialer{Timeout: timeout}
+ if tlsActive {
+ tlsconfig := &tls.Config{
+ InsecureSkipVerify: tlsSkipVerify,
+ ServerName: host,
+ }
+ return tls.DialWithDialer(dailer, "tcp", address, tlsconfig)
+ }
+ return dailer.Dial("tcp", address)
+}
diff --git a/processors/pop3/docdoc.go b/processors/pop3/docdoc.go
new file mode 100644
index 00000000..a0d0e160
--- /dev/null
+++ b/processors/pop3/docdoc.go
@@ -0,0 +1,159 @@
+// Code generated by "bitfanDoc "; DO NOT EDIT
+package pop3processor
+
+import "github.com/vjeantet/bitfan/processors/doc"
+
+func (p *processor) Doc() *doc.Processor {
+ return &doc.Processor{
+ Name: "pop3processor",
+ ImportPath: "github.com/vjeantet/bitfan/processors/pop3",
+ Doc: "Periodically scan an POP3 mailbox for new emails.",
+ DocShort: "Read mails from POP3 server",
+ Options: &doc.ProcessorOptions{
+ Doc: "",
+ Options: []*doc.ProcessorOption{
+ &doc.ProcessorOption{
+ Name: "processors.CommonOptions",
+ Alias: ",squash",
+ Doc: "",
+ Required: false,
+ Type: "processors.CommonOptions",
+ DefaultValue: nil,
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Interval",
+ Alias: "interval",
+ Doc: "When new mail should be retreived from POP3 server ?\nNothing by default, as this processor can be used in filter",
+ Required: false,
+ Type: "interval",
+ DefaultValue: nil,
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Host",
+ Alias: "host",
+ Doc: "POP3 host name",
+ Required: true,
+ Type: "string",
+ DefaultValue: nil,
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Port",
+ Alias: "port",
+ Doc: "POP3 server's port.\n\nWhen empty and secure is true (pop3s) the default port number is 995",
+ Required: false,
+ Type: "int",
+ DefaultValue: "110",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Secure",
+ Alias: "secure",
+ Doc: "Use TLS POP3S connexion with server.\nThe default pop3s port is 995 in this case",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "false",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Username",
+ Alias: "username",
+ Doc: "POP3 mailbox Username",
+ Required: true,
+ Type: "string",
+ DefaultValue: nil,
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Password",
+ Alias: "password",
+ Doc: "POP3 mailbox Password\nyou may use an env variable to pass value, like password => \"${BITFAN_POP3_PASSWORD}\"",
+ Required: true,
+ Type: "string",
+ DefaultValue: nil,
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "DialTimeout",
+ Alias: "dial_timeout",
+ Doc: "How long to wait for the server to respond ?\n(in second)",
+ Required: false,
+ Type: "int",
+ DefaultValue: "30",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "Delete",
+ Alias: "delete",
+ Doc: "Should delete message after retreiving it ?\n\nWhen false, this processor will use sinceDB to not retreive an already seen message",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "true",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "StripAttachments",
+ Alias: "strip_attachments",
+ Doc: "Add Attachements, Inlines, in the produced event ?\nWhen false Parts are added like\n```\n \"parts\": {\n {\n \"Size\": 336303,\n \"Content\": $$ContentAsBytes$$,\n \"Type\": \"inline\",\n \"ContentType\": \"image/png\",\n \"Disposition\": \"inline\",\n \"FileName\": \"Capture d’écran 2018-01-12 à 12.11.52.png\",\n },\n {\n \"Content\": $$ContentAsBytes$$,\n \"Type\": \"attachement\",\n \"ContentType\": \"application/pdf\",\n \"Disposition\": \"attachment\",\n \"FileName\": \"58831639.pdf\",\n \"Size\": 14962,\n },\n},\n```",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "false",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "VerifyCert",
+ Alias: "verify_cert",
+ Doc: "When using a secure pop connexion (POP3S) should server'cert be verified ?",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "true",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "SincedbPath",
+ Alias: "sincedb_path",
+ Doc: "Path of the sincedb database file\n\nThe sincedb database keeps track of the last seen message\n\nSet it to `\"/dev/null\"` to not persist sincedb features\n\nTracks are done by host and username combination, you can customize this if needed giving a specific path",
+ Required: false,
+ Type: "string",
+ DefaultValue: ": Host@Username",
+ PossibleValues: []string{},
+ ExampleLS: ": sincedb_path => \"/dev/null\"",
+ },
+ &doc.ProcessorOption{
+ Name: "AddRawMessage",
+ Alias: "add_raw_message",
+ Doc: "Add a field to event with the raw message data ?",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "false",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ &doc.ProcessorOption{
+ Name: "AddAllHeaders",
+ Alias: "add_all_headers",
+ Doc: "Add a field to event with all headers as hash ?",
+ Required: false,
+ Type: "bool",
+ DefaultValue: "false",
+ PossibleValues: []string{},
+ ExampleLS: "",
+ },
+ },
+ },
+ Ports: []*doc.ProcessorPort{},
+}
+}
\ No newline at end of file
diff --git a/processors/pop3/pop3.go b/processors/pop3/pop3.go
new file mode 100644
index 00000000..c0fe95ca
--- /dev/null
+++ b/processors/pop3/pop3.go
@@ -0,0 +1,302 @@
+//go:generate bitfanDoc
+// Periodically scan an POP3 mailbox for new emails.
+package pop3processor
+
+import (
+ "bytes"
+ "sync"
+ "time"
+
+ "github.com/jhillyerd/enmime"
+ "github.com/vjeantet/bitfan/processors"
+ "github.com/vjeantet/jodaTime"
+)
+
+func New() processors.Processor {
+ return &processor{opt: &options{}}
+}
+
+type options struct {
+ processors.CommonOptions `mapstructure:",squash"`
+
+ // When new mail should be retreived from POP3 server ?
+ // Nothing by default, as this processor can be used in filter
+ // @Type Interval
+ Interval string `mapstructure:"interval" `
+
+ // POP3 host name
+ Host string `mapstructure:"host" validate:"required"`
+
+ // POP3 server's port.
+ //
+ // When empty and secure is true (pop3s) the default port number is 995
+ // @Default 110
+ Port int `mapstructure:"port"`
+
+ // Use TLS POP3S connexion with server.
+ // The default pop3s port is 995 in this case
+ // @Default false
+ Secure bool `mapstructure:"secure"`
+
+ // POP3 mailbox Username
+ Username string `mapstructure:"username" validate:"required"`
+
+ // POP3 mailbox Password
+ // you may use an env variable to pass value, like password => "${BITFAN_POP3_PASSWORD}"
+ Password string `mapstructure:"password" validate:"required"`
+
+ // How long to wait for the server to respond ?
+ // (in second)
+ // @Default 30
+ DialTimeout int `mapstructure:"dial_timeout"`
+
+ // Should delete message after retreiving it ?
+ //
+ // When false, this processor will use sinceDB to not retreive an already seen message
+ // @Default true
+ Delete bool `mapstructure:"delete"`
+
+ // Add Attachements, Inlines, in the produced event ?
+ // When false Parts are added like
+ // ```
+ // "parts": {
+ // {
+ // "Size": 336303,
+ // "Content": $$ContentAsBytes$$,
+ // "Type": "inline",
+ // "ContentType": "image/png",
+ // "Disposition": "inline",
+ // "FileName": "Capture d’écran 2018-01-12 à 12.11.52.png",
+ // },
+ // {
+ // "Content": $$ContentAsBytes$$,
+ // "Type": "attachement",
+ // "ContentType": "application/pdf",
+ // "Disposition": "attachment",
+ // "FileName": "58831639.pdf",
+ // "Size": 14962,
+ // },
+ // },
+ // ```
+ // @Default false
+ StripAttachments bool `mapstructure:"strip_attachments"`
+
+ // When using a secure pop connexion (POP3S) should server'cert be verified ?
+ // @Default true
+ VerifyCert bool `mapstructure:"verify_cert"`
+
+ // Path of the sincedb database file
+ //
+ // The sincedb database keeps track of the last seen message
+ //
+ // Set it to `"/dev/null"` to not persist sincedb features
+ //
+ // Tracks are done by host and username combination, you can customize this if needed giving a specific path
+ // @Default : Host@Username
+ // @ExampleLS : sincedb_path => "/dev/null"
+ SincedbPath string `mapstructure:"sincedb_path"`
+
+ // Add a field to event with the raw message data ?
+ // @Default false
+ AddRawMessage bool `mapstructure:"add_raw_message"`
+
+ // Add a field to event with all headers as hash ?
+ // @Default false
+ AddAllHeaders bool `mapstructure:"add_all_headers"`
+}
+
+// Read mails from POP3 server
+type processor struct {
+ processors.Base
+
+ opt *options
+ q chan bool
+ wg *sync.WaitGroup
+
+ sinceDB *processors.SinceDB
+}
+
+func (p *processor) Configure(ctx processors.ProcessorContext, conf map[string]interface{}) error {
+ p.opt = &options{
+ Secure: false,
+ Interval: "@every 30m",
+ Delete: true,
+ StripAttachments: false,
+ VerifyCert: true,
+ DialTimeout: 30,
+ SincedbPath: "HOST@USERNAME",
+ AddRawMessage: false,
+ AddAllHeaders: false,
+ }
+ err := p.ConfigureAndValidate(ctx, conf, p.opt)
+ if err != nil {
+ return err
+ }
+
+ if p.opt.SincedbPath == "HOST@USERNAME" {
+ p.opt.SincedbPath = p.opt.Host + "@" + p.opt.Username
+ }
+
+ // Default port number depends on SSL usage
+ if p.opt.Port == 0 {
+ p.opt.Port = 110
+ if p.opt.Secure == true {
+ p.opt.Port = 995
+ }
+ }
+
+ // test connexion
+ client, err := newPop3Client(p.opt.Host, p.opt.Port, p.opt.Username, p.opt.Password, p.opt.Secure, p.opt.VerifyCert, p.opt.DialTimeout)
+ if err != nil {
+ return err
+ }
+
+ defer func() {
+ client.Quit()
+ client.Close()
+ }()
+
+ var count int
+ var size uint64
+
+ if count, size, err = client.Stat(); err != nil {
+ return err
+ }
+
+ p.Logger.Debugf("POP3 configuration OK - Message Count: %d, Size: %d", count, size)
+
+ return err
+}
+
+func (p *processor) MaxConcurent() int {
+ return 1
+}
+
+func (p *processor) Start(e processors.IPacket) error {
+ p.wg = new(sync.WaitGroup)
+ p.sinceDB = processors.NewSinceDB(&processors.SinceDBOptions{
+ Identifier: p.opt.SincedbPath,
+ WriteInterval: 30,
+ Storage: p.Store,
+ })
+ return nil
+}
+
+func (p *processor) Tick(e processors.IPacket) error {
+ return p.Receive(e)
+}
+
+func (p *processor) Receive(e processors.IPacket) error {
+ client, err := newPop3Client(p.opt.Host, p.opt.Port, p.opt.Username, p.opt.Password, p.opt.Secure, p.opt.VerifyCert, p.opt.DialTimeout)
+ if err != nil {
+ return err
+ }
+ p.wg.Add(1)
+ defer func() {
+ p.wg.Done()
+ client.Quit()
+ client.Close()
+ }()
+
+ // Connect
+ lastSeenUID, err := p.sinceDB.Ressource("lastSeenUID")
+
+ err = receiveMail(client, string(lastSeenUID), func(number int, uid, data string, err error) (bool, error) {
+ p.Logger.Debugf("receiving mail number=%d, uid=%s", number, uid)
+
+ env, err := enmime.ReadEnvelope(bytes.NewBufferString(data))
+ if err != nil {
+ p.Logger.Errorf("reading email envelope : %s", err.Error())
+ return false, err
+ }
+
+ packetFields := map[string]interface{}{
+ "uid": uid,
+ "subject": env.GetHeader("Subject"),
+ "text": env.Text,
+ "html": env.HTML,
+ }
+
+ if p.opt.AddAllHeaders == true {
+ packetFields["headers"] = env.Root.Header
+ }
+
+ if p.opt.AddRawMessage == true {
+ packetFields["raw"] = data
+ }
+
+ //Date
+ if sentAt, err := jodaTime.Parse("E, d MMM y HH:mm:ss Z", env.GetHeader("Date")); err == nil {
+ packetFields["sentAt"] = sentAt
+ } else {
+ p.Logger.Warnf("can not parse email date %s : %s", env.GetHeader("Date"), err.Error())
+ }
+
+ // Address headers
+ enmime.AddressHeaders["return-path"] = true
+ for hname, _ := range enmime.AddressHeaders {
+ arr := map[string]interface{}{}
+ alist, _ := env.AddressList(hname)
+ for _, addr := range alist {
+ arr[addr.Address] = addr.Name
+ }
+ if len(arr) > 0 {
+ packetFields[hname] = arr
+ }
+ }
+
+ // Inlines / Attachements / OtherPars
+ if p.opt.StripAttachments == false {
+ parts := []interface{}{}
+ for _, v := range env.Inlines {
+ parts = append(parts, map[string]interface{}{
+ "ContentType": v.ContentType,
+ "Disposition": v.Disposition,
+ "FileName": v.FileName,
+ "Size": len(v.Content),
+ "Content": v.Content,
+ "Type": "inline",
+ })
+ }
+ for _, v := range env.Attachments {
+ parts = append(parts, map[string]interface{}{
+ "ContentType": v.ContentType,
+ "Disposition": v.Disposition,
+ "FileName": v.FileName,
+ "Size": len(v.Content),
+ "Content": v.Content,
+ "Type": "attachement",
+ })
+ }
+ for _, v := range env.OtherParts {
+ parts = append(parts, map[string]interface{}{
+ "ContentType": v.ContentType,
+ "Disposition": v.Disposition,
+ "FileName": v.FileName,
+ "Size": len(v.Content),
+ "Content": v.Content,
+ "Type": "other",
+ })
+ }
+ packetFields["parts"] = parts
+ }
+
+ ne := p.NewPacket(env.Text, packetFields)
+ p.opt.ProcessCommonOptions(e.Fields())
+ p.Send(ne)
+
+ time.Sleep(time.Second * 4)
+
+ p.sinceDB.SetRessource("lastSeenUID", []byte(uid))
+ return p.opt.Delete, nil
+ })
+
+ return err
+
+}
+
+func (p *processor) Stop(e processors.IPacket) error {
+ // Wait for a maybe existing retrieving process to finish
+ p.wg.Wait()
+ return nil
+}
diff --git a/processors/pop3/readme.md b/processors/pop3/readme.md
new file mode 100644
index 00000000..1c36b571
--- /dev/null
+++ b/processors/pop3/readme.md
@@ -0,0 +1,162 @@
+# POP3PROCESSOR
+Periodically scan an POP3 mailbox for new emails.
+
+## Synopsys
+
+
+| SETTING | TYPE | REQUIRED | DEFAULT VALUE |
+|-------------------|----------|----------|-----------------|
+| interval | interval | false | ? |
+| host | string | true | "" |
+| port | int | false | 110 |
+| secure | bool | false | false |
+| username | string | true | "" |
+| password | string | true | "" |
+| dial_timeout | int | false | 30 |
+| delete | bool | false | true |
+| strip_attachments | bool | false | false |
+| verify_cert | bool | false | true |
+| sincedb_path | string | false | : Host@Username |
+| add_raw_message | bool | false | false |
+| add_all_headers | bool | false | false |
+
+
+## Details
+
+### interval
+* Value type is interval
+* Default value is `?`
+
+When new mail should be retreived from POP3 server ?
+Nothing by default, as this processor can be used in filter
+
+### host
+* This is a required setting.
+* Value type is string
+* Default value is `""`
+
+POP3 host name
+
+### port
+* Value type is int
+* Default value is `110`
+
+POP3 server's port.
+
+When empty and secure is true (pop3s) the default port number is 995
+
+### secure
+* Value type is bool
+* Default value is `false`
+
+Use TLS POP3S connexion with server.
+The default pop3s port is 995 in this case
+
+### username
+* This is a required setting.
+* Value type is string
+* Default value is `""`
+
+POP3 mailbox Username
+
+### password
+* This is a required setting.
+* Value type is string
+* Default value is `""`
+
+POP3 mailbox Password
+you may use an env variable to pass value, like password => "${BITFAN_POP3_PASSWORD}"
+
+### dial_timeout
+* Value type is int
+* Default value is `30`
+
+How long to wait for the server to respond ?
+(in second)
+
+### delete
+* Value type is bool
+* Default value is `true`
+
+Should delete message after retreiving it ?
+
+When false, this processor will use sinceDB to not retreive an already seen message
+
+### strip_attachments
+* Value type is bool
+* Default value is `false`
+
+Add Attachements, Inlines, in the produced event ?
+When false Parts are added like
+```
+ "parts": {
+ {
+ "Size": 336303,
+ "Content": $$ContentAsBytes$$,
+ "Type": "inline",
+ "ContentType": "image/png",
+ "Disposition": "inline",
+ "FileName": "Capture d’écran 2018-01-12 à 12.11.52.png",
+ },
+ {
+ "Content": $$ContentAsBytes$$,
+ "Type": "attachement",
+ "ContentType": "application/pdf",
+ "Disposition": "attachment",
+ "FileName": "58831639.pdf",
+ "Size": 14962,
+ },
+},
+```
+
+### verify_cert
+* Value type is bool
+* Default value is `true`
+
+When using a secure pop connexion (POP3S) should server'cert be verified ?
+
+### sincedb_path
+* Value type is string
+* Default value is `: Host@Username`
+
+Path of the sincedb database file
+
+The sincedb database keeps track of the last seen message
+
+Set it to `"/dev/null"` to not persist sincedb features
+
+Tracks are done by host and username combination, you can customize this if needed giving a specific path
+
+### add_raw_message
+* Value type is bool
+* Default value is `false`
+
+Add a field to event with the raw message data ?
+
+### add_all_headers
+* Value type is bool
+* Default value is `false`
+
+Add a field to event with all headers as hash ?
+
+
+
+## Configuration blueprint
+
+```
+pop3processor{
+ interval => interval
+ host => ""
+ port => 110
+ secure => false
+ username => ""
+ password => ""
+ dial_timeout => 30
+ delete => true
+ strip_attachments => false
+ verify_cert => true
+ : sincedb_path => "/dev/null"
+ add_raw_message => false
+ add_all_headers => false
+}
+```
diff --git a/processors/sincedb.go b/processors/sincedb.go
index 9771deaa..c3363874 100644
--- a/processors/sincedb.go
+++ b/processors/sincedb.go
@@ -73,6 +73,28 @@ func (s *SinceDB) Close() error {
return nil
}
+// Update a ressource's offset
+func (s *SinceDB) SetRessource(ressource string, v []byte) error {
+ s.offsets.Store(ressource, v)
+ return nil
+}
+
+func (s *SinceDB) Ressource(ressource string) ([]byte, error) {
+
+ // If a value not already stored exists
+ if value, ok := s.offsets.Load(ressource); ok {
+ return value.([]byte), nil
+ }
+
+ // Try to find value in storage
+ v, err := s.options.Storage.Get(ressource, s.options.Identifier)
+ if err != nil {
+ return []byte{}, err
+ }
+
+ return v, nil
+}
+
// Retreive SinceDB ressource's offset from Storage
func (s *SinceDB) RessourceOffset(ressource string) (int, error) {
diff --git a/vendor/github.com/jaytaylor/html2text/LICENSE b/vendor/github.com/jaytaylor/html2text/LICENSE
new file mode 100644
index 00000000..24dc4abe
--- /dev/null
+++ b/vendor/github.com/jaytaylor/html2text/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Jay Taylor
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/vendor/github.com/jaytaylor/html2text/README.md b/vendor/github.com/jaytaylor/html2text/README.md
new file mode 100644
index 00000000..a7a5e564
--- /dev/null
+++ b/vendor/github.com/jaytaylor/html2text/README.md
@@ -0,0 +1,137 @@
+# html2text
+
+[![Documentation](https://godoc.org/github.com/jaytaylor/html2text?status.svg)](https://godoc.org/github.com/jaytaylor/html2text)
+[![Build Status](https://travis-ci.org/jaytaylor/html2text.svg?branch=master)](https://travis-ci.org/jaytaylor/html2text)
+[![Report Card](https://goreportcard.com/badge/github.com/jaytaylor/html2text)](https://goreportcard.com/report/github.com/jaytaylor/html2text)
+
+### Converts HTML into text
+
+
+## Introduction
+
+Ensure your emails are readable by all!
+
+Turns HTML into raw text, useful for sending fancy HTML emails with a equivalently nicely formatted TXT document as a fallback (e.g. for people who don't allow HTML emails or have other display issues).
+
+html2text is a simple golang package for rendering HTML into plaintext.
+
+There are still lots of improvements to be had, but FWIW this has worked fine for my [basic] HTML-2-text needs.
+
+It requires go 1.x or newer ;)
+
+
+## Download the package
+
+```bash
+go get github.com/jaytaylor/html2text
+```
+
+## Example usage
+
+```go
+package main
+
+import (
+ "fmt"
+
+ "github.com/jaytaylor/html2text"
+)
+
+func main() {
+ inputHTML := `
+
+
+ My Mega Service
+
+
+
+
+
+
+
+
+
+ Welcome to your new account on my service!
+
+
+ Here is some more information:
+
+
+
+
+
+
+ Header 1 | Header 2 |
+
+
+ Footer 1 | Footer 2 |
+
+
+ Row 1 Col 1 | Row 1 Col 2 |
+ Row 2 Col 1 | Row 2 Col 2 |
+
+
+
+`
+
+ text, err := FromString(inputHTML, Options{PrettyTables: true})
+ if err != nil {
+ panic(err)
+ }
+ fmt.Println(text)
+}
+```
+
+Output:
+```
+Mega Service ( http://jaytaylor.com/ )
+
+******************************************
+Welcome to your new account on my service!
+******************************************
+
+Here is some more information:
+
+* Link 1: Example.com ( https://example.com )
+* Link 2: Example2.com ( https://example2.com )
+* Something else
+
++-------------+-------------+
+| HEADER 1 | HEADER 2 |
++-------------+-------------+
+| Row 1 Col 1 | Row 1 Col 2 |
+| Row 2 Col 1 | Row 2 Col 2 |
++-------------+-------------+
+| FOOTER 1 | FOOTER 2 |
++-------------+-------------+
+```
+
+
+## Unit-tests
+
+Running the unit-tests is straightforward and standard:
+
+```bash
+go test
+```
+
+
+# License
+
+Permissive MIT license.
+
+
+## Contact
+
+You are more than welcome to open issues and send pull requests if you find a bug or want a new feature.
+
+If you appreciate this library please feel free to drop me a line and tell me! It's always nice to hear from people who have benefitted from my work.
+
+Email: jay at (my github username).com
+
+Twitter: [@jtaylor](https://twitter.com/jtaylor)
+
diff --git a/vendor/github.com/jaytaylor/html2text/html2text.go b/vendor/github.com/jaytaylor/html2text/html2text.go
new file mode 100644
index 00000000..ba04729a
--- /dev/null
+++ b/vendor/github.com/jaytaylor/html2text/html2text.go
@@ -0,0 +1,473 @@
+package html2text
+
+import (
+ "bytes"
+ "io"
+ "regexp"
+ "strings"
+ "unicode"
+
+ "github.com/olekukonko/tablewriter"
+ "github.com/ssor/bom"
+ "golang.org/x/net/html"
+ "golang.org/x/net/html/atom"
+)
+
+// Options provide toggles and overrides to control specific rendering behaviors.
+type Options struct {
+ PrettyTables bool // Turns on pretty ASCII rendering for table elements.
+ OmitLinks bool // Turns on omitting links
+}
+
+// FromHTMLNode renders text output from a pre-parsed HTML document.
+func FromHTMLNode(doc *html.Node, o ...Options) (string, error) {
+ var options Options
+ if len(o) > 0 {
+ options = o[0]
+ }
+
+ ctx := textifyTraverseContext{
+ buf: bytes.Buffer{},
+ options: options,
+ }
+ if err := ctx.traverse(doc); err != nil {
+ return "", err
+ }
+
+ text := strings.TrimSpace(newlineRe.ReplaceAllString(
+ strings.Replace(ctx.buf.String(), "\n ", "\n", -1), "\n\n"),
+ )
+ return text, nil
+}
+
+// FromReader renders text output after parsing HTML for the specified
+// io.Reader.
+func FromReader(reader io.Reader, options ...Options) (string, error) {
+ newReader, err := bom.NewReaderWithoutBom(reader)
+ if err != nil {
+ return "", err
+ }
+ doc, err := html.Parse(newReader)
+ if err != nil {
+ return "", err
+ }
+ return FromHTMLNode(doc, options...)
+}
+
+// FromString parses HTML from the input string, then renders the text form.
+func FromString(input string, options ...Options) (string, error) {
+ bs := bom.CleanBom([]byte(input))
+ text, err := FromReader(bytes.NewReader(bs), options...)
+ if err != nil {
+ return "", err
+ }
+ return text, nil
+}
+
+var (
+ spacingRe = regexp.MustCompile(`[ \r\n\t]+`)
+ newlineRe = regexp.MustCompile(`\n\n+`)
+)
+
+// traverseTableCtx holds text-related context.
+type textifyTraverseContext struct {
+ buf bytes.Buffer
+
+ prefix string
+ tableCtx tableTraverseContext
+ options Options
+ endsWithSpace bool
+ justClosedDiv bool
+ blockquoteLevel int
+ lineLength int
+ isPre bool
+}
+
+// tableTraverseContext holds table ASCII-form related context.
+type tableTraverseContext struct {
+ header []string
+ body [][]string
+ footer []string
+ tmpRow int
+ isInFooter bool
+}
+
+func (tableCtx *tableTraverseContext) init() {
+ tableCtx.body = [][]string{}
+ tableCtx.header = []string{}
+ tableCtx.footer = []string{}
+ tableCtx.isInFooter = false
+ tableCtx.tmpRow = 0
+}
+
+func (ctx *textifyTraverseContext) handleElement(node *html.Node) error {
+ ctx.justClosedDiv = false
+
+ switch node.DataAtom {
+ case atom.Br:
+ return ctx.emit("\n")
+
+ case atom.H1, atom.H2, atom.H3:
+ subCtx := textifyTraverseContext{}
+ if err := subCtx.traverseChildren(node); err != nil {
+ return err
+ }
+
+ str := subCtx.buf.String()
+ dividerLen := 0
+ for _, line := range strings.Split(str, "\n") {
+ if lineLen := len([]rune(line)); lineLen-1 > dividerLen {
+ dividerLen = lineLen - 1
+ }
+ }
+ var divider string
+ if node.DataAtom == atom.H1 {
+ divider = strings.Repeat("*", dividerLen)
+ } else {
+ divider = strings.Repeat("-", dividerLen)
+ }
+
+ if node.DataAtom == atom.H3 {
+ return ctx.emit("\n\n" + str + "\n" + divider + "\n\n")
+ }
+ return ctx.emit("\n\n" + divider + "\n" + str + "\n" + divider + "\n\n")
+
+ case atom.Blockquote:
+ ctx.blockquoteLevel++
+ ctx.prefix = strings.Repeat(">", ctx.blockquoteLevel) + " "
+ if err := ctx.emit("\n"); err != nil {
+ return err
+ }
+ if ctx.blockquoteLevel == 1 {
+ if err := ctx.emit("\n"); err != nil {
+ return err
+ }
+ }
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+ ctx.blockquoteLevel--
+ ctx.prefix = strings.Repeat(">", ctx.blockquoteLevel)
+ if ctx.blockquoteLevel > 0 {
+ ctx.prefix += " "
+ }
+ return ctx.emit("\n\n")
+
+ case atom.Div:
+ if ctx.lineLength > 0 {
+ if err := ctx.emit("\n"); err != nil {
+ return err
+ }
+ }
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+ var err error
+ if !ctx.justClosedDiv {
+ err = ctx.emit("\n")
+ }
+ ctx.justClosedDiv = true
+ return err
+
+ case atom.Li:
+ if err := ctx.emit("* "); err != nil {
+ return err
+ }
+
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+
+ return ctx.emit("\n")
+
+ case atom.B, atom.Strong:
+ subCtx := textifyTraverseContext{}
+ subCtx.endsWithSpace = true
+ if err := subCtx.traverseChildren(node); err != nil {
+ return err
+ }
+ str := subCtx.buf.String()
+ return ctx.emit("*" + str + "*")
+
+ case atom.A:
+ linkText := ""
+ // For simple link element content with single text node only, peek at the link text.
+ if node.FirstChild != nil && node.FirstChild.NextSibling == nil && node.FirstChild.Type == html.TextNode {
+ linkText = node.FirstChild.Data
+ }
+
+ // If image is the only child, take its alt text as the link text.
+ if img := node.FirstChild; img != nil && node.LastChild == img && img.DataAtom == atom.Img {
+ if altText := getAttrVal(img, "alt"); altText != "" {
+ if err := ctx.emit(altText); err != nil {
+ return err
+ }
+ }
+ } else if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+
+ hrefLink := ""
+ if attrVal := getAttrVal(node, "href"); attrVal != "" {
+ attrVal = ctx.normalizeHrefLink(attrVal)
+ // Don't print link href if it matches link element content or if the link is empty.
+ if !ctx.options.OmitLinks && attrVal != "" && linkText != attrVal {
+ hrefLink = "( " + attrVal + " )"
+ }
+ }
+
+ return ctx.emit(hrefLink)
+
+ case atom.P, atom.Ul:
+ return ctx.paragraphHandler(node)
+
+ case atom.Table, atom.Tfoot, atom.Th, atom.Tr, atom.Td:
+ if ctx.options.PrettyTables {
+ return ctx.handleTableElement(node)
+ } else if node.DataAtom == atom.Table {
+ return ctx.paragraphHandler(node)
+ }
+ return ctx.traverseChildren(node)
+
+ case atom.Pre:
+ ctx.isPre = true
+ err := ctx.traverseChildren(node)
+ ctx.isPre = false
+ return err
+
+ case atom.Style, atom.Script, atom.Head:
+ // Ignore the subtree.
+ return nil
+
+ default:
+ return ctx.traverseChildren(node)
+ }
+}
+
+// paragraphHandler renders node children surrounded by double newlines.
+func (ctx *textifyTraverseContext) paragraphHandler(node *html.Node) error {
+ if err := ctx.emit("\n\n"); err != nil {
+ return err
+ }
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+ return ctx.emit("\n\n")
+}
+
+// handleTableElement is only to be invoked when options.PrettyTables is active.
+func (ctx *textifyTraverseContext) handleTableElement(node *html.Node) error {
+ if !ctx.options.PrettyTables {
+ panic("handleTableElement invoked when PrettyTables not active")
+ }
+
+ switch node.DataAtom {
+ case atom.Table:
+ if err := ctx.emit("\n\n"); err != nil {
+ return err
+ }
+
+ // Re-intialize all table context.
+ ctx.tableCtx.init()
+
+ // Browse children, enriching context with table data.
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+
+ buf := &bytes.Buffer{}
+ table := tablewriter.NewWriter(buf)
+ table.SetHeader(ctx.tableCtx.header)
+ table.SetFooter(ctx.tableCtx.footer)
+ table.AppendBulk(ctx.tableCtx.body)
+
+ // Render the table using ASCII.
+ table.Render()
+ if err := ctx.emit(buf.String()); err != nil {
+ return err
+ }
+
+ return ctx.emit("\n\n")
+
+ case atom.Tfoot:
+ ctx.tableCtx.isInFooter = true
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+ ctx.tableCtx.isInFooter = false
+
+ case atom.Tr:
+ ctx.tableCtx.body = append(ctx.tableCtx.body, []string{})
+ if err := ctx.traverseChildren(node); err != nil {
+ return err
+ }
+ ctx.tableCtx.tmpRow++
+
+ case atom.Th:
+ res, err := ctx.renderEachChild(node)
+ if err != nil {
+ return err
+ }
+
+ ctx.tableCtx.header = append(ctx.tableCtx.header, res)
+
+ case atom.Td:
+ res, err := ctx.renderEachChild(node)
+ if err != nil {
+ return err
+ }
+
+ if ctx.tableCtx.isInFooter {
+ ctx.tableCtx.footer = append(ctx.tableCtx.footer, res)
+ } else {
+ ctx.tableCtx.body[ctx.tableCtx.tmpRow] = append(ctx.tableCtx.body[ctx.tableCtx.tmpRow], res)
+ }
+
+ }
+ return nil
+}
+
+func (ctx *textifyTraverseContext) traverse(node *html.Node) error {
+ switch node.Type {
+ default:
+ return ctx.traverseChildren(node)
+
+ case html.TextNode:
+ var data string
+ if ctx.isPre {
+ data = node.Data
+ } else {
+ data = strings.Trim(spacingRe.ReplaceAllString(node.Data, " "), " ")
+ }
+ return ctx.emit(data)
+
+ case html.ElementNode:
+ return ctx.handleElement(node)
+ }
+}
+
+func (ctx *textifyTraverseContext) traverseChildren(node *html.Node) error {
+ for c := node.FirstChild; c != nil; c = c.NextSibling {
+ if err := ctx.traverse(c); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func (ctx *textifyTraverseContext) emit(data string) error {
+ if data == "" {
+ return nil
+ }
+ var (
+ lines = ctx.breakLongLines(data)
+ err error
+ )
+ for _, line := range lines {
+ runes := []rune(line)
+ startsWithSpace := unicode.IsSpace(runes[0])
+ if !startsWithSpace && !ctx.endsWithSpace && !strings.HasPrefix(data, ".") {
+ if err = ctx.buf.WriteByte(' '); err != nil {
+ return err
+ }
+ ctx.lineLength++
+ }
+ ctx.endsWithSpace = unicode.IsSpace(runes[len(runes)-1])
+ for _, c := range line {
+ if _, err = ctx.buf.WriteString(string(c)); err != nil {
+ return err
+ }
+ ctx.lineLength++
+ if c == '\n' {
+ ctx.lineLength = 0
+ if ctx.prefix != "" {
+ if _, err = ctx.buf.WriteString(ctx.prefix); err != nil {
+ return err
+ }
+ }
+ }
+ }
+ }
+ return nil
+}
+
+const maxLineLen = 74
+
+func (ctx *textifyTraverseContext) breakLongLines(data string) []string {
+ // Only break lines when in blockquotes.
+ if ctx.blockquoteLevel == 0 {
+ return []string{data}
+ }
+ var (
+ ret = []string{}
+ runes = []rune(data)
+ l = len(runes)
+ existing = ctx.lineLength
+ )
+ if existing >= maxLineLen {
+ ret = append(ret, "\n")
+ existing = 0
+ }
+ for l+existing > maxLineLen {
+ i := maxLineLen - existing
+ for i >= 0 && !unicode.IsSpace(runes[i]) {
+ i--
+ }
+ if i == -1 {
+ // No spaces, so go the other way.
+ i = maxLineLen - existing
+ for i < l && !unicode.IsSpace(runes[i]) {
+ i++
+ }
+ }
+ ret = append(ret, string(runes[:i])+"\n")
+ for i < l && unicode.IsSpace(runes[i]) {
+ i++
+ }
+ runes = runes[i:]
+ l = len(runes)
+ existing = 0
+ }
+ if len(runes) > 0 {
+ ret = append(ret, string(runes))
+ }
+ return ret
+}
+
+func (ctx *textifyTraverseContext) normalizeHrefLink(link string) string {
+ link = strings.TrimSpace(link)
+ link = strings.TrimPrefix(link, "mailto:")
+ return link
+}
+
+// renderEachChild visits each direct child of a node and collects the sequence of
+// textuual representaitons separated by a single newline.
+func (ctx *textifyTraverseContext) renderEachChild(node *html.Node) (string, error) {
+ buf := &bytes.Buffer{}
+ for c := node.FirstChild; c != nil; c = c.NextSibling {
+ s, err := FromHTMLNode(c, ctx.options)
+ if err != nil {
+ return "", err
+ }
+ if _, err = buf.WriteString(s); err != nil {
+ return "", err
+ }
+ if c.NextSibling != nil {
+ if err = buf.WriteByte('\n'); err != nil {
+ return "", err
+ }
+ }
+ }
+ return buf.String(), nil
+}
+
+func getAttrVal(node *html.Node, attrName string) string {
+ for _, attr := range node.Attr {
+ if attr.Key == attrName {
+ return attr.Val
+ }
+ }
+
+ return ""
+}
diff --git a/vendor/github.com/jhillyerd/enmime/CONTRIBUTING.md b/vendor/github.com/jhillyerd/enmime/CONTRIBUTING.md
new file mode 100644
index 00000000..94e5e27b
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/CONTRIBUTING.md
@@ -0,0 +1,47 @@
+How to Contribute
+=================
+
+Enmime highly encourages third-party patches. There is a great deal of MIME
+encoded email out there, so it's likely you will encounter a scenario we
+haven't.
+
+### tl;dr:
+- File pull requests against the `develop` branch, not `master`!
+- Ensure clean run of `make test lint`
+
+
+## Getting Started
+
+If you anticipate your issue requiring a large patch, please first submit a
+GitHub issue describing the problem or feature. Attach an email that illustrates
+the scenario you are trying to improve if possible. You are also encouraged to
+outline the process you would like to use to resolve the issue. I will attempt
+to provide validation and/or guidance on your suggested approach.
+
+
+## Making Changes
+
+Enmime uses [git-flow] with default options. If you have git-flow installed,
+you can run `git flow feature start `.
+
+Without git-flow, create a topic branch from where you want to base your work:
+ - This is usually the `develop` branch, example command:
+ `git checkout origin/develop -b `
+ - Only target the `master` branch if the issue is already resolved in
+ `develop`.
+
+Once you are on your topic branch:
+
+1. Make commits of logical units.
+2. Add unit tests to exercise your changes.
+3. Scrub personally identifying information from test case emails, and
+ keep attachments short.
+4. Ensure the code builds and tests with `make test`
+5. Run the updated code through `make lint`
+
+
+## Thanks
+
+Thank you for contributing to enmime!
+
+[git-flow]: https://github.com/nvie/gitflow
diff --git a/vendor/github.com/jhillyerd/enmime/LICENSE b/vendor/github.com/jhillyerd/enmime/LICENSE
new file mode 100644
index 00000000..085224f8
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2012-2016 James Hillyerd, All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/jhillyerd/enmime/Makefile b/vendor/github.com/jhillyerd/enmime/Makefile
new file mode 100644
index 00000000..9f0fbae6
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/Makefile
@@ -0,0 +1,35 @@
+PKG := enmime
+SHELL := /bin/sh
+
+SRC := $(shell find . -type f -name '*.go' -not -path "./vendor/*")
+PKGS := $$(go list ./... | grep -v /vendor/)
+
+.PHONY: all build clean fmt install lint simplify test
+
+all: test lint install
+
+clean:
+ go clean
+
+deps:
+ go get -t ./...
+
+build: clean deps
+ go build
+
+install: build
+ go install
+
+test: clean deps
+ go test -race ./...
+
+fmt:
+ @gofmt -l -w $(SRC)
+
+simplify:
+ @gofmt -s -l -w $(SRC)
+
+lint:
+ @test -z "$(shell gofmt -l . | tee /dev/stderr)" || echo "[WARN] Fix formatting issues with 'make fmt'"
+ @golint -set_exit_status $${PKGS}
+ @go vet $${PKGS}
diff --git a/vendor/github.com/jhillyerd/enmime/README.md b/vendor/github.com/jhillyerd/enmime/README.md
new file mode 100644
index 00000000..eee64d46
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/README.md
@@ -0,0 +1,50 @@
+enmime
+================================================================================
+
+[![GoDoc](https://godoc.org/github.com/jhillyerd/enmime?status.png)][GoDoc]
+[![Build Status](https://travis-ci.org/jhillyerd/enmime.png?branch=master)][Build Status]
+[![Go Report Card](https://goreportcard.com/badge/github.com/jhillyerd/enmime)][Go Report Card]
+[![Coverage Status](https://coveralls.io/repos/github/jhillyerd/enmime/badge.svg)][Coverage Status]
+
+enmime is a MIME parsing library for Go. It's built on top of Go's included
+mime/multipart support, but is geared towards parsing MIME encoded emails.
+
+It is being developed in tandem with the [Inbucket] email service.
+
+API documentation can be found here:
+http://godoc.org/github.com/jhillyerd/enmime
+
+A brief guide to migrating from the old go.enmime API is available here:
+https://github.com/jhillyerd/enmime/wiki/Enmime-Migration-Guide
+
+
+## API Change Warning
+
+Part readers: `Part.Read()` and `Part.Utf8Reader` are now deprecated. Please
+use `Part.Content` instead. The deprecated readers will be removed in April
+2018.
+
+
+## Development Status
+
+enmime is approaching beta quality: it works but has not been tested with a wide
+variety of source data. It's possible the API will evolve slightly before an
+official release.
+
+Please see [CONTRIBUTING.md] if you'd like to contribute code to the project.
+
+
+## About
+
+enmime is written in [Google Go][Golang].
+
+enmime is open source software released under the MIT License. The latest
+version can be found at https://github.com/jhillyerd/enmime
+
+[Build Status]: https://travis-ci.org/jhillyerd/enmime
+[Coverage Status]: https://coveralls.io/github/jhillyerd/enmime
+[CONTRIBUTING.md]: https://github.com/jhillyerd/enmime/blob/develop/CONTRIBUTING.md
+[Inbucket]: http://www.inbucket.org/
+[GoDoc]: https://godoc.org/github.com/jhillyerd/enmime
+[Golang]: http://golang.org/
+[Go Report Card]: https://goreportcard.com/report/github.com/jhillyerd/enmime
diff --git a/vendor/github.com/jhillyerd/enmime/base64.go b/vendor/github.com/jhillyerd/enmime/base64.go
new file mode 100644
index 00000000..8a88a68e
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/base64.go
@@ -0,0 +1,69 @@
+package enmime
+
+import (
+ "fmt"
+ "io"
+)
+
+// base64CleanerTable notes byte values that should be stripped (-2), stripped w/ error (-1)
+var base64CleanerTable = []int8{
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -1, -1, -2, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+ -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1,
+}
+
+// base64Cleaner helps work around bugs in Go's built-in base64 decoder by stripping out
+// whitespace that would cause Go to lose count of things and issue an "illegal base64 data at
+// input byte..." error
+type base64Cleaner struct {
+ // Errors detected while cleaning base64 data
+ Errors []Error
+
+ r io.Reader
+ buffer [1024]byte
+}
+
+// Enforce io.Reader interface
+var _ io.Reader = &base64Cleaner{}
+
+// newBase64Cleaner returns a Base64Cleaner object for the specified reader. Base64Cleaner
+// implements the io.Reader interface.
+func newBase64Cleaner(r io.Reader) *base64Cleaner {
+ return &base64Cleaner{
+ Errors: make([]Error, 0),
+ r: r,
+ }
+}
+
+// Read method for io.Reader interface.
+func (bc *base64Cleaner) Read(p []byte) (n int, err error) {
+ // Size our buf to smallest of len(p) or len(bc.buffer)
+ size := len(bc.buffer)
+ if size > len(p) {
+ size = len(p)
+ }
+ buf := bc.buffer[:size]
+ bn, err := bc.r.Read(buf)
+ for i := 0; i < bn; i++ {
+ switch base64CleanerTable[buf[i]&0x7f] {
+ case -2:
+ // Strip these silently (tab, \n, \r, space, =)
+ case -1:
+ // Strip these, but warn the client
+ bc.Errors = append(bc.Errors, Error{
+ Name: ErrorMalformedBase64,
+ Detail: fmt.Sprintf("Unexpected %q in Base64 stream", buf[i]),
+ Severe: false,
+ })
+ default:
+ p[n] = buf[i]
+ n++
+ }
+ }
+ return
+}
diff --git a/vendor/github.com/jhillyerd/enmime/boundary.go b/vendor/github.com/jhillyerd/enmime/boundary.go
new file mode 100644
index 00000000..62fefcc2
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/boundary.go
@@ -0,0 +1,186 @@
+package enmime
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "io"
+ "io/ioutil"
+)
+
+// This constant needs to be at least 76 for this package to work correctly. This is because
+// \r\n--separator_of_len_70- would fill the buffer and it wouldn't be safe to consume a single byte
+// from it.
+const peekBufferSize = 4096
+
+type boundaryReader struct {
+ finished bool // No parts remain when finished
+ partsRead int // Number of parts read thus far
+ r *bufio.Reader // Source reader
+ nlPrefix []byte // NL + MIME boundary prefix
+ prefix []byte // MIME boundary prefix
+ final []byte // Final boundary prefix
+ buffer *bytes.Buffer // Content waiting to be read
+}
+
+// newBoundaryReader returns an initialized boundaryReader
+func newBoundaryReader(reader *bufio.Reader, boundary string) *boundaryReader {
+ fullBoundary := []byte("\n--" + boundary + "--")
+ return &boundaryReader{
+ r: reader,
+ nlPrefix: fullBoundary[:len(fullBoundary)-2],
+ prefix: fullBoundary[1 : len(fullBoundary)-2],
+ final: fullBoundary[1:],
+ buffer: new(bytes.Buffer),
+ }
+}
+
+// readUntilBoundary returns a buffer containing the content up until boundary
+func (b *boundaryReader) Read(dest []byte) (n int, err error) {
+ if b.buffer.Len() >= len(dest) {
+ // This read request can be satisfied entirely by the buffer
+ return b.buffer.Read(dest)
+ }
+
+ peek, err := b.r.Peek(peekBufferSize)
+ peekEOF := (err == io.EOF)
+ if err != nil && !peekEOF && err != bufio.ErrBufferFull {
+ // Unexpected error
+ return 0, err
+ }
+ var nCopy int
+ idx, complete := locateBoundary(peek, b.nlPrefix)
+ if idx != -1 {
+ // Peeked boundary prefix, read until that point
+ nCopy = idx
+ if !complete && nCopy == 0 {
+ // Incomplete boundary, move past it
+ nCopy = 1
+ }
+ } else {
+ // No boundary found, move forward a safe distance
+ if nCopy = len(peek) - len(b.nlPrefix) - 1; nCopy <= 0 {
+ nCopy = 0
+ if peekEOF {
+ // No more peek space remaining and no boundary found
+ return 0, io.ErrUnexpectedEOF
+ }
+ }
+ }
+ if nCopy > 0 {
+ if _, err = io.CopyN(b.buffer, b.r, int64(nCopy)); err != nil {
+ return 0, err
+ }
+ }
+
+ n, err = b.buffer.Read(dest)
+ if err == io.EOF && !complete {
+ // Only the buffer is empty, not the boundaryReader
+ return n, nil
+ }
+ return
+}
+
+// Next moves over the boundary to the next part, returns true if there is another part to be read.
+func (b *boundaryReader) Next() (bool, error) {
+ if b.finished {
+ return false, nil
+ }
+ if b.partsRead > 0 {
+ // Exhaust the current part to prevent errors when moving to the next part
+ _, _ = io.Copy(ioutil.Discard, b)
+ }
+ for {
+ line, err := b.r.ReadSlice('\n')
+ if err != nil && err != io.EOF {
+ return false, err
+ }
+ if len(line) > 0 && (line[0] == '\r' || line[0] == '\n') {
+ // Blank line
+ continue
+ }
+ if b.isTerminator(line) {
+ b.finished = true
+ return false, nil
+ }
+ if err != io.EOF && b.isDelimiter(line) {
+ // Start of a new part
+ b.partsRead++
+ return true, nil
+ }
+ if err == io.EOF {
+ return false, io.EOF
+ }
+ if b.partsRead == 0 {
+ // The first part didn't find the starting delimiter, burn off any preamble in front of
+ // the boundary
+ continue
+ }
+ b.finished = true
+ return false, fmt.Errorf("expecting boundary %q, got %q", string(b.prefix), string(line))
+ }
+}
+
+// isDelimiter returns true for --BOUNDARY\r\n but not --BOUNDARY--
+func (b *boundaryReader) isDelimiter(buf []byte) bool {
+ idx := bytes.Index(buf, b.prefix)
+ if idx == -1 {
+ return false
+ }
+
+ // Fast forward to the end of the boundary prefix
+ buf = buf[idx+len(b.prefix):]
+ buf = bytes.TrimLeft(buf, " \t")
+ if len(buf) > 0 {
+ if buf[0] == '\r' || buf[0] == '\n' {
+ return true
+ }
+ }
+
+ return false
+}
+
+// isTerminator returns true for --BOUNDARY--
+func (b *boundaryReader) isTerminator(buf []byte) bool {
+ idx := bytes.Index(buf, b.final)
+ return idx != -1
+}
+
+// Locate boundaryPrefix in buf, returning its starting idx. If complete is true, the boundary
+// is terminated properly in buf, otherwise it could be false due to running out of buffer, or
+// because it is not the actual boundary.
+//
+// Complete boundaries end in "--" or a newline
+func locateBoundary(buf, boundaryPrefix []byte) (idx int, complete bool) {
+ bpLen := len(boundaryPrefix)
+ idx = bytes.Index(buf, boundaryPrefix)
+ if idx == -1 {
+ return
+ }
+
+ // Handle CR if present
+ if idx > 0 && buf[idx-1] == '\r' {
+ idx--
+ bpLen++
+ }
+
+ // Fast forward to the end of the boundary prefix
+ buf = buf[idx+bpLen:]
+ if len(buf) == 0 {
+ // Need more bytes to verify completeness
+ return
+ }
+ if len(buf) > 1 {
+ if buf[0] == '-' && buf[1] == '-' {
+ return idx, true
+ }
+ }
+ buf = bytes.TrimLeft(buf, " \t")
+ if len(buf) > 0 {
+ if buf[0] == '\r' || buf[0] == '\n' {
+ return idx, true
+ }
+ }
+
+ return
+}
diff --git a/vendor/github.com/jhillyerd/enmime/charsets.go b/vendor/github.com/jhillyerd/enmime/charsets.go
new file mode 100644
index 00000000..6f62475c
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/charsets.go
@@ -0,0 +1,310 @@
+package enmime
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "regexp"
+ "strings"
+
+ "golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/charmap"
+ "golang.org/x/text/encoding/japanese"
+ "golang.org/x/text/encoding/korean"
+ "golang.org/x/text/encoding/simplifiedchinese"
+ "golang.org/x/text/encoding/traditionalchinese"
+ "golang.org/x/text/encoding/unicode"
+ "golang.org/x/text/transform"
+)
+
+/* copy from golang.org/x/net/html/charset/table.go */
+var encodings = map[string]struct {
+ e encoding.Encoding
+ name string
+}{
+ "unicode-1-1-utf-8": {encoding.Nop, "utf-8"},
+ "utf-8": {encoding.Nop, "utf-8"},
+ "utf8": {encoding.Nop, "utf-8"},
+ "866": {charmap.CodePage866, "ibm866"},
+ "cp866": {charmap.CodePage866, "ibm866"},
+ "csibm866": {charmap.CodePage866, "ibm866"},
+ "ibm866": {charmap.CodePage866, "ibm866"},
+ "csisolatin2": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso-8859-2": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso-ir-101": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso8859-2": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso88592": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso_8859-2": {charmap.ISO8859_2, "iso-8859-2"},
+ "iso_8859-2:1987": {charmap.ISO8859_2, "iso-8859-2"},
+ "l2": {charmap.ISO8859_2, "iso-8859-2"},
+ "latin2": {charmap.ISO8859_2, "iso-8859-2"},
+ "csisolatin3": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso-8859-3": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso-ir-109": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso8859-3": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso88593": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso_8859-3": {charmap.ISO8859_3, "iso-8859-3"},
+ "iso_8859-3:1988": {charmap.ISO8859_3, "iso-8859-3"},
+ "l3": {charmap.ISO8859_3, "iso-8859-3"},
+ "latin3": {charmap.ISO8859_3, "iso-8859-3"},
+ "csisolatin4": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso-8859-4": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso-ir-110": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso8859-4": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso88594": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso_8859-4": {charmap.ISO8859_4, "iso-8859-4"},
+ "iso_8859-4:1988": {charmap.ISO8859_4, "iso-8859-4"},
+ "l4": {charmap.ISO8859_4, "iso-8859-4"},
+ "latin4": {charmap.ISO8859_4, "iso-8859-4"},
+ "csisolatincyrillic": {charmap.ISO8859_5, "iso-8859-5"},
+ "cyrillic": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso-8859-5": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso-ir-144": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso8859-5": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso88595": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso_8859-5": {charmap.ISO8859_5, "iso-8859-5"},
+ "iso_8859-5:1988": {charmap.ISO8859_5, "iso-8859-5"},
+ "arabic": {charmap.ISO8859_6, "iso-8859-6"},
+ "asmo-708": {charmap.ISO8859_6, "iso-8859-6"},
+ "csiso88596e": {charmap.ISO8859_6, "iso-8859-6"},
+ "csiso88596i": {charmap.ISO8859_6, "iso-8859-6"},
+ "csisolatinarabic": {charmap.ISO8859_6, "iso-8859-6"},
+ "ecma-114": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso-8859-6": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso-8859-6-e": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso-8859-6-i": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso-ir-127": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso8859-6": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso88596": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso_8859-6": {charmap.ISO8859_6, "iso-8859-6"},
+ "iso_8859-6:1987": {charmap.ISO8859_6, "iso-8859-6"},
+ "csisolatingreek": {charmap.ISO8859_7, "iso-8859-7"},
+ "ecma-118": {charmap.ISO8859_7, "iso-8859-7"},
+ "elot_928": {charmap.ISO8859_7, "iso-8859-7"},
+ "greek": {charmap.ISO8859_7, "iso-8859-7"},
+ "greek8": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso-8859-7": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso-ir-126": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso8859-7": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso88597": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso_8859-7": {charmap.ISO8859_7, "iso-8859-7"},
+ "iso_8859-7:1987": {charmap.ISO8859_7, "iso-8859-7"},
+ "sun_eu_greek": {charmap.ISO8859_7, "iso-8859-7"},
+ "csiso88598e": {charmap.ISO8859_8, "iso-8859-8"},
+ "csisolatinhebrew": {charmap.ISO8859_8, "iso-8859-8"},
+ "hebrew": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso-8859-8": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso-8859-8-e": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso-ir-138": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso8859-8": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso88598": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso_8859-8": {charmap.ISO8859_8, "iso-8859-8"},
+ "iso_8859-8:1988": {charmap.ISO8859_8, "iso-8859-8"},
+ "visual": {charmap.ISO8859_8, "iso-8859-8"},
+ "csiso88598i": {charmap.ISO8859_8, "iso-8859-8-i"},
+ "iso-8859-8-i": {charmap.ISO8859_8, "iso-8859-8-i"},
+ "logical": {charmap.ISO8859_8, "iso-8859-8-i"},
+ "csisolatin6": {charmap.ISO8859_10, "iso-8859-10"},
+ "iso-8859-10": {charmap.ISO8859_10, "iso-8859-10"},
+ "iso-ir-157": {charmap.ISO8859_10, "iso-8859-10"},
+ "iso8859-10": {charmap.ISO8859_10, "iso-8859-10"},
+ "iso885910": {charmap.ISO8859_10, "iso-8859-10"},
+ "l6": {charmap.ISO8859_10, "iso-8859-10"},
+ "latin6": {charmap.ISO8859_10, "iso-8859-10"},
+ "iso-8859-13": {charmap.ISO8859_13, "iso-8859-13"},
+ "iso8859-13": {charmap.ISO8859_13, "iso-8859-13"},
+ "iso885913": {charmap.ISO8859_13, "iso-8859-13"},
+ "iso-8859-14": {charmap.ISO8859_14, "iso-8859-14"},
+ "iso8859-14": {charmap.ISO8859_14, "iso-8859-14"},
+ "iso885914": {charmap.ISO8859_14, "iso-8859-14"},
+ "csisolatin9": {charmap.ISO8859_15, "iso-8859-15"},
+ "iso-8859-15": {charmap.ISO8859_15, "iso-8859-15"},
+ "iso8859-15": {charmap.ISO8859_15, "iso-8859-15"},
+ "iso885915": {charmap.ISO8859_15, "iso-8859-15"},
+ "iso_8859-15": {charmap.ISO8859_15, "iso-8859-15"},
+ "l9": {charmap.ISO8859_15, "iso-8859-15"},
+ "iso-8859-16": {charmap.ISO8859_16, "iso-8859-16"},
+ "cskoi8r": {charmap.KOI8R, "koi8-r"},
+ "koi": {charmap.KOI8R, "koi8-r"},
+ "koi8": {charmap.KOI8R, "koi8-r"},
+ "koi8-r": {charmap.KOI8R, "koi8-r"},
+ "koi8_r": {charmap.KOI8R, "koi8-r"},
+ "koi8-u": {charmap.KOI8U, "koi8-u"},
+ "csmacintosh": {charmap.Macintosh, "macintosh"},
+ "mac": {charmap.Macintosh, "macintosh"},
+ "macintosh": {charmap.Macintosh, "macintosh"},
+ "x-mac-roman": {charmap.Macintosh, "macintosh"},
+ "dos-874": {charmap.Windows874, "windows-874"},
+ "iso-8859-11": {charmap.Windows874, "windows-874"},
+ "iso8859-11": {charmap.Windows874, "windows-874"},
+ "iso885911": {charmap.Windows874, "windows-874"},
+ "tis-620": {charmap.Windows874, "windows-874"},
+ "windows-874": {charmap.Windows874, "windows-874"},
+ "cp1250": {charmap.Windows1250, "windows-1250"},
+ "windows-1250": {charmap.Windows1250, "windows-1250"},
+ "x-cp1250": {charmap.Windows1250, "windows-1250"},
+ "cp1251": {charmap.Windows1251, "windows-1251"},
+ "windows-1251": {charmap.Windows1251, "windows-1251"},
+ "x-cp1251": {charmap.Windows1251, "windows-1251"},
+ "ansi_x3.4-1968": {charmap.Windows1252, "windows-1252"},
+ "ascii": {charmap.Windows1252, "windows-1252"},
+ "cp1252": {charmap.Windows1252, "windows-1252"},
+ "cp819": {charmap.Windows1252, "windows-1252"},
+ "csisolatin1": {charmap.Windows1252, "windows-1252"},
+ "ibm819": {charmap.Windows1252, "windows-1252"},
+ "iso-8859-1": {charmap.Windows1252, "windows-1252"},
+ "iso-ir-100": {charmap.Windows1252, "windows-1252"},
+ "iso8859-1": {charmap.Windows1252, "windows-1252"},
+ "iso8859_1": {charmap.Windows1252, "windows-1252"},
+ "iso88591": {charmap.Windows1252, "windows-1252"},
+ "iso_8859-1": {charmap.Windows1252, "windows-1252"},
+ "iso_8859-1:1987": {charmap.Windows1252, "windows-1252"},
+ "l1": {charmap.Windows1252, "windows-1252"},
+ "latin1": {charmap.Windows1252, "windows-1252"},
+ "us-ascii": {charmap.Windows1252, "windows-1252"},
+ "windows-1252": {charmap.Windows1252, "windows-1252"},
+ "x-cp1252": {charmap.Windows1252, "windows-1252"},
+ "cp1253": {charmap.Windows1253, "windows-1253"},
+ "windows-1253": {charmap.Windows1253, "windows-1253"},
+ "x-cp1253": {charmap.Windows1253, "windows-1253"},
+ "cp1254": {charmap.Windows1254, "windows-1254"},
+ "csisolatin5": {charmap.Windows1254, "windows-1254"},
+ "iso-8859-9": {charmap.Windows1254, "windows-1254"},
+ "iso-ir-148": {charmap.Windows1254, "windows-1254"},
+ "iso8859-9": {charmap.Windows1254, "windows-1254"},
+ "iso88599": {charmap.Windows1254, "windows-1254"},
+ "iso_8859-9": {charmap.Windows1254, "windows-1254"},
+ "iso_8859-9:1989": {charmap.Windows1254, "windows-1254"},
+ "l5": {charmap.Windows1254, "windows-1254"},
+ "latin5": {charmap.Windows1254, "windows-1254"},
+ "windows-1254": {charmap.Windows1254, "windows-1254"},
+ "x-cp1254": {charmap.Windows1254, "windows-1254"},
+ "cp1255": {charmap.Windows1255, "windows-1255"},
+ "windows-1255": {charmap.Windows1255, "windows-1255"},
+ "x-cp1255": {charmap.Windows1255, "windows-1255"},
+ "cp1256": {charmap.Windows1256, "windows-1256"},
+ "windows-1256": {charmap.Windows1256, "windows-1256"},
+ "x-cp1256": {charmap.Windows1256, "windows-1256"},
+ "cp1257": {charmap.Windows1257, "windows-1257"},
+ "windows-1257": {charmap.Windows1257, "windows-1257"},
+ "x-cp1257": {charmap.Windows1257, "windows-1257"},
+ "cp1258": {charmap.Windows1258, "windows-1258"},
+ "windows-1258": {charmap.Windows1258, "windows-1258"},
+ "x-cp1258": {charmap.Windows1258, "windows-1258"},
+ "x-mac-cyrillic": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
+ "x-mac-ukrainian": {charmap.MacintoshCyrillic, "x-mac-cyrillic"},
+ "chinese": {simplifiedchinese.GBK, "gbk"},
+ "csgb2312": {simplifiedchinese.GBK, "gbk"},
+ "csiso58gb231280": {simplifiedchinese.GBK, "gbk"},
+ "gb2312": {simplifiedchinese.GBK, "gbk"},
+ "gb_2312": {simplifiedchinese.GBK, "gbk"},
+ "gb_2312-80": {simplifiedchinese.GBK, "gbk"},
+ "gbk": {simplifiedchinese.GBK, "gbk"},
+ "iso-ir-58": {simplifiedchinese.GBK, "gbk"},
+ "x-gbk": {simplifiedchinese.GBK, "gbk"},
+ "gb18030": {simplifiedchinese.GB18030, "gb18030"},
+ "hz-gb-2312": {simplifiedchinese.HZGB2312, "hz-gb-2312"},
+ "big5": {traditionalchinese.Big5, "big5"},
+ "big5-hkscs": {traditionalchinese.Big5, "big5"},
+ "cn-big5": {traditionalchinese.Big5, "big5"},
+ "csbig5": {traditionalchinese.Big5, "big5"},
+ "x-x-big5": {traditionalchinese.Big5, "big5"},
+ "cseucpkdfmtjapanese": {japanese.EUCJP, "euc-jp"},
+ "euc-jp": {japanese.EUCJP, "euc-jp"},
+ "x-euc-jp": {japanese.EUCJP, "euc-jp"},
+ "csiso2022jp": {japanese.ISO2022JP, "iso-2022-jp"},
+ "iso-2022-jp": {japanese.ISO2022JP, "iso-2022-jp"},
+ "csshiftjis": {japanese.ShiftJIS, "shift_jis"},
+ "ms_kanji": {japanese.ShiftJIS, "shift_jis"},
+ "shift-jis": {japanese.ShiftJIS, "shift_jis"},
+ "shift_jis": {japanese.ShiftJIS, "shift_jis"},
+ "sjis": {japanese.ShiftJIS, "shift_jis"},
+ "windows-31j": {japanese.ShiftJIS, "shift_jis"},
+ "x-sjis": {japanese.ShiftJIS, "shift_jis"},
+ "cseuckr": {korean.EUCKR, "euc-kr"},
+ "csksc56011987": {korean.EUCKR, "euc-kr"},
+ "euc-kr": {korean.EUCKR, "euc-kr"},
+ "iso-ir-149": {korean.EUCKR, "euc-kr"},
+ "korean": {korean.EUCKR, "euc-kr"},
+ "ks_c_5601-1987": {korean.EUCKR, "euc-kr"},
+ "ks_c_5601-1989": {korean.EUCKR, "euc-kr"},
+ "ksc5601": {korean.EUCKR, "euc-kr"},
+ "ksc_5601": {korean.EUCKR, "euc-kr"},
+ "windows-949": {korean.EUCKR, "euc-kr"},
+ "csiso2022kr": {encoding.Replacement, "replacement"},
+ "iso-2022-kr": {encoding.Replacement, "replacement"},
+ "iso-2022-cn": {encoding.Replacement, "replacement"},
+ "iso-2022-cn-ext": {encoding.Replacement, "replacement"},
+ "utf-16be": {unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), "utf-16be"},
+ "utf-16": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
+ "utf-16le": {unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), "utf-16le"},
+ "x-user-defined": {charmap.XUserDefined, "x-user-defined"},
+ "iso646-us": {charmap.Windows1252, "windows-1252"}, // ISO646 isn't us-ascii but 1991 version is.
+ "iso: western": {charmap.Windows1252, "windows-1252"}, // same as iso-8859-1
+ "we8iso8859p1": {charmap.Windows1252, "windows-1252"}, // same as iso-8859-1
+ "iso=8859-1": {charmap.Windows1252, "windows-1252"}, // same as iso-8859-1
+ "cp936": {simplifiedchinese.GBK, "gbk"}, // same as gb2312
+ "cp850": {charmap.CodePage850, "cp850"},
+ "cp-850": {charmap.CodePage850, "cp850"},
+ "ibm850": {charmap.CodePage850, "cp850"},
+ "136": {traditionalchinese.Big5, "big5"}, // same as chinese big5
+}
+
+var metaTagCharsetRegexp = regexp.MustCompile(
+ `(?i)[a-zA-Z0-9_.:-]+)\s*"?`)
+var metaTagCharsetIndex int
+
+func init() {
+ // Find the submatch index for charset in metaTagCharsetRegexp
+ for i, name := range metaTagCharsetRegexp.SubexpNames() {
+ if name == "charset" {
+ metaTagCharsetIndex = i
+ break
+ }
+ }
+}
+
+// convertToUTF8String uses the provided charset to decode a slice of bytes into a normal
+// UTF-8 string.
+func convertToUTF8String(charset string, textBytes []byte) (string, error) {
+ if strings.ToLower(charset) == "utf-8" {
+ return string(textBytes), nil
+ }
+ csentry, ok := encodings[strings.ToLower(charset)]
+ if !ok {
+ return "", fmt.Errorf("Unsupported charset %q", charset)
+ }
+ input := bytes.NewReader(textBytes)
+ reader := transform.NewReader(input, csentry.e.NewDecoder())
+ output, err := ioutil.ReadAll(reader)
+ if err != nil {
+ return "", err
+ }
+ return string(output), nil
+}
+
+// newCharsetReader generates charset-conversion readers, converting from the provided charset into
+// UTF-8. CharsetReader is a factory signature defined by Golang's mime.WordDecoder
+//
+// This function is similar to: https://godoc.org/golang.org/x/net/html/charset#NewReaderLabel
+func newCharsetReader(charset string, input io.Reader) (io.Reader, error) {
+ if strings.ToLower(charset) == "utf-8" {
+ return input, nil
+ }
+ csentry, ok := encodings[strings.ToLower(charset)]
+ if !ok {
+ return nil, fmt.Errorf("Unsupported charset %q", charset)
+ }
+ return transform.NewReader(input, csentry.e.NewDecoder()), nil
+}
+
+// Look for charset in the html meta tag (v4.01 and v5)
+func findCharsetInHTML(html string) string {
+ charsetMatches := metaTagCharsetRegexp.FindAllStringSubmatch(html, -1)
+ if len(charsetMatches) > 0 {
+ return charsetMatches[0][metaTagCharsetIndex]
+ }
+
+ return ""
+}
diff --git a/vendor/github.com/jhillyerd/enmime/detect.go b/vendor/github.com/jhillyerd/enmime/detect.go
new file mode 100644
index 00000000..fa013ec2
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/detect.go
@@ -0,0 +1,83 @@
+package enmime
+
+import (
+ "net/textproto"
+ "strings"
+)
+
+// detectMultipartMessage returns true if the message has a recognized multipart Content-Type header
+func detectMultipartMessage(root *Part) bool {
+ // Parse top-level multipart
+ ctype := root.Header.Get(hnContentType)
+ mediatype, _, err := parseMediaType(ctype)
+ if err != nil {
+ return false
+ }
+ // According to rfc2046#section-5.1.7 all other multipart should
+ // be treated as multipart/mixed
+ return strings.HasPrefix(mediatype, ctMultipartPrefix)
+}
+
+// detectAttachmentHeader returns true, if the given header defines an attachment. First it checks
+// if the Content-Disposition header defines an attachement or inline attachment. If this test is
+// false, the Content-Type header is checked for attachment, but not inline. Email clients use
+// inline for their text bodies.
+//
+// Valid Attachment-Headers:
+//
+// - Content-Disposition: attachment; filename="frog.jpg"
+// - Content-Disposition: inline; filename="frog.jpg"
+// - Content-Type: attachment; filename="frog.jpg"
+func detectAttachmentHeader(header textproto.MIMEHeader) bool {
+ mediatype, _, _ := parseMediaType(header.Get(hnContentDisposition))
+ if strings.ToLower(mediatype) == cdAttachment ||
+ strings.ToLower(mediatype) == cdInline {
+ return true
+ }
+
+ mediatype, _, _ = parseMediaType(header.Get(hnContentType))
+ return strings.ToLower(mediatype) == cdAttachment
+}
+
+// detectTextHeader returns true, if the the MIME headers define a valid 'text/plain' or 'text/html'
+// part. If the emptyContentTypeIsPlain argument is set to true, a missing Content-Type header will
+// result in a positive plain part detection.
+func detectTextHeader(header textproto.MIMEHeader, emptyContentTypeIsText bool) bool {
+ ctype := header.Get(hnContentType)
+ if ctype == "" && emptyContentTypeIsText {
+ return true
+ }
+
+ mediatype, _, err := parseMediaType(ctype)
+ if err != nil {
+ return false
+ }
+ switch mediatype {
+ case ctTextPlain, ctTextHTML:
+ return true
+ }
+
+ return false
+}
+
+// detectBinaryBody returns true if the mail header defines a binary body.
+func detectBinaryBody(root *Part) bool {
+ if detectTextHeader(root.Header, true) {
+ return false
+ }
+
+ isBin := detectAttachmentHeader(root.Header)
+ if !isBin {
+ // This must be an attachment, if the Content-Type is not
+ // 'text/plain' or 'text/html'.
+ // Example:
+ // Content-Type: application/pdf; name="doc.pdf"
+ mediatype, _, _ := parseMediaType(root.Header.Get(hnContentType))
+ mediatype = strings.ToLower(mediatype)
+ if mediatype != ctTextPlain && mediatype != ctTextHTML {
+ return true
+ }
+ }
+
+ return isBin
+}
diff --git a/vendor/github.com/jhillyerd/enmime/doc.go b/vendor/github.com/jhillyerd/enmime/doc.go
new file mode 100644
index 00000000..e53d1db2
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/doc.go
@@ -0,0 +1,37 @@
+// Package enmime implements a MIME parsing library for Go. It's built on top of Go's included
+// mime/multipart support, but is geared towards parsing MIME encoded emails.
+//
+// Overview
+//
+// The enmime API has two conceptual layers. The lower layer is a tree of Part structs,
+// representing each component of a decoded MIME message. The upper layer, called an Envelope
+// provides an intuitive way to interact with a MIME message.
+//
+// Part Tree
+//
+// Calling ReadParts causes enmime to parse the body of a MIME message into a tree of Part objects,
+// each of which is aware of its content type, filename and headers. Each Part implements
+// io.Reader, providing access to the content it represents. If the part was encoded in
+// quoted-printable or base64, it is decoded prior to being accessed by the Reader.
+//
+// If you need to locate a particular Part, you can pass a custom PartMatcher function into the
+// BreadthMatchFirst() or DepthMatchFirst() methods to search the Part tree. BreadthMatchAll() and
+// DepthMatchAll() will collect all Parts matching your criteria.
+//
+// The Envelope
+//
+// EnvelopeFromMessage returns an Envelope struct. Behind the scenes a Part tree is constructed,
+// and then sorted into the correct fields of the Envelope.
+//
+// The Envelope contains both the plain text and HTML portions of the email. If there was no plain
+// text Part available, the HTML Part will be downconverted using the html2text library[1]. The
+// root of the Part tree, as well as slices of the inline and attachment Parts are also available.
+//
+// Please note that enmime parses messages into memory, so it is not likely to perform well with
+// multi-gigabyte attachments.
+//
+// enmime is open source software released under the MIT License. The latest version can be found
+// at https://github.com/jhillyerd/enmime
+//
+// [1]: https://github.com/jaytaylor/html2text
+package enmime
diff --git a/vendor/github.com/jhillyerd/enmime/envelope.go b/vendor/github.com/jhillyerd/enmime/envelope.go
new file mode 100644
index 00000000..acd1cece
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/envelope.go
@@ -0,0 +1,273 @@
+package enmime
+
+import (
+ "fmt"
+ "io"
+ "net/mail"
+ "net/textproto"
+ "strings"
+
+ "github.com/jaytaylor/html2text"
+)
+
+// Envelope is a simplified wrapper for MIME email messages.
+type Envelope struct {
+ Text string // The plain text portion of the message
+ HTML string // The HTML portion of the message
+ Root *Part // The top-level Part
+ Attachments []*Part // All parts having a Content-Disposition of attachment
+ Inlines []*Part // All parts having a Content-Disposition of inline
+ OtherParts []*Part // All parts not in Attachments and Inlines
+ Errors []*Error // Errors encountered while parsing
+ header *textproto.MIMEHeader // Header from original message
+}
+
+// GetHeader processes the specified header for RFC 2047 encoded words and returns the result as a
+// UTF-8 string
+func (e *Envelope) GetHeader(name string) string {
+ if e.header == nil {
+ return ""
+ }
+ return decodeHeader(e.header.Get(name))
+}
+
+// AddressList returns a mail.Address slice with RFC 2047 encoded names converted to UTF-8
+func (e *Envelope) AddressList(key string) ([]*mail.Address, error) {
+ if e.header == nil {
+ return nil, fmt.Errorf("No headers available")
+ }
+ if !AddressHeaders[strings.ToLower(key)] {
+ return nil, fmt.Errorf("%s is not an address header", key)
+ }
+
+ str := decodeToUTF8Base64Header(e.header.Get(key))
+ if str == "" {
+ return nil, mail.ErrHeaderNotPresent
+ }
+ // These statements are handy for debugging ParseAddressList errors
+ // fmt.Println("in: ", m.header.Get(key))
+ // fmt.Println("out: ", str)
+ ret, err := mail.ParseAddressList(str)
+ if err != nil {
+ return nil, err
+ }
+ return ret, nil
+}
+
+// ReadEnvelope is a wrapper around ReadParts and EnvelopeFromPart. It parses the content of the
+// provided reader into an Envelope, downconverting HTML to plain text if needed, and sorting the
+// attachments, inlines and other parts into their respective slices. Errors are collected from all
+// Parts and placed into the Envelope.Errors slice.
+func ReadEnvelope(r io.Reader) (*Envelope, error) {
+ // Read MIME parts from reader
+ root, err := ReadParts(r)
+ if err != nil {
+ return nil, fmt.Errorf("Failed to ReadParts: %v", err)
+ }
+ return EnvelopeFromPart(root)
+}
+
+// EnvelopeFromPart uses the provided Part tree to build an Envelope, downconverting HTML to plain
+// text if needed, and sorting the attachments, inlines and other parts into their respective
+// slices. Errors are collected from all Parts and placed into the Envelopes Errors slice.
+func EnvelopeFromPart(root *Part) (*Envelope, error) {
+ e := &Envelope{
+ Root: root,
+ header: &root.Header,
+ }
+
+ if detectMultipartMessage(root) {
+ // Multi-part message (message with attachments, etc)
+ if err := parseMultiPartBody(root, e); err != nil {
+ return nil, err
+ }
+ } else {
+ if detectBinaryBody(root) {
+ // Attachment only, no text
+ if err := parseBinaryOnlyBody(root, e); err != nil {
+ return nil, err
+ }
+ } else {
+ // Only text, no attachments
+ if err := parseTextOnlyBody(root, e); err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ // Down-convert HTML to text if necessary
+ if e.Text == "" && e.HTML != "" {
+ // We always warn when this happens
+ e.Root.addWarning(
+ ErrorPlainTextFromHTML,
+ "Message did not contain a text/plain part")
+ var err error
+ if e.Text, err = html2text.FromString(e.HTML); err != nil {
+ // Downcoversion shouldn't fail
+ e.Text = ""
+ p := e.Root.BreadthMatchFirst(matchHTMLBodyPart)
+ p.addError(
+ ErrorPlainTextFromHTML,
+ "Failed to downconvert HTML: %v",
+ err)
+ }
+ }
+
+ // Copy part errors into Envelope
+ if e.Root != nil {
+ _ = e.Root.DepthMatchAll(func(part *Part) bool {
+ // Using DepthMatchAll to traverse all parts, don't care about result
+ for i := range part.Errors {
+ // Index is required here to get the correct address, &value from range
+ // points to a locally scoped variable
+ e.Errors = append(e.Errors, &part.Errors[i])
+ }
+ return false
+ })
+ }
+
+ return e, nil
+}
+
+// parseTextOnlyBody parses a plain text message in root that has MIME-like headers, but
+// only contains a single part - no boundaries, etc. The result is placed in e.
+func parseTextOnlyBody(root *Part, e *Envelope) error {
+ // Determine character set
+ var charset string
+ var isHTML bool
+ if ctype := root.Header.Get(hnContentType); ctype != "" {
+ if mediatype, mparams, err := parseMediaType(ctype); err == nil {
+ isHTML = (mediatype == ctTextHTML)
+ if mparams[hpCharset] != "" {
+ charset = mparams[hpCharset]
+ }
+ }
+ }
+
+ // Read transcoded text
+ if isHTML {
+ rawHTML := string(root.Content)
+ // Note: Empty e.Text will trigger html2text conversion
+ e.HTML = rawHTML
+ if charset == "" {
+ // Search for charset in HTML metadata
+ if charset = findCharsetInHTML(rawHTML); charset != "" {
+ // Found charset in HTML
+ if convHTML, err := convertToUTF8String(charset, root.Content); err == nil {
+ // Successful conversion
+ e.HTML = convHTML
+ } else {
+ // Conversion failed
+ root.addWarning(ErrorCharsetConversion, err.Error())
+ }
+ }
+ }
+ } else {
+ e.Text = string(root.Content)
+ }
+
+ return nil
+}
+
+// parseBinaryOnlyBody parses a message where the only content is a binary attachment with no
+// other parts. The result is placed in e.
+func parseBinaryOnlyBody(root *Part, e *Envelope) error {
+ // Determine mediatype
+ ctype := root.Header.Get(hnContentType)
+ mediatype, mparams, err := parseMediaType(ctype)
+ if err != nil {
+ mediatype = cdAttachment
+ }
+
+ // Determine and set headers for: content disposition, filename and character set
+ root.setupContentHeaders(mparams)
+
+ // Add our part to the appropriate section of the Envelope
+ e.Root = NewPart(nil, mediatype)
+
+ // Add header from binary only part
+ e.Root.Header = root.Header
+
+ if root.Disposition == cdInline {
+ e.Inlines = append(e.Inlines, root)
+ } else {
+ e.Attachments = append(e.Attachments, root)
+ }
+
+ return nil
+}
+
+// parseMultiPartBody parses a multipart message in root. The result is placed in e.
+func parseMultiPartBody(root *Part, e *Envelope) error {
+ // Parse top-level multipart
+ ctype := root.Header.Get(hnContentType)
+ mediatype, params, err := parseMediaType(ctype)
+ if err != nil {
+ return fmt.Errorf("Unable to parse media type: %v", err)
+ }
+ if !strings.HasPrefix(mediatype, ctMultipartPrefix) {
+ return fmt.Errorf("Unknown mediatype: %v", mediatype)
+ }
+ boundary := params[hpBoundary]
+ if boundary == "" {
+ return fmt.Errorf("Unable to locate boundary param in Content-Type header")
+ }
+
+ // Locate text body
+ if mediatype == ctMultipartAltern {
+ p := root.BreadthMatchFirst(func(p *Part) bool {
+ return p.ContentType == ctTextPlain && p.Disposition != cdAttachment
+ })
+ if p != nil {
+ e.Text = string(p.Content)
+ }
+ } else {
+ // multipart is of a mixed type
+ parts := root.DepthMatchAll(func(p *Part) bool {
+ return p.ContentType == ctTextPlain && p.Disposition != cdAttachment
+ })
+ for i, p := range parts {
+ if i > 0 {
+ e.Text += "\n--\n"
+ }
+ e.Text += string(p.Content)
+ }
+ }
+
+ // Locate HTML body
+ p := root.BreadthMatchFirst(matchHTMLBodyPart)
+ if p != nil {
+ e.HTML += string(p.Content)
+ }
+
+ // Locate attachments
+ e.Attachments = root.BreadthMatchAll(func(p *Part) bool {
+ return p.Disposition == cdAttachment || p.ContentType == ctAppOctetStream
+ })
+
+ // Locate inlines
+ e.Inlines = root.BreadthMatchAll(func(p *Part) bool {
+ return p.Disposition == cdInline
+ })
+
+ // Locate others parts not considered in attachments or inlines
+ e.OtherParts = root.BreadthMatchAll(func(p *Part) bool {
+ if strings.HasPrefix(p.ContentType, ctMultipartPrefix) {
+ return false
+ }
+ if p.Disposition != "" {
+ return false
+ }
+ if p.ContentType == ctAppOctetStream {
+ return false
+ }
+ return p.ContentType != ctTextPlain && p.ContentType != ctTextHTML
+ })
+
+ return nil
+}
+
+// Used by Part matchers to locate the HTML body. Not inlined because it's used in multiple places.
+func matchHTMLBodyPart(p *Part) bool {
+ return p.ContentType == ctTextHTML && p.Disposition != cdAttachment
+}
diff --git a/vendor/github.com/jhillyerd/enmime/error.go b/vendor/github.com/jhillyerd/enmime/error.go
new file mode 100644
index 00000000..d202ba36
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/error.go
@@ -0,0 +1,60 @@
+package enmime
+
+import (
+ "fmt"
+)
+
+const (
+ // ErrorMalformedBase64 name
+ ErrorMalformedBase64 = "Malformed Base64"
+ // ErrorMalformedHeader name
+ ErrorMalformedHeader = "Malformed Header"
+ // ErrorMissingBoundary name
+ ErrorMissingBoundary = "Missing Boundary"
+ // ErrorMissingContentType name
+ ErrorMissingContentType = "Missing Content-Type"
+ // ErrorCharsetConversion name
+ ErrorCharsetConversion = "Character Set Conversion"
+ // ErrorContentEncoding name
+ ErrorContentEncoding = "Content Encoding"
+ // ErrorPlainTextFromHTML name
+ ErrorPlainTextFromHTML = "Plain Text from HTML"
+)
+
+// Error describes an error encountered while parsing.
+type Error struct {
+ Name string // The name or type of error encountered, from Error consts
+ Detail string // Additional detail about the cause of the error, if available
+ Severe bool // Indicates that a portion of the message was lost during parsing
+}
+
+// String formats the enmime.Error as a string
+func (e *Error) String() string {
+ sev := "W"
+ if e.Severe {
+ sev = "E"
+ }
+ return fmt.Sprintf("[%s] %s: %s", sev, e.Name, e.Detail)
+}
+
+// addWarning builds a severe Error and appends to the Part error slice
+func (p *Part) addError(name string, detailFmt string, args ...interface{}) {
+ p.Errors = append(
+ p.Errors,
+ Error{
+ name,
+ fmt.Sprintf(detailFmt, args...),
+ true,
+ })
+}
+
+// addWarning builds a non-severe Error and appends to the Part error slice
+func (p *Part) addWarning(name string, detailFmt string, args ...interface{}) {
+ p.Errors = append(
+ p.Errors,
+ Error{
+ name,
+ fmt.Sprintf(detailFmt, args...),
+ false,
+ })
+}
diff --git a/vendor/github.com/jhillyerd/enmime/header.go b/vendor/github.com/jhillyerd/enmime/header.go
new file mode 100644
index 00000000..cf3e36cc
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/header.go
@@ -0,0 +1,198 @@
+package enmime
+
+import (
+ "bufio"
+ "bytes"
+ "errors"
+ "fmt"
+ "io"
+ "mime"
+ "net/textproto"
+ "strings"
+)
+
+const (
+ // Standard MIME content dispositions
+ cdAttachment = "attachment"
+ cdInline = "inline"
+
+ // Standard MIME content types
+ ctAppOctetStream = "application/octet-stream"
+ ctMultipartAltern = "multipart/alternative"
+ ctMultipartPrefix = "multipart/"
+ ctTextPlain = "text/plain"
+ ctTextHTML = "text/html"
+
+ // Standard MIME header names
+ hnContentDisposition = "Content-Disposition"
+ hnContentEncoding = "Content-Transfer-Encoding"
+ hnContentType = "Content-Type"
+
+ // Standard MIME header parameters
+ hpBoundary = "boundary"
+ hpCharset = "charset"
+ hpFile = "file"
+ hpFilename = "filename"
+ hpName = "name"
+)
+
+var errEmptyHeaderBlock = errors.New("empty header block")
+
+// AddressHeaders is the set of SMTP headers that contain email addresses, used by
+// Envelope.AddressList(). Key characters must be all lowercase.
+var AddressHeaders = map[string]bool{
+ "bcc": true,
+ "cc": true,
+ "delivered-to": true,
+ "from": true,
+ "reply-to": true,
+ "to": true,
+ "sender": true,
+ "resent-bcc": true,
+ "resent-cc": true,
+ "resent-from": true,
+ "resent-reply-to": true,
+ "resent-to": true,
+ "resent-sender": true,
+}
+
+func debug(format string, args ...interface{}) {
+ if false {
+ fmt.Printf(format, args...)
+ fmt.Println()
+ }
+}
+
+// Terminology from RFC 2047:
+// encoded-word: the entire =?charset?encoding?encoded-text?= string
+// charset: the character set portion of the encoded word
+// encoding: the character encoding type used for the encoded-text
+// encoded-text: the text we are decoding
+
+// readHeader reads a block of SMTP or MIME headers and returns a textproto.MIMEHeader.
+// Header parse warnings & errors will be added to p.Errors, io errors will be returned directly.
+func readHeader(r *bufio.Reader, p *Part) (textproto.MIMEHeader, error) {
+ // buf holds the massaged output for textproto.Reader.ReadMIMEHeader()
+ buf := &bytes.Buffer{}
+ tp := textproto.NewReader(r)
+ firstHeader := true
+ for {
+ // Pull out each line of the headers as a temporary slice s
+ s, err := tp.ReadLineBytes()
+ if err != nil {
+ if err == io.ErrUnexpectedEOF && buf.Len() == 0 {
+ return nil, errEmptyHeaderBlock
+ } else if err == io.EOF {
+ buf.Write([]byte{'\r', '\n'})
+ break
+ }
+ return nil, err
+ }
+ firstColon := bytes.IndexByte(s, ':')
+ firstSpace := bytes.IndexAny(s, " \t\n\r")
+ if firstSpace == 0 {
+ // Starts with space: continuation
+ buf.WriteByte(' ')
+ buf.Write(textproto.TrimBytes(s))
+ continue
+ }
+ if firstColon == 0 {
+ // Can't parse line starting with colon: skip
+ p.addError(ErrorMalformedHeader, "Header line %q started with a colon", s)
+ continue
+ }
+ if firstColon > 0 {
+ // Contains a colon, treat as a new header line
+ if !firstHeader {
+ // New Header line, end the previous
+ buf.Write([]byte{'\r', '\n'})
+ }
+ s = textproto.TrimBytes(s)
+ buf.Write(s)
+ firstHeader = false
+ } else {
+ // No colon: potential non-indented continuation
+ if len(s) > 0 {
+ // Attempt to detect and repair a non-indented continuation of previous line
+ buf.WriteByte(' ')
+ buf.Write(s)
+ p.addWarning(ErrorMalformedHeader, "Continued line %q was not indented", s)
+ } else {
+ // Empty line, finish header parsing
+ buf.Write([]byte{'\r', '\n'})
+ break
+ }
+ }
+ }
+ buf.Write([]byte{'\r', '\n'})
+ tr := textproto.NewReader(bufio.NewReader(buf))
+ header, err := tr.ReadMIMEHeader()
+ return header, err
+}
+
+// decodeHeader decodes a single line (per RFC 2047) using Golang's mime.WordDecoder
+func decodeHeader(input string) string {
+ if !strings.Contains(input, "=?") {
+ // Don't scan if there is nothing to do here
+ return input
+ }
+
+ dec := new(mime.WordDecoder)
+ dec.CharsetReader = newCharsetReader
+ header, err := dec.DecodeHeader(input)
+ if err != nil {
+ return input
+ }
+ return header
+}
+
+// decodeToUTF8Base64Header decodes a MIME header per RFC 2047, reencoding to =?utf-8b?
+func decodeToUTF8Base64Header(input string) string {
+ if !strings.Contains(input, "=?") {
+ // Don't scan if there is nothing to do here
+ return input
+ }
+
+ debug("input = %q", input)
+ tokens := strings.FieldsFunc(input, isWhiteSpaceRune)
+ output := make([]string, len(tokens))
+ for i, token := range tokens {
+ if len(token) > 4 && strings.Contains(token, "=?") {
+ // Stash parenthesis, they should not be encoded
+ prefix := ""
+ suffix := ""
+ if token[0] == '(' {
+ prefix = "("
+ token = token[1:]
+ }
+ if token[len(token)-1] == ')' {
+ suffix = ")"
+ token = token[:len(token)-1]
+ }
+ // Base64 encode token
+ output[i] = prefix + mime.BEncoding.Encode("UTF-8", decodeHeader(token)) + suffix
+ } else {
+ output[i] = token
+ }
+ debug("%v %q %q", i, token, output[i])
+ }
+
+ // Return space separated tokens
+ return strings.Join(output, " ")
+}
+
+// Detects a RFC-822 linear-white-space, passed to strings.FieldsFunc
+func isWhiteSpaceRune(r rune) bool {
+ switch r {
+ case ' ':
+ return true
+ case '\t':
+ return true
+ case '\r':
+ return true
+ case '\n':
+ return true
+ default:
+ return false
+ }
+}
diff --git a/vendor/github.com/jhillyerd/enmime/match.go b/vendor/github.com/jhillyerd/enmime/match.go
new file mode 100644
index 00000000..c8f7d593
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/match.go
@@ -0,0 +1,107 @@
+package enmime
+
+import (
+ "container/list"
+)
+
+// PartMatcher is a function type that you must implement to search for Parts using the
+// BreadthMatch* functions. Implementators should inspect the provided Part and return true if it
+// matches your criteria.
+type PartMatcher func(part *Part) bool
+
+// BreadthMatchFirst performs a breadth first search of the Part tree and returns the first part
+// that causes the given matcher to return true
+func (p *Part) BreadthMatchFirst(matcher PartMatcher) *Part {
+ q := list.New()
+ q.PushBack(p)
+
+ // Push children onto queue and attempt to match in that order
+ for q.Len() > 0 {
+ e := q.Front()
+ p := e.Value.(*Part)
+ if matcher(p) {
+ return p
+ }
+ q.Remove(e)
+ c := p.FirstChild
+ for c != nil {
+ q.PushBack(c)
+ c = c.NextSibling
+ }
+ }
+
+ return nil
+}
+
+// BreadthMatchAll performs a breadth first search of the Part tree and returns all parts that cause
+// the given matcher to return true
+func (p *Part) BreadthMatchAll(matcher PartMatcher) []*Part {
+ q := list.New()
+ q.PushBack(p)
+
+ matches := make([]*Part, 0, 10)
+
+ // Push children onto queue and attempt to match in that order
+ for q.Len() > 0 {
+ e := q.Front()
+ p := e.Value.(*Part)
+ if matcher(p) {
+ matches = append(matches, p)
+ }
+ q.Remove(e)
+ c := p.FirstChild
+ for c != nil {
+ q.PushBack(c)
+ c = c.NextSibling
+ }
+ }
+
+ return matches
+}
+
+// DepthMatchFirst performs a depth first search of the Part tree and returns the first part that
+// causes the given matcher to return true
+func (p *Part) DepthMatchFirst(matcher PartMatcher) *Part {
+ root := p
+ for {
+ if matcher(p) {
+ return p
+ }
+ c := p.FirstChild
+ if c != nil {
+ p = c
+ } else {
+ for p.NextSibling == nil {
+ if p == root {
+ return nil
+ }
+ p = p.Parent
+ }
+ p = p.NextSibling
+ }
+ }
+}
+
+// DepthMatchAll performs a depth first search of the Part tree and returns all parts that causes
+// the given matcher to return true
+func (p *Part) DepthMatchAll(matcher PartMatcher) []*Part {
+ root := p
+ matches := make([]*Part, 0, 10)
+ for {
+ if matcher(p) {
+ matches = append(matches, p)
+ }
+ c := p.FirstChild
+ if c != nil {
+ p = c
+ } else {
+ for p.NextSibling == nil {
+ if p == root {
+ return matches
+ }
+ p = p.Parent
+ }
+ p = p.NextSibling
+ }
+ }
+}
diff --git a/vendor/github.com/jhillyerd/enmime/part.go b/vendor/github.com/jhillyerd/enmime/part.go
new file mode 100644
index 00000000..cecd30e7
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/part.go
@@ -0,0 +1,344 @@
+package enmime
+
+import (
+ "bufio"
+ "bytes"
+ "encoding/base64"
+ "fmt"
+ "io"
+ "io/ioutil"
+ "mime"
+ "mime/quotedprintable"
+ "net/textproto"
+ "strconv"
+ "strings"
+)
+
+// Part represents a node in the MIME multipart tree. The Content-Type, Disposition and File Name
+// are parsed out of the header for easier access.
+type Part struct {
+ PartID string // PartID labels this parts position within the tree
+ Header textproto.MIMEHeader // Header for this Part
+ Parent *Part // Parent of this part (can be nil)
+ FirstChild *Part // FirstChild is the top most child of this part
+ NextSibling *Part // NextSibling of this part
+ ContentType string // ContentType header without parameters
+ Disposition string // Content-Disposition header without parameters
+ FileName string // The file-name from disposition or type header
+ Charset string // The content charset encoding label
+ Errors []Error // Errors encountered while parsing this part
+ Content []byte // Content after decoding, UTF-8 conversion if applicable
+ Epilogue []byte // Epilogue contains data following the closing boundary marker
+ Utf8Reader io.Reader // DEPRECATED: The decoded content converted to UTF-8
+
+ boundary string // Boundary marker used within this part
+ rawReader io.Reader // The raw Part content, no decoding or charset conversion
+ decodedReader io.Reader // The content decoded from quoted-printable or base64
+}
+
+// NewPart creates a new Part object. It does not update the parents FirstChild attribute.
+func NewPart(parent *Part, contentType string) *Part {
+ return &Part{Parent: parent, ContentType: contentType}
+}
+
+// Read returns the decoded & UTF-8 converted content; implements io.Reader.
+func (p *Part) Read(b []byte) (n int, err error) {
+ if p.Utf8Reader == nil {
+ return 0, io.EOF
+ }
+ return p.Utf8Reader.Read(b)
+}
+
+// setupContentHeaders uses Content-Type media params and Content-Disposition headers to populate
+// the disposition, filename, and charset fields.
+func (p *Part) setupContentHeaders(mediaParams map[string]string) {
+ // Determine content disposition, filename, character set
+ disposition, dparams, err := parseMediaType(p.Header.Get(hnContentDisposition))
+ if err == nil {
+ // Disposition is optional
+ p.Disposition = disposition
+ p.FileName = decodeHeader(dparams[hpFilename])
+ }
+ if p.FileName == "" && mediaParams[hpName] != "" {
+ p.FileName = decodeHeader(mediaParams[hpName])
+ }
+ if p.FileName == "" && mediaParams[hpFile] != "" {
+ p.FileName = decodeHeader(mediaParams[hpFile])
+ }
+ if p.Charset == "" {
+ p.Charset = mediaParams[hpCharset]
+ }
+}
+
+// buildContentReaders sets up the decodedReader and utf8Reader based on the Part headers. If no
+// translation is required at a particular stage, the reader will be the same as its predecessor.
+// If the content encoding type is not recognized, no effort will be made to do character set
+// conversion.
+func (p *Part) buildContentReaders(r io.Reader) error {
+ // Read raw content into buffer
+ buf := new(bytes.Buffer)
+ if _, err := buf.ReadFrom(r); err != nil {
+ return err
+ }
+
+ var contentReader io.Reader = buf
+ valid := true
+
+ // Raw content reader
+ p.rawReader = contentReader
+
+ // Allow later access to Base64 errors
+ var b64cleaner *base64Cleaner
+
+ // Build content decoding reader
+ encoding := p.Header.Get(hnContentEncoding)
+ switch strings.ToLower(encoding) {
+ case "quoted-printable":
+ contentReader = newQPCleaner(contentReader)
+ contentReader = quotedprintable.NewReader(contentReader)
+ case "base64":
+ b64cleaner = newBase64Cleaner(contentReader)
+ contentReader = base64.NewDecoder(base64.RawStdEncoding, b64cleaner)
+ case "8bit", "7bit", "binary", "":
+ // No decoding required
+ default:
+ // Unknown encoding
+ valid = false
+ p.addWarning(
+ ErrorContentEncoding,
+ "Unrecognized Content-Transfer-Encoding type %q",
+ encoding)
+ }
+ p.decodedReader = contentReader
+
+ if valid && !detectAttachmentHeader(p.Header) {
+ // decodedReader is good; build character set conversion reader
+ if p.Charset != "" {
+ if reader, err := newCharsetReader(p.Charset, contentReader); err == nil {
+ contentReader = reader
+ } else {
+ // Try to parse charset again here to see if we can salvage some badly formed ones
+ // like charset="charset=utf-8"
+ charsetp := strings.Split(p.Charset, "=")
+ if strings.ToLower(charsetp[0]) == "charset" && len(charsetp) > 1 {
+ p.Charset = charsetp[1]
+ if reader, err := newCharsetReader(p.Charset, contentReader); err == nil {
+ contentReader = reader
+ } else {
+ // Failed to get a conversion reader
+ p.addWarning(ErrorCharsetConversion, err.Error())
+ }
+ } else {
+ // Failed to get a conversion reader
+ p.addWarning(ErrorCharsetConversion, err.Error())
+ }
+ }
+ }
+ }
+ // Messy until Utf8Reader is removed
+ content, err := ioutil.ReadAll(contentReader)
+ p.Utf8Reader = contentReader
+ p.Content = content
+ if b64cleaner != nil {
+ p.Errors = append(p.Errors, b64cleaner.Errors...)
+ }
+ return err
+}
+
+// ReadParts reads a MIME document from the provided reader and parses it into tree of Part objects.
+func ReadParts(r io.Reader) (*Part, error) {
+ br := bufio.NewReader(r)
+ root := &Part{}
+
+ // Read header
+ header, err := readHeader(br, root)
+ if err != nil {
+ return nil, err
+ }
+ root.Header = header
+
+ // Content-Type, default is text/plain us-ascii according to RFC 822
+ mediatype := "text/plain"
+ params := map[string]string{
+ "charset": "us-ascii",
+ }
+ contentType := header.Get(hnContentType)
+ if contentType != "" {
+ mediatype, params, err = parseMediaType(contentType)
+ if err != nil {
+ return nil, err
+ }
+ }
+ root.ContentType = mediatype
+ root.Charset = params[hpCharset]
+
+ if strings.HasPrefix(mediatype, ctMultipartPrefix) {
+ // Content is multipart, parse it
+ boundary := params[hpBoundary]
+ root.boundary = boundary
+ err = parseParts(root, br)
+ if err != nil {
+ return nil, err
+ }
+ } else {
+ // Content is text or data, build content reader pipeline
+ if err := root.buildContentReaders(br); err != nil {
+ return nil, err
+ }
+ }
+
+ return root, nil
+}
+
+func parseMediaType(ctype string) (string, map[string]string, error) {
+ // Parse Content-Type header
+ mtype, mparams, err := mime.ParseMediaType(ctype)
+ if err != nil {
+ // Small hack to remove harmless charset duplicate params
+ mctype := parseBadContentType(ctype, ";")
+ mtype, mparams, err = mime.ParseMediaType(mctype)
+ if err != nil {
+ // Some badly formed content-types forget to send a ; between fields
+ mctype := parseBadContentType(ctype, " ")
+ if strings.Contains(mctype, `name=""`) {
+ mctype = strings.Replace(mctype, `name=""`, `name=" "`, -1)
+ }
+ mtype, mparams, err = mime.ParseMediaType(mctype)
+ if err != nil {
+ return "", make(map[string]string), err
+ }
+ }
+ }
+ return mtype, mparams, err
+}
+
+func parseBadContentType(ctype, sep string) string {
+ cp := strings.Split(ctype, sep)
+ mctype := ""
+ for _, p := range cp {
+ if strings.Contains(p, "=") {
+ params := strings.Split(p, "=")
+ if !strings.Contains(mctype, params[0]+"=") {
+ mctype += p + ";"
+ }
+ } else {
+ mctype += p + ";"
+ }
+ }
+ return mctype
+}
+
+// parseParts recursively parses a mime multipart document and sets each Part's PartID.
+func parseParts(parent *Part, reader *bufio.Reader) error {
+ var prevSibling *Part
+
+ firstRecursion := parent.Parent == nil
+ // Set root PartID
+ if firstRecursion {
+ parent.PartID = "0"
+ }
+
+ var indexPartID int
+
+ // Loop over MIME parts
+ br := newBoundaryReader(reader, parent.boundary)
+ for {
+ indexPartID++
+
+ next, err := br.Next()
+ if err != nil && err != io.EOF {
+ return err
+ }
+ if !next {
+ break
+ }
+ p := &Part{Parent: parent}
+
+ // Set this Part's PartID, indicating its position within the MIME Part Tree
+ if firstRecursion {
+ p.PartID = strconv.Itoa(indexPartID)
+ } else {
+ p.PartID = p.Parent.PartID + "." + strconv.Itoa(indexPartID)
+ }
+
+ bbr := bufio.NewReader(br)
+ header, err := readHeader(bbr, p)
+ p.Header = header
+ if err == errEmptyHeaderBlock {
+ // Empty header probably means the part didn't use the correct trailing "--" syntax to
+ // close its boundary.
+ if _, err = br.Next(); err != nil {
+ if err == io.EOF || strings.HasSuffix(err.Error(), "EOF") {
+ // There are no more Parts, but the error belongs to a sibling or parent,
+ // because this Part doesn't actually exist.
+ owner := parent
+ if prevSibling != nil {
+ owner = prevSibling
+ }
+ owner.addWarning(
+ ErrorMissingBoundary,
+ "Boundary %q was not closed correctly",
+ parent.boundary)
+ break
+ }
+ return fmt.Errorf("Error at boundary %v: %v", parent.boundary, err)
+ }
+ } else if err != nil {
+ return err
+ }
+
+ ctype := header.Get(hnContentType)
+ if ctype == "" {
+ p.addWarning(
+ ErrorMissingContentType,
+ "MIME parts should have a Content-Type header")
+ } else {
+ // Parse Content-Type header
+ mtype, mparams, err := parseMediaType(ctype)
+ if err != nil {
+ return err
+ }
+ p.ContentType = mtype
+
+ // Set disposition, filename, charset if available
+ p.setupContentHeaders(mparams)
+ p.boundary = mparams[hpBoundary]
+ }
+
+ // Insert this Part into the MIME tree
+ if prevSibling != nil {
+ prevSibling.NextSibling = p
+ } else {
+ parent.FirstChild = p
+ }
+ prevSibling = p
+
+ if p.boundary != "" {
+ // Content is another multipart
+ err = parseParts(p, bbr)
+ if err != nil {
+ return err
+ }
+ } else {
+ // Content is text or data: build content reader pipeline
+ if err := p.buildContentReaders(bbr); err != nil {
+ return err
+ }
+ }
+ }
+
+ // Store any content following the closing boundary marker into the epilogue
+ epilogue := new(bytes.Buffer)
+ if _, err := io.Copy(epilogue, reader); err != nil {
+ return err
+ }
+ parent.Epilogue = epilogue.Bytes()
+
+ // If a Part is "multipart/" Content-Type, it will have .0 appended to its PartID
+ // i.e. it is the root of its MIME Part subtree
+ if !firstRecursion {
+ parent.PartID += ".0"
+ }
+
+ return nil
+}
diff --git a/vendor/github.com/jhillyerd/enmime/quotedprint.go b/vendor/github.com/jhillyerd/enmime/quotedprint.go
new file mode 100644
index 00000000..3ceb6791
--- /dev/null
+++ b/vendor/github.com/jhillyerd/enmime/quotedprint.go
@@ -0,0 +1,105 @@
+package enmime
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+)
+
+// qpCleaner scans quoted printable content for invalid characters and encodes them so that
+// Go's quoted-printable decoder does not abort with an error.
+type qpCleaner struct {
+ in *bufio.Reader
+}
+
+// Assert qpCleaner implements io.Reader
+var _ io.Reader = &qpCleaner{}
+
+// newBase64Cleaner returns a Base64Cleaner object for the specified reader. Base64Cleaner
+// implements the io.Reader interface.
+func newQPCleaner(r io.Reader) *qpCleaner {
+ return &qpCleaner{
+ in: bufio.NewReader(r),
+ }
+}
+
+// Read method for io.Reader interface.
+func (qp *qpCleaner) Read(dest []byte) (n int, err error) {
+ // Ensure room to write a byte or =XX string
+ destLen := len(dest) - 3
+ // Loop over bytes in qp.in ByteReader
+ for n < destLen {
+ b, err := qp.in.ReadByte()
+ if err != nil {
+ return n, err
+ }
+ // Test character type
+ switch {
+ case b == '=':
+ // pass valid hex bytes through
+ hexBytes, err := qp.in.Peek(2)
+ if err != nil && err != io.EOF {
+ return 0, err
+ }
+ if isValidHexBytes(hexBytes) {
+ dest[n] = b
+ n++
+ } else {
+ s := fmt.Sprintf("=%02X", b)
+ n += copy(dest[n:], s)
+ }
+ case b == '\t' || b == '\r' || b == '\n':
+ // Valid special characters
+ dest[n] = b
+ n++
+ case b < ' ' || '~' < b:
+ // Invalid character, render quoted-printable into buffer
+ s := fmt.Sprintf("=%02X", b)
+ n += copy(dest[n:], s)
+ default:
+ // Acceptable character
+ dest[n] = b
+ n++
+ }
+ }
+ return
+}
+
+func isValidHexByte(b byte) bool {
+ switch {
+ case b >= '0' && b <= '9':
+ return true
+ case b >= 'A' && b <= 'F':
+ return true
+ // Accept badly encoded bytes.
+ case b >= 'a' && b <= 'f':
+ return true
+ }
+ return false
+}
+
+func isValidHexBytes(v []byte) bool {
+ if len(v) < 1 {
+ return false
+ }
+
+ // soft line break
+ if v[0] == '\n' {
+ return true
+ }
+
+ if len(v) < 2 {
+ return false
+ }
+
+ // soft line break
+ if v[0] == '\r' && v[1] == '\n' {
+ return true
+ }
+
+ if isValidHexByte(v[0]) && isValidHexByte(v[1]) {
+ return true
+ }
+
+ return false
+}
diff --git a/vendor/github.com/ssor/bom/LICENSE b/vendor/github.com/ssor/bom/LICENSE
new file mode 100644
index 00000000..374f6855
--- /dev/null
+++ b/vendor/github.com/ssor/bom/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Asher
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/github.com/ssor/bom/README.md b/vendor/github.com/ssor/bom/README.md
new file mode 100644
index 00000000..2dcc289f
--- /dev/null
+++ b/vendor/github.com/ssor/bom/README.md
@@ -0,0 +1,23 @@
+# bom
+small tools for cleaning bom from byte array or reader
+
+
+## Installation
+
+```sh
+$ go get github.com/ssor/bom
+```
+
+## How to Use
+
+
+```
+ bs := []byte{bom0, bom1, bom2, 0x11}
+ result := CleanBom(bs)
+```
+
+```
+ bs := []byte{bom0, bom1, bom2, 0x11}
+ result := NewReaderWithoutBom(bytes.NewReader(bs))
+
+```
\ No newline at end of file
diff --git a/vendor/github.com/ssor/bom/bom.go b/vendor/github.com/ssor/bom/bom.go
new file mode 100644
index 00000000..907ea98d
--- /dev/null
+++ b/vendor/github.com/ssor/bom/bom.go
@@ -0,0 +1,34 @@
+package bom
+
+import (
+ "bytes"
+ "io"
+ "io/ioutil"
+)
+
+const (
+ bom0 = 0xef
+ bom1 = 0xbb
+ bom2 = 0xbf
+)
+
+// CleanBom returns b with the 3 byte BOM stripped off the front if it is present.
+// If the BOM is not present, then b is returned.
+func CleanBom(b []byte) []byte {
+ if len(b) >= 3 &&
+ b[0] == bom0 &&
+ b[1] == bom1 &&
+ b[2] == bom2 {
+ return b[3:]
+ }
+ return b
+}
+
+// NewReaderWithoutBom returns an io.Reader that will skip over initial UTF-8 byte order marks.
+func NewReaderWithoutBom(r io.Reader) (io.Reader, error) {
+ bs, err := ioutil.ReadAll(r)
+ if err != nil {
+ return nil, err
+ }
+ return bytes.NewReader(CleanBom(bs)), nil
+}
diff --git a/vendor/github.com/taknb2nch/go-pop3/LICENSE b/vendor/github.com/taknb2nch/go-pop3/LICENSE
new file mode 100644
index 00000000..8b674144
--- /dev/null
+++ b/vendor/github.com/taknb2nch/go-pop3/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Takanobu Hagino
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/github.com/taknb2nch/go-pop3/README.md b/vendor/github.com/taknb2nch/go-pop3/README.md
new file mode 100644
index 00000000..f1ccacfc
--- /dev/null
+++ b/vendor/github.com/taknb2nch/go-pop3/README.md
@@ -0,0 +1,115 @@
+go-pop3
+==========
+
+This is a simple POP3 client package in Go language.
+
+##Usage
+```go
+if err := pop3.ReceiveMail(address, user, pass,
+ func(number int, uid, data string, err error) (bool, error) {
+ log.Printf("%d, %s\n", number, uid)
+
+ // implement your own logic here
+
+ return false, nil
+ }); err != nil {
+ log.Fatalf("%v\n", err)
+}
+```
+or use the method that implements the command
+```go
+client, err := pop3.Dial(address)
+
+if err != nil {
+ log.Fatalf("Error: %v\n", err)
+}
+
+defer func() {
+ client.Quit()
+ client.Close()
+}()
+
+if err = client.User(user); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+if err = client.Pass(pass); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+var count int
+var size uint64
+
+if count, size, err = client.Stat(); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+log.Printf("Count: %d, Size: %d\n", count, size)
+
+if count, size, err = client.List(6); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+log.Printf("Number: %d, Size: %d\n", count, size)
+
+var mis []pop3.MessageInfo
+
+if mis, err = client.ListAll(); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+for _, mi := range mis {
+ log.Printf("Number: %d, Size: %d\n", mi.Number, mi.Size)
+}
+
+var number int
+var uid string
+
+if number, uid, err = client.Uidl(6); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+log.Printf("Number: %d, Uid: %s\n", number, uid)
+
+if mis, err = client.UidlAll(); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+for _, mi := range mis {
+ log.Printf("Number: %d, Uid: %s\n", mi.Number, mi.Uid)
+}
+
+var content string
+
+if content, err = client.Retr(8); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+log.Printf("Content:\n%s\n", content)
+
+if err = client.Dele(6); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+if err = client.Noop(); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+
+if err = client.Rset(); err != nil {
+ log.Printf("Error: %v\n", err)
+ return
+}
+```
+
+##License
+[MIT License](https://github.com/taknb2nch/go-pop3/blob/master/LICENSE)
diff --git a/vendor/github.com/taknb2nch/go-pop3/pop3.go b/vendor/github.com/taknb2nch/go-pop3/pop3.go
new file mode 100644
index 00000000..bbf906a6
--- /dev/null
+++ b/vendor/github.com/taknb2nch/go-pop3/pop3.go
@@ -0,0 +1,400 @@
+// Package pop3 provides simple POP3 client.
+package pop3
+
+import (
+ "errors"
+ "fmt"
+ "net"
+ "strconv"
+ "strings"
+)
+
+var (
+ EOF = errors.New("skip the all mail remaining")
+)
+
+// MessageInfo has Number, Size, and Uid fields,
+// and used as a return value of ListAll and UidlAll.
+// When used as the return value of the method ListAll,
+// MessageInfo contain only the Number and Size values.
+// When used as the return value of the method UidlAll,
+// MessageInfo contain only the Number and Uid values.
+type MessageInfo struct {
+ Number int
+ Size uint64
+ Uid string
+}
+
+// A Client represents a client connection to an POP server.
+type Client struct {
+ // Text is the pop3.Conn used by the Client.
+ Text *Conn
+ // keep a reference to the connection so it can be used to create a TLS
+ // connection later
+ conn net.Conn
+}
+
+// Dial returns a new Client connected to an POP server at addr.
+// The addr must include a port number.
+func Dial(addr string) (*Client, error) {
+ conn, err := net.Dial("tcp", addr)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return NewClient(conn)
+}
+
+// NewClient returns a new Client using an existing connection.
+func NewClient(conn net.Conn) (*Client, error) {
+ text := NewConn(conn)
+
+ _, err := text.ReadResponse()
+
+ if err != nil {
+ return nil, err
+ }
+
+ return &Client{Text: text, conn: conn}, nil
+}
+
+// User issues a USER command to the server using the provided user name.
+func (c *Client) User(user string) error {
+ return c.cmdSimple("USER %s", user)
+}
+
+// Pass issues a PASS command to the server using the provided password.
+func (c *Client) Pass(pass string) error {
+ return c.cmdSimple("PASS %s", pass)
+}
+
+// Stat issues a STAT command to the server
+// and returns mail count and total size.
+func (c *Client) Stat() (int, uint64, error) {
+ return c.cmdStatOrList("STAT", "STAT")
+}
+
+// Retr issues a RETR command to the server using the provided mail number
+// and returns mail data.
+func (c *Client) Retr(number int) (string, error) {
+ var err error
+
+ err = c.Text.WriteLine("RETR %d", number)
+
+ if err != nil {
+ return "", err
+ }
+
+ _, err = c.Text.ReadResponse()
+
+ if err != nil {
+ return "", err
+ }
+
+ return c.Text.ReadToPeriod()
+}
+
+// List issues a LIST command to the server using the provided mail number
+// and returns mail number and size.
+func (c *Client) List(number int) (int, uint64, error) {
+ return c.cmdStatOrList("LIST", "LIST %d", number)
+}
+
+// List issues a LIST command to the server
+// and returns array of MessageInfo.
+func (c *Client) ListAll() ([]MessageInfo, error) {
+ list := make([]MessageInfo, 0)
+
+ err := c.cmdReadLines("LIST", func(line string) error {
+ number, size, err := c.convertNumberAndSize(line)
+
+ if err != nil {
+ return err
+ }
+
+ list = append(list, MessageInfo{Number: number, Size: size})
+
+ return nil
+ })
+
+ if err != nil {
+ return nil, err
+ }
+
+ return list, nil
+}
+
+// Uidl issues a UIDL command to the server using the provided mail number
+// and returns mail number and unique id.
+func (c *Client) Uidl(number int) (int, string, error) {
+ var err error
+
+ err = c.Text.WriteLine("UIDL %d", number)
+
+ if err != nil {
+ return 0, "", err
+ }
+
+ var msg string
+
+ msg, err = c.Text.ReadResponse()
+
+ if err != nil {
+ return 0, "", err
+ }
+
+ var val int
+ var uid string
+
+ val, uid, err = c.convertNumberAndUid(msg)
+
+ if err != nil {
+ return 0, "", err
+ }
+
+ return val, uid, nil
+}
+
+// Uidl issues a UIDL command to the server
+// and returns array of MessageInfo.
+func (c *Client) UidlAll() ([]MessageInfo, error) {
+ list := make([]MessageInfo, 0)
+
+ err := c.cmdReadLines("UIDL", func(line string) error {
+ number, uid, err := c.convertNumberAndUid(line)
+
+ if err != nil {
+ return err
+ }
+
+ list = append(list, MessageInfo{Number: number, Uid: uid})
+
+ return nil
+ })
+
+ if err != nil {
+ return nil, err
+ }
+
+ return list, nil
+}
+
+// Dele issues a DELE command to the server using the provided mail number.
+func (c *Client) Dele(number int) error {
+ return c.cmdSimple("DELE %d", number)
+}
+
+// Noop issues a NOOP command to the server.
+func (c *Client) Noop() error {
+ return c.cmdSimple("NOOP")
+}
+
+// Rset issues a RSET command to the server.
+func (c *Client) Rset() error {
+ return c.cmdSimple("RSET")
+}
+
+// Quit issues a QUIT command to the server.
+func (c *Client) Quit() error {
+ return c.cmdSimple("QUIT")
+}
+
+// ReceiveMail connects to the server at addr,
+// and authenticates with user and pass,
+// and calling receiveFn for each mail.
+func ReceiveMail(addr, user, pass string, receiveFn ReceiveMailFunc) error {
+ c, err := Dial(addr)
+
+ if err != nil {
+ return err
+ }
+
+ defer func() {
+ if err != nil && err != EOF {
+ c.Rset()
+ }
+
+ c.Quit()
+ c.Close()
+ }()
+
+ if err = c.User(user); err != nil {
+ return err
+ }
+
+ if err = c.Pass(pass); err != nil {
+ return err
+ }
+
+ var mis []MessageInfo
+
+ if mis, err = c.UidlAll(); err != nil {
+ return err
+ }
+
+ for _, mi := range mis {
+ var data string
+
+ data, err = c.Retr(mi.Number)
+
+ del, err := receiveFn(mi.Number, mi.Uid, data, err)
+
+ if err != nil && err != EOF {
+ return err
+ }
+
+ if del {
+ if err = c.Dele(mi.Number); err != nil {
+ return err
+ }
+ }
+
+ if err == EOF {
+ break
+ }
+ }
+
+ return nil
+}
+
+// ReceiveMailFunc is the type of the function called for each mail.
+// Its arguments are mail's number, uid, data, and mail receiving error.
+// if this function returns false value, the mail will be deleted,
+// if its returns EOF, skip the all mail of remaining.
+// (after deleting mail, if necessary)
+type ReceiveMailFunc func(number int, uid, data string, err error) (bool, error)
+
+func (c *Client) cmdSimple(format string, args ...interface{}) error {
+ var err error
+
+ err = c.Text.WriteLine(format, args...)
+
+ if err != nil {
+ return err
+ }
+
+ _, err = c.Text.ReadResponse()
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (c *Client) cmdStatOrList(name, format string, args ...interface{}) (int, uint64, error) {
+ var err error
+
+ err = c.Text.WriteLine(format, args...)
+
+ if err != nil {
+ return 0, 0, err
+ }
+
+ var msg string
+
+ msg, err = c.Text.ReadResponse()
+
+ if err != nil {
+ return 0, 0, err
+ }
+
+ s := strings.Split(msg, " ")
+
+ if len(s) < 2 {
+ return 0, 0, ResponseError(fmt.Sprintf("invalid response format: %s", msg))
+ }
+
+ var val int
+ var size uint64
+
+ val, size, err = c.convertNumberAndSize(msg)
+
+ if err != nil {
+ return 0, 0, err
+ }
+
+ return val, size, nil
+}
+
+func (c *Client) cmdReadLines(cmnd string, lineFn lineFunc) error {
+ var err error
+
+ err = c.Text.WriteLine(cmnd)
+
+ if err != nil {
+ return err
+ }
+
+ _, err = c.Text.ReadResponse()
+
+ if err != nil {
+ return err
+ }
+
+ var lines []string
+
+ lines, err = c.Text.ReadLines()
+
+ if err != nil {
+ return err
+ }
+
+ for _, line := range lines {
+ err = lineFn(line)
+
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+type lineFunc func(line string) error
+
+func (c *Client) Close() error {
+ return c.Text.Close()
+}
+
+func (c *Client) convertNumberAndSize(line string) (int, uint64, error) {
+ var err error
+
+ s := strings.Split(line, " ")
+
+ if len(s) < 2 {
+ return 0, 0, errors.New(fmt.Sprintf("the length of the array is less than 2: %s", line))
+ }
+
+ var val int
+ var size uint64
+
+ if val, err = strconv.Atoi(s[0]); err != nil {
+ return 0, 0, errors.New(fmt.Sprintf("can not convert element[0] to int type: %s", line))
+ }
+
+ if size, err = strconv.ParseUint(s[1], 10, 64); err != nil {
+ return 0, 0, errors.New(fmt.Sprintf("can not convert element[1] to uint64 type: %s", line))
+ }
+
+ return val, size, nil
+}
+
+func (c *Client) convertNumberAndUid(line string) (int, string, error) {
+ var err error
+
+ s := strings.Split(line, " ")
+
+ if len(s) < 2 {
+ return 0, "", errors.New(fmt.Sprintf("the length of the array is less than 2: %s", line))
+ }
+
+ var val int
+
+ if val, err = strconv.Atoi(s[0]); err != nil {
+ return 0, "", errors.New(fmt.Sprintf("can not convert element[0] to int type: %s", line))
+ }
+
+ return val, s[1], nil
+}
diff --git a/vendor/github.com/taknb2nch/go-pop3/pop3proto.go b/vendor/github.com/taknb2nch/go-pop3/pop3proto.go
new file mode 100644
index 00000000..ac972c08
--- /dev/null
+++ b/vendor/github.com/taknb2nch/go-pop3/pop3proto.go
@@ -0,0 +1,175 @@
+package pop3
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ _ "log"
+ "net/textproto"
+ "strings"
+)
+
+// A ResponseError describes a protocol violation such as an invalid response or a hung-up connection.
+type ResponseError string
+
+func (r ResponseError) Error() string {
+ return string(r)
+}
+
+// A Conn represents a textual network protocol connection for POP3.
+type Conn struct {
+ Reader
+ Writer
+ conn io.ReadWriteCloser
+}
+
+// NewConn returns a new Conn using conn for I/O.
+func NewConn(conn io.ReadWriteCloser) *Conn {
+ return &Conn{
+ Reader: Reader{R: textproto.NewReader(bufio.NewReader(conn))},
+ Writer: Writer{W: bufio.NewWriter(conn)},
+ conn: conn,
+ }
+}
+
+// Close closes the connection.
+func (c *Conn) Close() error {
+ return c.conn.Close()
+}
+
+// A Reader implements convenience methods
+// for reading requests or responses from a text protocol network connection.
+type Reader struct {
+ R *textproto.Reader
+}
+
+// NewReader returns a new Reader reading from r.
+func NewReader(r *bufio.Reader) *Reader {
+ return &Reader{R: textproto.NewReader(r)}
+}
+
+// ReadLine reads a single line from r,
+// eliding the final \n or \r\n from the returned string.
+// This calls textproto.Reader.ReadLine simply.
+func (r *Reader) ReadLine() (string, error) {
+ return r.R.ReadLine()
+ // for debug
+ // l, err := r.R.ReadLine()
+ // log.Printf("> %s\n", l)
+ // return l, err
+}
+
+// ReadLines reads a multiline until the last line of the only period,
+// and returns a each line at slice.
+// it does not contain last period.
+func (r *Reader) ReadLines() ([]string, error) {
+ var lines []string
+ var line string
+ var err error
+
+ for {
+ line, err = r.R.ReadLine()
+
+ if err != nil {
+ return nil, err
+ }
+
+ if line == "." {
+ return lines, nil
+ }
+
+ lines = append(lines, line)
+ }
+}
+
+// ReadToPeriod reads a multiline until the last line of the only period,
+// and returns as a string.
+// it does not contain last period.
+func (r *Reader) ReadToPeriod() (string, error) {
+ lines, err := r.ReadLines()
+
+ if err != nil {
+ return "", err
+ }
+
+ return strings.Join(lines, "\r\n"), nil
+}
+
+// ReadResponse reads a single line from r,
+// and parses reponse.
+// if the response is -ERR or has some other errors,
+// it returns error.
+func (r *Reader) ReadResponse() (string, error) {
+ line, err := r.ReadLine()
+
+ if err != nil {
+ return "", err
+ }
+
+ return r.parseResponse(line)
+}
+
+func (r *Reader) parseResponse(line string) (string, error) {
+ s := strings.ToUpper(line)
+
+ if s == "+OK" {
+ return "", nil
+ } else if strings.HasPrefix(s, "+OK ") {
+ return line[4:], nil
+ } else if s == "-ERR" {
+ return "", ResponseError("")
+ } else if strings.HasPrefix(s, "-ERR ") {
+ return "", ResponseError(line[5:])
+ } else {
+ return "", ResponseError(fmt.Sprintf("unknown response: %s", line))
+ }
+}
+
+var crnl = []byte{'\r', '\n'}
+
+// A Writer implements convenience methods
+// for writing requests or responses to a text protocol network connection.
+type Writer struct {
+ W *bufio.Writer
+}
+
+// NewWriter returns a new Writer writing to w.
+func NewWriter(w *bufio.Writer) *Writer {
+ return &Writer{W: w}
+}
+
+// WriteLine writes the formatted output followed by \r\n.
+func (w *Writer) WriteLine(format string, args ...interface{}) error {
+ var err error
+
+ if _, err = fmt.Fprintf(w.W, format, args...); err != nil {
+ return err
+ }
+
+ if _, err = w.W.Write(crnl); err != nil {
+ return err
+ }
+
+ return w.W.Flush()
+
+ // for debug
+ // var err error
+
+ // l := fmt.Sprintf(format, args...)
+
+ // if _, err = fmt.Fprint(w.W, l); err != nil {
+ // return err
+ // }
+
+ // if _, err = w.W.Write(crnl); err != nil {
+ // return err
+ // }
+
+ // if err = w.W.Flush(); err != nil {
+ // return err
+ // }
+
+ // log.Printf("< %s\n", l)
+
+ // return nil
+}
diff --git a/vendor/vendor.json b/vendor/vendor.json
index f1898aa5..70209ba6 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -374,6 +374,12 @@
"revision": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75",
"revisionTime": "2014-10-17T20:07:13Z"
},
+ {
+ "checksumSHA1": "PcuhcuC9KHkdK5nLfO+F4fgcy/8=",
+ "path": "github.com/jaytaylor/html2text",
+ "revision": "7cd445abb89c7dbb8220e616a1805fc904cc541b",
+ "revisionTime": "2017-12-14T19:37:48Z"
+ },
{
"checksumSHA1": "bXHP00GWjyGEna9Gh5lAhxE6dLA=",
"path": "github.com/jehiah/go-strftime",
@@ -398,6 +404,12 @@
"revision": "ff71fe7a7d5279df4b964b31f7ee4adf117277f6",
"revisionTime": "2015-07-17T04:28:40Z"
},
+ {
+ "checksumSHA1": "4uX8hNArGgOWke3uYc+2xwbAib0=",
+ "path": "github.com/jhillyerd/enmime",
+ "revision": "9d33ba6eca1894bd7fdece7fd9622621b5639f16",
+ "revisionTime": "2018-01-08T05:16:58Z"
+ },
{
"checksumSHA1": "Lc5CWD5nzSttJNateoWlPgFE3Vw=",
"path": "github.com/justinas/alice",
@@ -662,6 +674,12 @@
"revision": "110492b3001269a0777997fcbe68a60828fac4cb",
"revisionTime": "2015-10-26T22:52:14Z"
},
+ {
+ "checksumSHA1": "qErubHtC7DAFBnEQkMTuKDtfFTU=",
+ "path": "github.com/ssor/bom",
+ "revision": "6386211fdfcf24c0bfbdaceafd02849ed9a8a509",
+ "revisionTime": "2017-07-18T12:35:48Z"
+ },
{
"checksumSHA1": "rKV8YLkXpeNG1Oix8hlYqVsEFb4=",
"path": "github.com/streadway/amqp",
@@ -686,6 +704,12 @@
"revision": "976c720a22c8eb4eb6a0b4348ad85ad12491a506",
"revisionTime": "2016-09-25T22:06:09Z"
},
+ {
+ "checksumSHA1": "DUin3zIQLXwudLUStcdqzdhoHpg=",
+ "path": "github.com/taknb2nch/go-pop3",
+ "revision": "72f6fae12d453328f06f9bc8a2b8c7c4d5e5e17c",
+ "revisionTime": "2014-04-07T02:20:49Z"
+ },
{
"checksumSHA1": "BI2wWTGWOdOWmgW0HCkXLydcIT4=",
"path": "github.com/timshannon/bolthold",