From abcc5e48d84a4c19fef7802fa50503195c9304b0 Mon Sep 17 00:00:00 2001 From: Siavash Safi Date: Thu, 4 May 2017 14:04:07 +0200 Subject: [PATCH 1/4] Add entity_display_name for VictorOps, use better state_message --- config/notifiers.go | 20 +++++++++++--------- notify/impl.go | 18 ++++++++++-------- template/default.tmpl | 14 ++++++++++++-- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/config/notifiers.go b/config/notifiers.go index 4eb21df23d..2cc4bd644f 100644 --- a/config/notifiers.go +++ b/config/notifiers.go @@ -98,9 +98,10 @@ var ( NotifierConfig: NotifierConfig{ VSendResolved: true, }, - MessageType: `CRITICAL`, - StateMessage: `{{ template "victorops.default.state_message" . }}`, - MonitoringTool: `{{ template "victorops.default.monitoring_tool" . }}`, + MessageType: `CRITICAL`, + StateMessage: `{{ template "victorops.default.state_message" . }}`, + EntityDisplayName: `{{ template "victorops.default.entity_display_name" . }}`, + MonitoringTool: `{{ template "victorops.default.monitoring_tool" . }}`, } // DefaultPushoverConfig defines default values for Pushover configurations. @@ -321,12 +322,13 @@ func (c *OpsGenieConfig) UnmarshalYAML(unmarshal func(interface{}) error) error type VictorOpsConfig struct { NotifierConfig `yaml:",inline" json:",inline"` - APIKey Secret `yaml:"api_key,omitempty" json:"api_key,omitempty"` - APIURL string `yaml:"api_url,omitempty" json:"api_url,omitempty"` - RoutingKey string `yaml:"routing_key,omitempty" json:"routing_key,omitempty"` - MessageType string `yaml:"message_type,omitempty" json:"message_type,omitempty"` - StateMessage string `yaml:"state_message,omitempty" json:"state_message,omitempty"` - MonitoringTool string `yaml:"monitoring_tool,omitempty" json:"monitoring_tool,omitempty"` + APIKey Secret `yaml:"api_key" json:"api_key"` + APIURL string `yaml:"api_url" json:"api_url"` + RoutingKey string `yaml:"routing_key" json:"routing_key"` + MessageType string `yaml:"message_type" json:"message_type"` + StateMessage string `yaml:"state_message" json:"state_message"` + EntityDisplayName string `yaml:"entity_display_name" json:"entity_display_name"` + MonitoringTool string `yaml:"monitoring_tool" json:"monitoring_tool"` XXX map[string]interface{} `yaml:",inline" json:"-"` } diff --git a/notify/impl.go b/notify/impl.go index ddf5b6f5ea..1ced041a25 100644 --- a/notify/impl.go +++ b/notify/impl.go @@ -777,10 +777,11 @@ const ( ) type victorOpsMessage struct { - MessageType string `json:"message_type"` - EntityID string `json:"entity_id"` - StateMessage string `json:"state_message"` - MonitoringTool string `json:"monitoring_tool"` + MessageType string `json:"message_type"` + EntityID string `json:"entity_id"` + EntityDisplayName string `json:"entity_display_name"` + StateMessage string `json:"state_message"` + MonitoringTool string `json:"monitoring_tool"` } type victorOpsErrorResponse struct { @@ -819,10 +820,11 @@ func (n *VictorOps) Notify(ctx context.Context, as ...*types.Alert) (bool, error } msg := &victorOpsMessage{ - MessageType: messageType, - EntityID: hashKey(key), - StateMessage: tmpl(n.conf.StateMessage), - MonitoringTool: tmpl(n.conf.MonitoringTool), + MessageType: messageType, + EntityID: hashKey(key), + EntityDisplayName: tmpl(n.conf.EntityDisplayName), + StateMessage: tmpl(n.conf.StateMessage), + MonitoringTool: tmpl(n.conf.MonitoringTool), } if err != nil { diff --git a/template/default.tmpl b/template/default.tmpl index 9e5cb0e082..2b51b459a5 100644 --- a/template/default.tmpl +++ b/template/default.tmpl @@ -46,9 +46,19 @@ Alerts Resolved: {{ define "opsgenie.default.source" }}{{ template "__alertmanagerURL" . }}{{ end }} -{{ define "victorops.default.state_message" }}{{ template "__subject" . }} | {{ template "__alertmanagerURL" . }}{{ end }} -{{ define "victorops.default.monitoring_tool" }}{{ template "__alertmanager" . }}{{ end }} +{{ define "victorops.default.state_message" }}{{ template "__alertmanager" . }}: {{ template "__alertmanagerURL" . }} +{{ if gt (len .Alerts.Firing) 0 -}} +Alerts Firing: +{{ template "__text_alert_list" .Alerts.Firing }} +{{- end }} +{{ if gt (len .Alerts.Resolved) 0 -}} +Alerts Resolved: +{{ template "__text_alert_list" .Alerts.Resolved }} +{{- end }} +{{- end }} +{{ define "victorops.default.entity_display_name" }}{{ template "__subject" . }}{{ end }} +{{ define "victorops.default.monitoring_tool" }}{{ template "__alertmanager" . }}{{ end }} {{ define "email.default.subject" }}{{ template "__subject" . }}{{ end }} {{ define "email.default.html" }} From ea6ee308b1bc03befb07256f65a5611becd7c340 Mon Sep 17 00:00:00 2001 From: Siavash Safi Date: Thu, 4 May 2017 14:42:34 +0200 Subject: [PATCH 2/4] Reuse existing long-form templates for state_message --- template/default.tmpl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/template/default.tmpl b/template/default.tmpl index 2b51b459a5..aa3ae37f0d 100644 --- a/template/default.tmpl +++ b/template/default.tmpl @@ -46,8 +46,7 @@ Alerts Resolved: {{ define "opsgenie.default.source" }}{{ template "__alertmanagerURL" . }}{{ end }} -{{ define "victorops.default.state_message" }}{{ template "__alertmanager" . }}: {{ template "__alertmanagerURL" . }} - +{{ define "victorops.default.state_message" }}{{ .CommonAnnotations.SortedPairs.Values | join " " }} {{ if gt (len .Alerts.Firing) 0 -}} Alerts Firing: {{ template "__text_alert_list" .Alerts.Firing }} From a686949030484a27317ec241c57205856d442800 Mon Sep 17 00:00:00 2001 From: Siavash Safi Date: Mon, 26 Jun 2017 11:06:34 +0200 Subject: [PATCH 3/4] Rebuild binaries --- template/internal/deftmpl/bindata.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/internal/deftmpl/bindata.go b/template/internal/deftmpl/bindata.go index 2672bb5ba5..2c764b8491 100644 --- a/template/internal/deftmpl/bindata.go +++ b/template/internal/deftmpl/bindata.go @@ -182,6 +182,7 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ "template": &bintree{nil, map[string]*bintree{ "default.tmpl": &bintree{templateDefaultTmpl, map[string]*bintree{}}, @@ -234,4 +235,3 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } - From 311a9a1c436790fa0d0edbc3dc8a7555ef720920 Mon Sep 17 00:00:00 2001 From: Siavash Safi Date: Thu, 29 Jun 2017 15:35:35 +0200 Subject: [PATCH 4/4] Limit state_message to 20K --- notify/impl.go | 17 +++++++++++------ template/internal/deftmpl/bindata.go | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/notify/impl.go b/notify/impl.go index 1ced041a25..7280b406e7 100644 --- a/notify/impl.go +++ b/notify/impl.go @@ -804,11 +804,12 @@ func (n *VictorOps) Notify(ctx context.Context, as ...*types.Alert) (bool, error var err error var ( - alerts = types.Alerts(as...) - data = n.tmpl.Data(receiverName(ctx), groupLabels(ctx), as...) - tmpl = tmplText(n.tmpl, data, &err) - apiURL = fmt.Sprintf("%s%s/%s", n.conf.APIURL, n.conf.APIKey, n.conf.RoutingKey) - messageType = n.conf.MessageType + alerts = types.Alerts(as...) + data = n.tmpl.Data(receiverName(ctx), groupLabels(ctx), as...) + tmpl = tmplText(n.tmpl, data, &err) + apiURL = fmt.Sprintf("%s%s/%s", n.conf.APIURL, n.conf.APIKey, n.conf.RoutingKey) + messageType = n.conf.MessageType + stateMessage = tmpl(n.conf.StateMessage) ) if alerts.Status() == model.AlertFiring && !victorOpsAllowedEvents[messageType] { @@ -819,11 +820,15 @@ func (n *VictorOps) Notify(ctx context.Context, as ...*types.Alert) (bool, error messageType = victorOpsEventResolve } + if len(stateMessage) > 20480 { + stateMessage = stateMessage[0:20475] + "\n..." + } + msg := &victorOpsMessage{ MessageType: messageType, EntityID: hashKey(key), EntityDisplayName: tmpl(n.conf.EntityDisplayName), - StateMessage: tmpl(n.conf.StateMessage), + StateMessage: stateMessage, MonitoringTool: tmpl(n.conf.MonitoringTool), } diff --git a/template/internal/deftmpl/bindata.go b/template/internal/deftmpl/bindata.go index 2c764b8491..78e63ec49b 100644 --- a/template/internal/deftmpl/bindata.go +++ b/template/internal/deftmpl/bindata.go @@ -68,7 +68,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _templateDefaultTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x6b\x6f\xdb\x36\xbb\xdf\xf5\x2b\x9e\x69\x38\x58\x03\x58\x96\x93\x6e\xc5\xe2\xd8\x39\x70\x1d\xa5\x11\x8e\x23\x07\xb2\xd2\xae\x18\x86\x82\x96\x68\x9b\xad\x44\x6a\x24\x95\xc4\xcb\xfc\xdf\x0f\x48\xc9\x17\xd9\x72\xea\x14\x5d\xe2\xf7\x5d\x12\xb4\x91\x28\x3e\xf7\x2b\x45\xea\xfe\x1e\x22\x3c\x22\x14\x83\xf9\xe9\x13\x8a\x31\x97\x09\xa2\x68\x8c\xb9\x09\xb3\x59\x47\xdd\x5f\xe6\xf7\xf7\xf7\x80\x69\x04\xb3\x99\xb1\x15\xe4\xda\xef\x29\xa8\xfb\x7b\xa8\x3b\x77\x12\x73\x8a\xe2\x6b\xbf\x07\xb3\x99\xfd\xa3\xad\xe7\x89\xff\xe5\x38\xc4\xe4\x06\xf3\xb6\x9a\xe4\x17\x37\x39\x4c\x81\xbd\x8c\x5e\x64\xc3\xcf\x38\x94\x0a\xed\xef\x0a\x64\x20\x91\xcc\x04\xfc\x0d\x92\x5d\xa7\xe9\x1c\x94\x8c\x00\xff\xb9\x78\x68\x8e\x08\x27\x74\xac\x60\x9a\x0a\x46\x4b\x21\xea\xe7\x7a\x14\xfe\x86\x18\xd3\x55\x8a\x7f\x80\x9a\xf4\x8e\xb3\x2c\xed\xa1\x21\x8e\x45\x7d\xc0\xb8\xc4\xd1\x15\x22\x5c\xd4\xdf\xa3\x38\xc3\x8a\xe0\x67\x46\x28\x98\xa0\xb0\x42\x4e\x72\x2c\xe1\x95\xc2\x55\xef\xb2\x24\x61\x34\x07\x3e\x28\xc6\x56\xf0\x1d\xc0\x6c\xf6\xea\xfe\x1e\x6e\x89\x9c\x94\x27\xd7\x7d\x9c\xb0\x1b\x5c\xa6\xee\xa1\x04\x8b\x42\x8d\x55\xd4\x17\x8c\x1f\x2c\xae\xb6\xd8\x26\xc2\x22\xe4\x24\x95\x84\x51\xf3\x01\x1d\x4b\x7c\x27\x73\x3b\x7e\x8a\x89\x90\xc5\x54\x8e\xe8\x18\x43\x1d\x66\xb3\x9c\xaf\xa6\xb1\x1c\xdc\xd4\x93\xd2\x8a\xa5\x15\xa9\xd8\x57\x77\x6d\x58\x08\x50\x30\x96\x13\xef\x50\xca\x24\x52\x3c\x95\x50\xae\x0c\x7f\x1b\xde\x01\xcb\x78\x88\x9b\xb9\x31\x31\xc5\x1c\x49\xc6\x73\xf7\x33\x2a\x14\x55\xd2\x81\x88\x51\xf8\xa5\x1e\xe1\x11\xca\x62\x59\x97\x44\xc6\xb8\xd0\x82\xc4\x49\x1a\x23\x59\xf6\xc5\xfa\x36\x95\x97\xf1\x64\x42\x85\x40\x52\x85\xaa\x1c\x68\x3b\xe2\x1b\xa1\x38\x1e\xa2\xf0\xcb\x06\xbe\x4a\xf6\x15\x52\xf8\x1b\xbe\x36\x31\x26\xf4\xcb\xce\x1c\xa4\x1c\x2b\x67\x31\x77\x9b\xbd\x82\xff\x41\x05\xe8\xb4\xb1\x23\x07\x24\x64\x14\x27\xec\x33\xd9\x91\x07\x35\x3f\xe3\xf1\xae\x1c\x6f\x08\x57\x72\x93\x09\x49\xc3\x09\x92\x4b\x83\x70\x96\x7c\xbb\x71\xd7\xb1\x25\x58\x08\x34\x7e\x84\xe3\x95\x78\x4b\x15\xb5\x28\x93\xd3\x05\xbe\xcd\xe8\x7f\x9c\x33\x6f\x62\x0c\x63\x82\xa9\xfc\x76\x89\xb7\x61\x5c\xd6\x8d\x6f\x73\x91\x4d\xbc\x84\x0a\x89\x68\x88\x45\x05\xde\x8d\x74\xf7\x80\x56\x59\x2a\xc6\x98\x12\xfc\xed\x46\x7a\x08\xd9\xa6\x85\x8a\xea\xb0\x25\x19\x56\x96\x03\x63\xad\x18\x95\xaa\xdd\x01\x34\xc0\x9a\xcd\x8c\x7c\x10\xf2\x41\x9d\x76\x1f\xd6\x48\xb9\x64\x6a\x22\xd6\x8a\x44\x15\xf4\x7c\x2c\x58\x7c\x83\xa3\x35\x8a\xf3\xe1\xdd\x69\xce\x21\x36\xa8\x5a\xbb\xa8\x54\xe8\x2a\xf0\x78\x6f\x2a\x59\xfd\x86\x84\x92\x71\x96\x8a\x25\x5a\x89\x24\xfe\xb4\xa3\xf1\xd7\xb3\xee\x63\x5c\x79\x93\x74\xc2\x28\x91\x4c\xd9\xe1\x93\x64\x2c\x7e\x64\xf4\x95\xe4\xc2\x09\x22\xf1\x52\xa6\x65\x6b\xf5\x68\x57\x2e\x63\x9a\xc8\x44\xf3\x65\xb4\x7e\x38\xeb\x77\x83\x8f\x57\x0e\xa8\x21\xb8\xba\x7e\xdb\x73\xbb\x60\x5a\xb6\xfd\xe1\x75\xd7\xb6\xcf\x82\x33\xf8\xed\x22\xb8\xec\xc1\x61\xbd\x01\x01\x47\x54\x10\xe5\xe4\x28\xb6\x6d\xc7\x33\xc1\x9c\x48\x99\x36\x6d\xfb\xf6\xf6\xb6\x7e\xfb\xba\xce\xf8\xd8\x0e\x7c\xfb\x4e\xe1\x3a\x54\xc0\xc5\xa5\x25\x57\x20\xeb\x91\x8c\xcc\x53\xa3\xf5\x83\x65\x19\x03\x39\x8d\x31\x20\x1a\x81\x26\x12\x61\x4e\x94\x23\xa9\x34\x0d\x0a\xb5\x68\xda\xf6\x98\xc8\x49\x36\xac\x87\x2c\xb1\x95\x0c\xe3\x8c\xda\x1a\x1d\x0a\x73\x7c\x96\x16\xcd\x9a\xab\x43\x18\x86\x11\x4c\x30\x5c\xba\x01\xf4\x48\x88\xa9\xc0\xf0\xea\xd2\x0d\x0e\x0c\xa3\xcb\xd2\x29\x27\xe3\x89\x84\x57\xe1\x01\x1c\x35\x0e\x7f\x86\xcb\x1c\xa3\x61\x5c\x61\x9e\x10\x21\x08\xa3\x40\x04\x4c\x30\xc7\xc3\x29\x8c\x39\xa2\x12\x47\x35\x18\x71\x8c\x81\x8d\x20\x9c\x20\x3e\xc6\x35\x90\x0c\x10\x9d\x42\x8a\xb9\x60\x14\xd8\x50\x22\x42\x55\xdc\x21\x08\x59\x3a\x35\xd8\x08\xe4\x84\x08\x10\x6c\x24\x6f\x11\xcf\x25\x44\x42\xb0\x90\x20\x89\x23\x88\x58\x98\x25\x98\xe6\x09\x03\x46\x24\xc6\x02\x5e\xc9\x09\x06\x73\x50\x40\x98\x07\x9a\x48\x84\x51\x6c\x10\x0a\xea\xd9\xfc\x91\xee\x4a\x59\x26\x81\x63\x21\x39\xd1\x5a\xa8\x01\xa1\x61\x9c\x45\x8a\x87\xf9\xe3\x98\x24\xa4\xa0\xa0\xc0\xb5\xe0\xc2\x90\x0c\x32\x81\x6b\x9a\xcf\x1a\x24\x2c\x22\x23\xf5\x17\x6b\xb1\xd2\x6c\x18\x13\x31\xa9\x41\x44\x14\xea\x61\x26\x71\x0d\x84\x1a\xd4\x7a\xac\x29\x39\x6c\xc6\x41\xe0\x38\x36\x42\x96\x12\x2c\x40\xcb\xba\xe4\x4e\xcf\x51\xac\xa7\x4a\xa1\xb2\x50\x91\x50\x23\xb7\x13\x96\x94\x25\x21\xc2\x18\x65\x9c\x12\x31\xc1\x1a\x26\x62\x20\x98\xa6\xa8\xbc\x59\x8d\xa8\xe9\x23\x16\xc7\xec\x56\x89\x16\x32\x1a\x91\xa2\x11\xd5\x46\x46\x43\xd5\x8c\x87\x0b\xbb\x52\x26\x49\x98\xab\x5b\x1b\x20\x5d\x5a\xb5\x78\x24\x26\x28\x8e\x61\x88\x0b\x85\xe1\x08\x08\x05\xb4\x22\x0e\x57\xe4\x55\x2d\x92\x04\xc5\x90\x32\xae\xe9\xad\x8b\x59\x37\x8c\xe0\xc2\x81\x41\xff\x3c\xf8\xd0\xf1\x1d\x70\x07\x70\xe5\xf7\xdf\xbb\x67\xce\x19\x98\x9d\x01\xb8\x03\xb3\x06\x1f\xdc\xe0\xa2\x7f\x1d\xc0\x87\x8e\xef\x77\xbc\xe0\x23\xf4\xcf\xa1\xe3\x7d\x84\xff\x73\xbd\xb3\x1a\x38\xbf\x5d\xf9\xce\x60\x00\x7d\xdf\x70\x2f\xaf\x7a\xae\x73\x56\x03\xd7\xeb\xf6\xae\xcf\x5c\xef\x1d\xbc\xbd\x0e\xc0\xeb\x07\xd0\x73\x2f\xdd\xc0\x39\x83\xa0\x0f\x8a\x60\x81\xca\x75\x06\x0a\xd9\xa5\xe3\x77\x2f\x3a\x5e\xd0\x79\xeb\xf6\xdc\xe0\x63\xcd\x38\x77\x03\x4f\xe1\x3c\xef\xfb\xd0\x81\xab\x8e\x1f\xb8\xdd\xeb\x5e\xc7\x87\xab\x6b\xff\xaa\x3f\x70\xa0\xe3\x9d\x81\xd7\xf7\x5c\xef\xdc\x77\xbd\x77\xce\xa5\xe3\x05\x75\x70\x3d\xf0\xfa\xe0\xbc\x77\xbc\x00\x06\x17\x9d\x5e\x4f\x91\x32\x3a\xd7\xc1\x45\xdf\x57\xfc\x41\xb7\x7f\xf5\xd1\x77\xdf\x5d\x04\x70\xd1\xef\x9d\x39\xfe\x00\xde\x3a\xd0\x73\x3b\x6f\x7b\x4e\x4e\xca\xfb\x08\xdd\x5e\xc7\xbd\xac\xc1\x59\xe7\xb2\xf3\xce\xd1\x50\xfd\xe0\xc2\xf1\x0d\x35\x2d\xe7\x0e\x3e\x5c\x38\x6a\x48\xd1\xeb\x78\xd0\xe9\x06\x6e\xdf\x53\x62\x74\xfb\x5e\xe0\x77\xba\x41\x0d\x82\xbe\x1f\x2c\x40\x3f\xb8\x03\xa7\x06\x1d\xdf\x1d\x28\x85\x9c\xfb\xfd\xcb\x9a\xa1\xd4\xd9\x3f\x57\x53\x5c\x4f\xc1\x79\x4e\x8e\x45\xa9\x1a\x4a\x16\xe9\xfb\xfa\xfe\x7a\xe0\x2c\x10\xc2\x99\xd3\xe9\xb9\xde\xbb\x81\x02\x56\x22\xce\x27\xd7\x0d\xcb\x3a\x35\x5a\x3a\x05\xde\x25\x31\x15\xed\x8a\xc4\x76\x78\x7c\x7c\x9c\xe7\x33\x73\xb7\x49\x42\x25\xb7\xb6\x39\x62\x54\x5a\x23\x94\x90\x78\xda\x84\x9f\x2e\x70\x7c\x83\x25\x09\x11\x78\x38\xc3\x3f\xd5\x60\x31\x50\x83\x0e\x27\x28\xae\x81\x40\x54\x58\x02\x73\x32\x3a\x81\x21\xbb\xb3\x04\xf9\x4b\xf5\x00\x30\x64\x3c\xc2\xdc\x1a\xb2\xbb\x13\xd0\x48\x05\xf9\x0b\x37\xe1\xf0\xe7\xf4\xee\x04\x12\xc4\xc7\x84\x36\xa1\x71\xa2\x72\xeb\x04\xa3\xe8\x39\xe9\x27\x58\x22\x50\x2b\xa9\xb6\x79\x43\xf0\xad\x8a\x22\x53\x45\xaf\xc4\x54\xb6\xcd\x5b\x12\xc9\x49\x3b\xc2\x37\x24\xc4\x96\xbe\x79\x3e\x65\x81\x3d\x67\x57\x19\xd3\xc2\x7f\x66\xe4\xa6\x6d\x76\x73\x56\xad\x60\x9a\xe2\x15\xc6\x55\x0b\x64\x2b\xe3\x9e\xe8\x4a\x20\xb0\x6c\x5f\x07\xe7\xd6\xaf\xcf\xcc\xbe\x5e\xb6\x3d\x9f\xb9\x1f\xea\x45\x5a\xb6\x66\xee\xd4\x30\x5a\xb6\x72\x4a\x75\x31\x64\xd1\x14\x88\xc4\x89\x08\x59\x8a\xdb\xa6\xa9\x6f\xe4\x54\x5d\x17\x11\x25\xc2\x09\x4e\x90\x8e\x28\x47\x55\xf7\xcb\x79\x1f\xf7\xa4\x42\x5a\xb7\x78\xf8\x85\x48\x2b\x7f\x90\x30\x26\x27\x1a\x28\xaf\x0d\x04\x09\x1c\x2d\x27\x29\xdf\xd0\xd0\x16\x8a\x3e\x67\x42\x36\x81\x32\x8a\x4f\x60\x82\x55\x65\x6a\xc2\x61\xa3\xf1\x3f\x27\x10\x13\x8a\xad\xc5\x50\xfd\x0d\x4e\x4e\x40\x47\x40\x3e\x01\x7e\x20\x89\x0a\x16\x44\xe5\x09\x0c\x51\xf8\x65\xcc\x59\x46\x23\x2b\x64\x31\xe3\x4d\xf8\x71\xf4\x46\xfd\xae\xaa\x1f\x52\x14\x45\x9a\x2b\xe5\x0d\xc3\xb1\x9e\xd9\x36\x8b\x99\xa6\xd2\xb7\x44\xc3\xa7\x76\x8f\x15\x91\x76\x94\xa3\x92\x77\x80\x96\xe4\xcf\x98\xc7\x00\x14\x07\x4f\x9c\x49\x6f\x30\x57\x48\x62\x0b\xc5\x64\x4c\x9b\x20\x59\x5a\x56\xd4\x8d\x7e\xd0\x36\x25\x4b\xcd\xd3\x96\x2d\xa3\x25\xa3\x79\x66\x35\xdf\x34\x1a\x4f\x1c\x2a\x95\x4c\x47\x44\xa4\x31\x9a\x36\x61\x18\xb3\xf0\x4b\xc9\xb7\x13\x74\x67\x15\x4e\xf2\xa6\xd1\x48\xef\x4a\x0f\xc3\x18\x23\xae\x08\xca\x49\x69\x7c\x5b\xa0\x2c\x94\x03\x28\x93\x6c\x2d\x24\x4a\xda\xd2\x8a\x02\x68\x45\xe4\xe6\xa9\xdd\xaa\x2c\xef\xba\x72\x1e\x16\x62\xce\xb7\x32\xb2\x0e\xe6\xc2\xce\x4a\x13\x26\x84\x38\x8e\x8b\xd9\x6d\xb3\x91\xdf\x8b\x14\x85\xf3\xfb\x27\x15\xb4\x78\xc8\x51\x44\x32\xd1\x84\xd7\x7a\xac\x22\x01\x8c\x46\xa5\x2c\x96\x83\x35\xe1\x30\xbd\x03\xc1\x62\x12\xc1\x8f\xf8\x58\xfd\x96\x13\xc3\x68\xb4\xa2\x8b\x7d\xc8\x0e\x4b\x4e\x9e\x2e\x4b\xbc\xd9\x1a\x70\x25\xed\x6a\x90\xdb\xa2\xd4\xfc\xd2\x68\x9c\x80\x2e\x51\xc5\xfc\x10\x53\x89\x79\x95\xbd\xf4\xbf\x86\x36\xca\xa6\xdd\x9c\x37\xbf\x1c\x1d\x75\xab\x0b\xd0\x91\xf2\x6b\x13\x8a\x78\xcb\x09\xac\x5a\x2f\x87\xad\x8e\xc8\xf9\xcf\x72\xf7\x67\xb1\xed\x03\xfa\x6d\x49\xe5\x3b\xac\x03\x38\x84\xd9\x4c\x2c\x5e\x78\xc0\x88\x71\x58\xee\x50\x6c\xd9\x21\x82\xd9\x6c\x8d\x2a\xac\xee\x57\xb4\x4b\xbb\x15\x1b\xd3\x8a\x57\x2b\x25\xe3\x2f\x72\xf0\xe2\x9e\xbf\xb8\xe9\x2e\xc5\x6c\xe9\x3c\x87\xb9\xf3\x3c\xe4\x1b\x7b\x9f\xfb\xb6\xaa\x7d\xbf\x9c\x60\xdf\x5d\xa1\x01\x8d\x79\x2e\x79\xc8\x1d\x0a\x31\x10\x4c\x38\x1e\xb5\xcd\x5d\x5e\xe0\x3e\xb1\x3f\xcc\x93\xe6\xf9\xf9\x79\x91\x7c\x23\x1c\x32\xae\xdf\xc9\xcd\x97\x07\xa5\x05\xc1\x91\x5a\x0e\x94\xf2\xf6\x90\xc5\x51\x75\xe2\x0e\x33\x2e\x14\xf6\x94\x91\x7c\x60\xd1\x50\x10\xaa\x91\x16\x7d\xc5\x5a\x82\xff\x45\x31\xa6\xf1\xe9\x97\xa8\x23\xc6\x93\x26\x84\x28\x25\x12\xc5\xe4\x2f\x5c\x99\xf4\x5f\xff\xfc\x2b\x8e\x50\x45\xbd\xde\x98\x51\x0c\x6b\x2d\x37\xf3\x42\xbe\x18\x5c\x74\x6f\xe9\x5d\x61\xde\xd3\xf7\x04\xdf\x02\xa1\x0f\xbd\x7c\x9f\x2f\x23\x51\xa5\x0f\xaf\x25\xde\xea\xf4\x9b\xff\x7c\x6d\xd3\xa5\xa2\x28\xbc\x84\xec\x3f\x13\xb2\x42\x72\x46\xc7\xcf\xa7\xda\xdf\xb7\x9f\x31\xf9\xa3\xd8\x71\x6b\xd9\x39\x93\xdf\xc1\xeb\x2a\x1a\x86\xe2\xc9\xfc\x20\xc5\xfa\xd6\xdd\x8b\x1f\xfe\x3b\xfc\x30\x6f\x4d\x17\xae\xd6\x1a\x3e\x9f\x99\xc1\xae\xd6\xd1\x57\x4e\x10\x6d\x3f\xe6\xf3\xcc\xc2\x6c\x8f\x3b\xa8\xa8\x05\xcb\xcd\xfb\xbc\x12\x3c\xbb\x67\xac\x70\xb4\x2f\xee\xf1\x55\x8d\x7e\xf5\x58\xd8\x7f\xa8\xb3\xac\x76\x98\xeb\xe7\xd4\x9e\xa9\xa1\x9c\xb7\x5b\x1b\x3d\x65\x46\x23\xcc\x55\xf7\x57\x76\xa7\xfc\xa4\x9d\x6a\xa2\xf6\x2f\xc7\x7c\x5b\x35\xdd\xb1\xbd\x5b\x3d\xe3\x52\x69\xde\x97\xae\x70\x6f\xaa\xf1\xde\x79\x26\x40\x6b\xb2\x87\x3c\xed\x9d\x9e\x1e\x13\xc1\x0f\x75\xc4\x2f\x81\xf5\xdf\xd9\xe6\xae\x2e\xb7\x16\x67\x05\x97\x0b\xae\xf9\xd0\x33\x2c\xb9\x56\x4f\x2e\xbe\x78\xe3\xbf\xc3\x1b\x5f\x16\x5d\x2f\x8b\xae\x97\x45\xd7\xbe\x3b\xcb\xcb\xa2\x6b\x6f\x5a\xb6\x6d\x86\x6a\xd9\x7a\x3f\xee\xf4\x11\x5b\xa1\x0b\x90\xe5\xc8\x93\x9f\xc4\x28\x1d\x4d\x5a\x39\x69\xb2\x34\xf4\xf1\xf1\xf1\x43\x1b\xdc\xe5\x9d\xdd\xcd\x2d\xc9\xfd\x68\x1a\xf6\xa9\x7d\x79\xca\xd6\xe5\x68\x6b\xeb\x52\xb9\x89\xf6\x35\x93\xaf\xf4\x36\x6b\xe7\x1a\xca\xa7\xb0\x56\xd3\x55\xf9\x4b\xda\xa7\x73\x88\xa3\xd5\x6c\xa5\x25\xda\x39\x55\x61\x2a\x61\x38\xdd\x6d\x1f\x6e\x33\x77\x6c\x9c\x77\x58\xcf\x0c\x2d\x3b\x22\x37\xa7\xf9\xff\x46\x39\x4d\xec\x5b\x5b\xbb\xe5\x78\x5d\x2e\xe2\x32\x7f\xb5\xec\x21\x8b\xa6\x6a\x64\x22\x93\xf8\xd4\x30\xaa\x3f\xd5\x4d\x33\x31\x61\x37\x98\x7f\x87\x2f\x55\x37\x50\x95\xbf\x6d\xfa\x27\xbe\x43\xfb\x3e\x9f\xa1\xed\xfe\x15\xda\xf7\xfb\x08\x6d\x85\xe6\x0e\x9a\x5c\x7e\x6e\xfa\x88\x4f\xc0\xfe\x3f\x00\x00\xff\xff\x3c\xf7\xad\xcb\x87\x3f\x00\x00") +var _templateDefaultTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x6b\x6f\xdb\x36\xbb\xdf\xf5\x2b\x9e\x69\x38\x58\x03\x58\x96\x93\x6e\xc5\xe2\xd8\x39\x70\x1d\xa5\x11\x8e\x23\x07\xb2\xd2\xae\x18\x86\x80\x96\x68\x9b\xad\x44\x6a\x24\x95\xc4\xcb\xfc\xdf\x0f\x48\xc9\x17\xc5\x72\xe2\x14\x5d\xe2\xf7\x5d\x12\xb4\x91\x28\x3e\xf7\x2b\x45\xea\xee\x0e\x22\x3c\x22\x14\x83\x79\x75\x85\x62\xcc\x65\x82\x28\x1a\x63\x6e\xc2\x6c\xd6\x51\xf7\xe7\xf9\xfd\xdd\x1d\x60\x1a\xc1\x6c\x66\x6c\x04\xb9\xf4\x7b\x0a\xea\xee\x0e\xea\xce\xad\xc4\x9c\xa2\xf8\xd2\xef\xc1\x6c\x66\xff\x68\xeb\x79\xe2\x7f\x39\x0e\x31\xb9\xc6\xbc\xad\x26\xf9\xc5\x4d\x0e\x53\x60\x2f\xa3\x17\xd9\xf0\x0b\x0e\xa5\x42\xfb\xbb\x02\x19\x48\x24\x33\x01\x7f\x83\x64\x97\x69\x3a\x07\x25\x23\xc0\x7f\x2e\x1e\x9a\x23\xc2\x09\x1d\x2b\x98\xa6\x82\xd1\x52\x88\xfa\xa9\x1e\x85\xbf\x21\xc6\x74\x95\xe2\x1f\xa0\x26\x7d\xe0\x2c\x4b\x7b\x68\x88\x63\x51\x1f\x30\x2e\x71\x74\x81\x08\x17\xf5\x8f\x28\xce\xb0\x22\xf8\x85\x11\x0a\x26\x28\xac\x90\x93\x1c\x4b\x78\xa3\x70\xd5\xbb\x2c\x49\x18\xcd\x81\xf7\x8a\xb1\x15\x7c\x7b\x30\x9b\xbd\xb9\xbb\x83\x1b\x22\x27\xe5\xc9\x75\x1f\x27\xec\x1a\x97\xa9\x7b\x28\xc1\xa2\x50\x63\x15\xf5\x05\xe3\x7b\x8b\xab\x0d\xb6\x89\xb0\x08\x39\x49\x25\x61\xd4\x7c\x40\xc7\x12\xdf\xca\xdc\x8e\x57\x31\x11\xb2\x98\xca\x11\x1d\x63\xa8\xc3\x6c\x96\xf3\xd5\x34\x96\x83\xeb\x7a\x52\x5a\xb1\xb4\x22\x15\xfb\xea\xae\x0d\x0b\x01\x0a\xc6\x72\xe2\x1d\x4a\x99\x44\x8a\xa7\x12\xca\x95\xe1\x6f\xc3\x3b\x60\x19\x0f\x71\x33\x37\x26\xa6\x98\x23\xc9\x78\xee\x7e\x46\x85\xa2\x4a\x3a\x10\x31\x0a\xbf\xd6\x23\x3c\x42\x59\x2c\xeb\x92\xc8\x18\x17\x5a\x90\x38\x49\x63\x24\xcb\xbe\x58\xdf\xa4\xf2\x32\x9e\x4c\xa8\x10\x48\xaa\x50\x95\x03\x6d\x4b\x7c\x23\x14\xc7\x43\x14\x7e\x5d\xc3\x57\xc9\xbe\x42\x0a\x7f\xc3\x63\x13\x63\x42\xbf\x6e\xcd\x41\xca\xb1\x72\x16\x73\xbb\xd9\x2b\xf8\x1f\x54\x80\x4e\x1b\x5b\x72\x40\x42\x46\x71\xc2\xbe\x90\x2d\x79\x50\xf3\x33\x1e\x6f\xcb\xf1\x9a\x70\x25\x37\x99\x90\x34\x9c\x20\xb9\x34\x08\x67\xc9\xb7\x1b\xf7\x3e\xb6\x04\x0b\x81\xc6\x4f\x70\xbc\x12\x6f\xa9\xa2\x16\x65\x72\xba\xc0\xb7\x1e\xfd\x4f\x73\xe6\x75\x8c\x61\x4c\x30\x95\xdf\x2e\xf1\x26\x8c\xcb\xba\xf1\x6d\x2e\xb2\x8e\x97\x50\x21\x11\x0d\xb1\xa8\xc0\xbb\x96\xee\x1e\xd0\x2a\x4b\xc5\x18\x53\x82\xbf\xdd\x48\x0f\x21\x5b\xb7\x50\x51\x1d\x36\x24\xc3\xca\x72\x60\xdc\x2b\x46\xa5\x6a\xb7\x07\x0d\xb0\x66\x33\x23\x1f\x84\x7c\x50\xa7\xdd\x87\x35\x52\x2e\x99\x9a\x88\xb5\x22\x51\x05\x3d\x1f\x0b\x16\x5f\xe3\xe8\x1e\xc5\xf9\xf0\xf6\x34\xe7\x10\x6b\x54\xad\x6d\x54\x2a\x74\x15\x78\xba\x37\x95\xac\x7e\x4d\x42\xc9\x38\x4b\xc5\x12\xad\x44\x12\x5f\x95\x8d\xff\x6a\xab\xa7\xd9\x6a\x5d\xab\x98\x4a\x22\xa7\x57\x11\x11\x69\x8c\xa6\x57\x1b\x6a\xe5\xe3\x81\xb5\x8e\x39\x61\x94\x48\xa6\x14\x72\x25\x19\x8b\x9f\x98\xb2\x56\x71\xe3\x04\x91\x78\xe9\x07\xcb\x76\xf4\xc9\x5c\x96\x31\x4d\x64\xa2\xd9\x32\x5a\x3f\x9c\xf4\xbb\xc1\xe7\x0b\x07\xd4\x10\x5c\x5c\xbe\xef\xb9\x5d\x30\x2d\xdb\xfe\xf4\xb6\x6b\xdb\x27\xc1\x09\xfc\x76\x16\x9c\xf7\x60\xbf\xde\x80\x80\x23\x2a\x88\x72\x36\x14\xdb\xb6\xe3\x99\x60\x4e\xa4\x4c\x9b\xb6\x7d\x73\x73\x53\xbf\x79\x5b\x67\x7c\x6c\x07\xbe\x7d\xab\x70\xed\x2b\xe0\xe2\xd2\x92\x2b\x90\xf5\x48\x46\xe6\xb1\xd1\xfa\xc1\xb2\x8c\x81\x9c\xc6\x18\x10\x8d\x40\x13\x89\x30\x27\xca\xa0\xaa\xb4\x81\x42\x2d\x9a\xb6\x3d\x26\x72\x92\x0d\xeb\x21\x4b\x6c\x25\xc3\x38\xa3\xb6\x46\x87\xc2\x1c\x9f\xa5\x45\xb3\xe6\xea\x10\x86\x61\x04\x13\x0c\xe7\x6e\x00\x3d\x12\x62\x2a\x30\xbc\x39\x77\x83\x3d\xc3\xe8\xb2\x74\xca\xc9\x78\x22\xe1\x4d\xb8\x07\x07\x8d\xfd\x9f\xe1\x3c\xc7\x68\x18\x17\x98\x27\x44\x08\xc2\x28\x10\x01\x13\xcc\xf1\x70\x0a\x63\x8e\xa8\xc4\x51\x0d\x46\x1c\x63\x60\x23\x08\x27\x88\x8f\x71\x0d\x24\x03\x44\xa7\x90\x62\x2e\x18\x05\x36\x94\x88\x50\xe5\xff\x08\x42\x96\x4e\x0d\x36\x02\x39\x21\x02\x04\x1b\xc9\x1b\xc4\x73\x09\x91\x10\x2c\x24\x48\xe2\x08\x22\x16\x66\x09\xa6\x79\xe0\xc2\x88\xc4\x58\xc0\x1b\x39\xc1\x60\x0e\x0a\x08\x73\x4f\x13\x89\x30\x8a\x0d\x42\x41\x3d\x9b\x3f\xd2\x9d\x3c\xcb\x24\x70\x2c\x24\x27\x5a\x0b\x35\x20\x34\x8c\xb3\x48\xf1\x30\x7f\x1c\x93\x84\x14\x14\x14\xb8\x16\x5c\x18\x92\x41\x26\x70\x4d\xf3\x59\x83\x84\x45\x64\xa4\xfe\x62\x2d\x56\x9a\x0d\x63\x22\x26\x35\x88\x88\x42\x3d\xcc\x24\xae\x81\x50\x83\x5a\x8f\x35\x25\x87\xcd\x38\x08\x1c\xc7\x46\xc8\x52\x82\x05\x68\x59\x97\xdc\xe9\x39\x8a\xf5\x54\x29\x54\x16\x2a\x12\x6a\xe4\x66\xc2\x92\xb2\x24\x44\x18\xa3\x8c\x53\x22\x26\x58\xc3\x44\x0c\x04\xd3\x14\x95\x37\xab\x11\x35\x7d\xc4\xe2\x98\xdd\x28\xd1\x42\x46\x23\x52\x34\xef\xda\xc8\x68\xa8\x16\x30\xe1\xc2\xae\x94\x49\x12\xe6\xea\xd6\x06\x48\x97\x56\x2d\x1e\x89\x09\x8a\x63\x18\xe2\x42\x61\x38\x02\x42\x01\xad\x88\xc3\x15\x79\x55\xbf\x25\x41\x31\xa4\x8c\x6b\x7a\xf7\xc5\xac\x1b\x46\x70\xe6\xc0\xa0\x7f\x1a\x7c\xea\xf8\x0e\xb8\x03\xb8\xf0\xfb\x1f\xdd\x13\xe7\x04\xcc\xce\x00\xdc\x81\x59\x83\x4f\x6e\x70\xd6\xbf\x0c\xe0\x53\xc7\xf7\x3b\x5e\xf0\x19\xfa\xa7\xd0\xf1\x3e\xc3\xff\xb9\xde\x49\x0d\x9c\xdf\x2e\x7c\x67\x30\x80\xbe\x6f\xb8\xe7\x17\x3d\xd7\x39\xa9\x81\xeb\x75\x7b\x97\x27\xae\xf7\x01\xde\x5f\x06\xe0\xf5\x03\xe8\xb9\xe7\x6e\xe0\x9c\x40\xd0\x07\x45\xb0\x40\xe5\x3a\x03\x85\xec\xdc\xf1\xbb\x67\x1d\x2f\xe8\xbc\x77\x7b\x6e\xf0\xb9\x66\x9c\xba\x81\xa7\x70\x9e\xf6\x7d\xe8\xc0\x45\xc7\x0f\xdc\xee\x65\xaf\xe3\xc3\xc5\xa5\x7f\xd1\x1f\x38\xd0\xf1\x4e\xc0\xeb\x7b\xae\x77\xea\xbb\xde\x07\xe7\xdc\xf1\x82\x3a\xb8\x1e\x78\x7d\x70\x3e\x3a\x5e\x00\x83\xb3\x4e\xaf\xa7\x48\x19\x9d\xcb\xe0\xac\xef\x2b\xfe\xa0\xdb\xbf\xf8\xec\xbb\x1f\xce\x02\x38\xeb\xf7\x4e\x1c\x7f\x00\xef\x1d\xe8\xb9\x9d\xf7\x3d\x27\x27\xe5\x7d\x86\x6e\xaf\xe3\x9e\xd7\xe0\xa4\x73\xde\xf9\xe0\x68\xa8\x7e\x70\xe6\xf8\x86\x9a\x96\x73\x07\x9f\xce\x1c\x35\xa4\xe8\x75\x3c\xe8\x74\x03\xb7\xef\x29\x31\xba\x7d\x2f\xf0\x3b\xdd\xa0\x06\x41\xdf\x0f\x16\xa0\x9f\xdc\x81\x53\x83\x8e\xef\x0e\x94\x42\x4e\xfd\xfe\x79\xcd\x50\xea\xec\x9f\xaa\x29\xae\xa7\xe0\x3c\x27\xc7\xa2\x54\x0d\x25\x8b\xf4\x7d\x7d\x7f\x39\x70\x16\x08\xe1\xc4\xe9\xf4\x5c\xef\xc3\x40\x01\x2b\x11\xe7\x93\xeb\x86\x65\x1d\x1b\x2d\x9d\x02\x6f\x93\x98\x8a\x76\x45\x62\xdb\x3f\x3c\x3c\xcc\xf3\x99\xb9\xdd\x24\xa1\x92\x5b\xdb\x1c\x31\x2a\xad\x11\x4a\x48\x3c\x6d\xc2\x4f\x67\x38\xbe\xc6\x92\x84\x08\x3c\x9c\xe1\x9f\x6a\xb0\x18\xa8\x41\x87\x13\x14\xd7\x40\x20\x2a\x2c\x81\x39\x19\x1d\xc1\x90\xdd\x5a\x82\xfc\xa5\x6a\x31\x0c\x19\x8f\x30\xb7\x86\xec\xf6\x08\x34\x52\x41\xfe\xc2\x4d\xd8\xff\x39\xbd\x3d\x82\x04\xf1\x31\xa1\x4d\x68\x1c\xa9\xdc\x3a\xc1\x28\x7a\x49\xfa\x09\x96\x08\x54\x45\x6d\x9b\xd7\x04\xdf\xa8\x28\x32\x55\xf4\x4a\x4c\x65\xdb\xbc\x21\x91\x9c\xb4\x23\x7c\x4d\x42\x6c\xe9\x9b\x97\x53\x16\xd8\x73\x76\x95\x31\x2d\xfc\x67\x46\xae\xdb\x66\x37\x67\xd5\x0a\xa6\x29\x5e\x61\x5c\xb5\x22\xb6\x32\xee\x91\xae\x04\x02\xcb\xf6\x65\x70\x6a\xfd\xfa\xc2\xec\xeb\xa5\xee\xcb\x99\xfb\xa1\x5e\xa4\x65\x6b\xe6\x8e\x0d\xa3\x65\x2b\xa7\x54\x17\x43\x16\x4d\x81\x48\x9c\x88\x90\xa5\xb8\x6d\x9a\xfa\x46\x4e\xd5\x75\x11\x51\x22\x9c\xe0\x04\xe9\x88\x72\x54\x75\x3f\x9f\xf7\xbe\xcf\x2a\xa4\x75\x83\x87\x5f\x89\xb4\xf2\x07\x09\x63\x72\xa2\x81\xf2\xda\x40\x90\xc0\xd1\x72\x92\xf2\x0d\x0d\x6d\xa1\xe8\x4b\x26\x64\x13\x28\xa3\xf8\x08\x26\x58\x55\xa6\x26\xec\x37\x1a\xff\x73\x04\x31\xa1\xd8\x5a\x0c\xd5\xdf\xe1\xe4\x08\x74\x04\xe4\x13\xe0\x07\x92\xa8\x60\x41\x54\x1e\xc1\x10\x85\x5f\xc7\x9c\x65\x34\xb2\x42\x16\x33\xde\x84\x1f\x47\xef\xd4\xef\xaa\xfa\x21\x45\x51\xa4\xb9\x52\xde\x30\x1c\xeb\x99\x6d\xb3\x98\x69\x2a\x7d\x4b\x34\x7c\x6e\xf7\x58\x11\x69\x4b\x39\x2a\x79\x07\x68\x49\xfe\x82\x79\x0c\x40\x71\xf0\xcc\x99\xf4\x1a\x73\x85\x24\xb6\x50\x4c\xc6\xb4\x09\x92\xa5\x65\x45\x5d\xeb\x07\x6d\x53\xb2\xd4\x3c\x6e\xd9\x32\x5a\x32\x9a\x67\x56\xf3\x5d\xa3\xf1\xcc\xa1\x52\xc9\x74\xb1\xb4\x6a\xc2\x30\x66\xe1\xd7\x92\x6f\x27\xe8\xd6\x2a\x9c\xe4\x5d\xa3\x91\xde\x96\x1e\x86\x31\x46\x5c\x11\x94\x93\xd2\xf8\xa6\x40\x59\x28\x07\x50\x26\xd9\xbd\x90\x28\x69\x4b\x2b\x0a\xa0\x15\x91\xeb\xe7\x76\xab\xb2\xbc\xf7\x95\xf3\xb0\x10\x73\xbe\x95\x91\x75\x30\x17\x76\x56\x9a\x30\x21\xc4\x71\x5c\xcc\x6e\x9b\x8d\xfc\x5e\xa4\x28\x9c\xdf\x3f\xab\xa0\xc5\x43\x8e\x22\x92\x89\x26\xbc\xd5\x63\x15\x09\x60\x34\x2a\x65\xb1\x1c\xac\x09\xfb\xe9\x2d\x08\x16\x93\x08\x7e\xc4\x87\xea\xb7\x9c\x18\x46\xa3\x15\x5d\xec\x42\x76\x58\x72\xf2\x7c\x59\xe2\xdd\xc6\x80\x2b\x69\x57\x83\xdc\x14\xa5\xe6\x97\x46\xe3\x08\x74\x89\x2a\xe6\x87\x98\x4a\xcc\xab\xec\xa5\xff\x35\xb4\x51\xd6\xed\xe6\xbc\xfb\xe5\xe0\xa0\x5b\x5d\x80\x0e\x94\x5f\x9b\x50\xc4\x5b\x4e\x60\xd5\x7a\x39\x6c\x75\x44\xce\x7f\x96\x3b\x66\x8b\xad\x32\xd0\x2f\x4b\x2a\xdf\x25\xed\xc1\x3e\xcc\x66\x62\xf1\xc2\x03\x46\x8c\xc3\x72\x57\x67\xc3\xae\x1a\xcc\x66\xf7\xa8\xc2\xea\x1e\x4f\xbb\xb4\xc3\xb3\x36\xad\x78\xb5\x52\x32\xfe\x22\x07\x2f\xee\xf9\xab\x9b\x6e\x53\xcc\x96\xce\xb3\x9f\x3b\xcf\x43\xbe\xb1\xf3\xb9\x6f\xa3\xda\x77\xcb\x09\x76\xdd\x15\x1a\xd0\x98\xe7\x92\x87\xdc\xa1\x10\x03\xc1\x84\xe3\x51\xdb\xdc\xe6\x8d\xfb\x33\xfb\xc3\x3c\x69\x9e\x9e\x9e\x16\xc9\x37\xc2\x21\xe3\xfa\x9d\xdc\x7c\x79\x50\x5a\x10\x1c\xa8\xe5\x40\x29\x6f\x0f\x59\x1c\x55\x27\xee\x30\xe3\x42\x61\x4f\x19\xc9\x07\x16\x0d\x05\xa1\x1a\x69\xd1\x57\xdc\x4b\xf0\xbf\x28\xc6\x34\x3e\xfd\x12\x75\xc4\x78\xd2\x84\x10\xa5\x44\xa2\x98\xfc\x85\x2b\x93\xfe\xdb\x9f\x7f\xc5\x11\xaa\xa8\xd7\x6b\x33\x8a\x61\xad\xe5\x66\x5e\xc8\x17\x83\x8b\xee\x2d\xbd\x2d\xcc\x7b\xfc\x91\xe0\x1b\x20\x14\x1e\x7d\x3b\xde\xb2\x51\xa5\x0f\xdf\x4b\xbc\xd5\xe9\x37\xff\x79\x6c\xf3\xa3\xa2\x28\xbc\x86\xec\x3f\x13\xb2\x42\x72\x46\xc7\x2f\xa7\xda\xdf\x37\x9f\xcb\xf9\xa3\xd8\xf9\x6a\xd9\x39\x93\xdf\xc1\xeb\x2a\x1a\x86\xe2\xc9\xfc\xf0\xc9\xfd\x2d\xb4\x57\x3f\xfc\x77\xf8\x61\xde\x9a\x2e\x5c\xad\x35\x7c\x39\x33\x83\x5d\xad\xa3\x47\x4e\x5d\x6d\x3e\x1a\xf5\xc2\xc2\x6c\x8e\x3b\xa8\xa8\x05\xcb\x4d\xf4\xbc\x12\xbc\xb8\x67\xac\x70\xb4\x2b\xee\xf1\xa8\x46\x1f\x3d\x4a\xf7\x1f\xea\x2c\xab\x1d\xe6\xfd\xb3\x7d\x2f\xd4\x50\xce\xdb\xad\xb5\x9e\x32\xa3\x11\xe6\xaa\xfb\x2b\xbb\x53\x7e\x3a\x51\x35\x51\xbb\x97\x63\xbe\xad\x9a\x6e\xd9\xde\xad\x9e\x35\xa9\x34\xef\x6b\x57\xb8\x33\xd5\x78\xe7\x3c\x13\xa0\x35\xd9\x41\x9e\x76\x4e\x4f\x4f\x89\xe0\x87\x3a\xe2\xd7\xc0\xfa\xef\x6c\x73\x57\x97\x5b\x8b\x33\x7b\xcb\x05\xd7\x7c\xe8\x05\x96\x5c\xab\x27\x08\x5f\xbd\xf1\xdf\xe1\x8d\xaf\x8b\xae\xd7\x45\xd7\xeb\xa2\x6b\xd7\x9d\xe5\x75\xd1\xb5\x33\x2d\xdb\x26\x43\xb5\x6c\xbd\x1f\x77\xfc\x84\xad\xd0\x05\xc8\x72\xe4\xd9\x4f\x62\x94\x8e\x26\xad\x9c\x34\x59\x1a\xfa\xf0\xf0\xf0\xa1\x0d\xee\xf2\xce\xee\xfa\x96\xe4\x6e\x34\x0d\xbb\xd4\xbe\x3c\x67\xeb\x72\xb0\xb1\x75\xa9\xdc\x44\x7b\xcc\xe4\x2b\xbd\xcd\xbd\x73\x0d\xe5\x53\x58\xab\xe9\xaa\xfc\xf5\xf1\xf3\x39\xc4\xc1\x6a\xb6\xd2\x12\x6d\x9d\xaa\x30\x95\x30\x9c\x6e\xb7\x0f\xb7\x9e\x3b\xd6\xce\x3b\xdc\xcf\x0c\x2d\x3b\x22\xd7\xc7\xf9\xff\x46\x39\x4d\xec\x5a\x5b\xbb\xe1\x78\x5d\x2e\xe2\x32\x7f\xb5\xec\x21\x8b\xa6\x6a\x64\x22\x93\xf8\xd8\x30\xaa\xbf\xdf\x49\x33\x31\x61\xd7\x98\x7f\x87\xaf\x7b\xd7\x50\xfd\xf3\xdf\x83\x7d\x9f\xcf\xc1\xb6\xff\x1a\xec\xfb\x7d\x0c\xb6\x42\x73\x0b\x4d\x2e\x3f\xd1\x7d\xc2\x37\x7b\xff\x1f\x00\x00\xff\xff\xae\x05\x86\xad\xbb\x40\x00\x00") func templateDefaultTmplBytes() ([]byte, error) { return bindataRead( @@ -83,7 +83,7 @@ func templateDefaultTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/default.tmpl", size: 16263, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/default.tmpl", size: 16571, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -182,7 +182,6 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } - var _bintree = &bintree{nil, map[string]*bintree{ "template": &bintree{nil, map[string]*bintree{ "default.tmpl": &bintree{templateDefaultTmpl, map[string]*bintree{}}, @@ -235,3 +234,4 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } +