From 8981d80ed338dab0fc9bec56587e0bd0e3c4c40d Mon Sep 17 00:00:00 2001 From: Angus <45074804+AngusGMorrison@users.noreply.github.com> Date: Thu, 11 May 2023 13:00:42 +0100 Subject: [PATCH 01/51] Correct logger variable name in stdout example (#549) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68df81ef..312b3b1e 100644 --- a/README.md +++ b/README.md @@ -499,7 +499,7 @@ log.Ctx(ctx).Info().Msg("hello world") ### Set as standard logger output ```go -log := zerolog.New(os.Stdout).With(). +stdlog := zerolog.New(os.Stdout).With(). Str("foo", "bar"). Logger() From 4612e098d222bd30042ed909a474c88cd773850f Mon Sep 17 00:00:00 2001 From: Basten Gao Date: Mon, 15 May 2023 20:07:32 +0800 Subject: [PATCH 02/51] Fix error chain from pkgerrors (#552) --- pkgerrors/stacktrace.go | 23 ++++++++++++++++++++--- pkgerrors/stacktrace_test.go | 9 +++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/pkgerrors/stacktrace.go b/pkgerrors/stacktrace.go index 01420e64..2f62ffdd 100644 --- a/pkgerrors/stacktrace.go +++ b/pkgerrors/stacktrace.go @@ -42,15 +42,32 @@ func frameField(f errors.Frame, s *state, c rune) string { // MarshalStack implements pkg/errors stack trace marshaling. // -// zerolog.ErrorStackMarshaler = MarshalStack +// zerolog.ErrorStackMarshaler = MarshalStack func MarshalStack(err error) interface{} { type stackTracer interface { StackTrace() errors.StackTrace } - sterr, ok := err.(stackTracer) - if !ok { + var sterr stackTracer + var ok bool + for err != nil { + sterr, ok = err.(stackTracer) + if ok { + break + } + + u, ok := err.(interface { + Unwrap() error + }) + if !ok { + return nil + } + + err = u.Unwrap() + } + if sterr == nil { return nil } + st := sterr.StackTrace() s := &state{} out := make([]map[string]string, 0, len(st)) diff --git a/pkgerrors/stacktrace_test.go b/pkgerrors/stacktrace_test.go index 4f9838c4..5a138323 100644 --- a/pkgerrors/stacktrace_test.go +++ b/pkgerrors/stacktrace_test.go @@ -4,6 +4,7 @@ package pkgerrors import ( "bytes" + "fmt" "regexp" "testing" @@ -17,11 +18,11 @@ func TestLogStack(t *testing.T) { out := &bytes.Buffer{} log := zerolog.New(out) - err := errors.Wrap(errors.New("error message"), "from error") + err := fmt.Errorf("from error: %w", errors.New("error message")) log.Log().Stack().Err(err).Msg("") got := out.String() - want := `\{"stack":\[\{"func":"TestLogStack","line":"20","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` + want := `\{"stack":\[\{"func":"TestLogStack","line":"21","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` if ok, _ := regexp.MatchString(want, got); !ok { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) } @@ -33,11 +34,11 @@ func TestLogStackFromContext(t *testing.T) { out := &bytes.Buffer{} log := zerolog.New(out).With().Stack().Logger() // calling Stack() on log context instead of event - err := errors.Wrap(errors.New("error message"), "from error") + err := fmt.Errorf("from error: %w", errors.New("error message")) log.Log().Err(err).Msg("") // not explicitly calling Stack() got := out.String() - want := `\{"stack":\[\{"func":"TestLogStackFromContext","line":"36","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` + want := `\{"stack":\[\{"func":"TestLogStackFromContext","line":"37","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` if ok, _ := regexp.MatchString(want, got); !ok { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) } From b662f088b9b76644b34df7eecd4053100a7c0c01 Mon Sep 17 00:00:00 2001 From: Harish Kukreja Date: Sun, 11 Jun 2023 11:20:21 -0400 Subject: [PATCH 03/51] docs: context.Timestamp uses zerolog.TimeFieldFormat (#554) --- context.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/context.go b/context.go index f398e319..39397d9c 100644 --- a/context.go +++ b/context.go @@ -329,8 +329,9 @@ func (ts timestampHook) Run(e *Event, level Level, msg string) { var th = timestampHook{} -// Timestamp adds the current local time as UNIX timestamp to the logger context with the "time" key. +// Timestamp adds the current local time to the logger context with the "time" key, formatted using zerolog.TimeFieldFormat. // To customize the key name, change zerolog.TimestampFieldName. +// To customize the time format, change zerolog.TimeFieldFormat. // // NOTE: It won't dedupe the "time" key if the *Context has one already. func (c Context) Timestamp() Context { From 9070d49a1a4154c819e9c5ae6c923f3cc916d959 Mon Sep 17 00:00:00 2001 From: stergiotis Date: Mon, 19 Jun 2023 01:30:44 +0200 Subject: [PATCH 04/51] Add event method RawCBOR analogous to RawJSON (#556) CBOR is encoded as data-url in JSON encoding and tagged in CBOR encoding. --- encoder_cbor.go | 3 +++ encoder_json.go | 12 ++++++++++ event.go | 12 ++++++++++ internal/cbor/cbor.go | 3 ++- internal/cbor/decode_stream.go | 40 ++++++++++++++++++++++++++++++++++ internal/cbor/string.go | 22 +++++++++++++++++++ log_test.go | 3 ++- 7 files changed, 93 insertions(+), 2 deletions(-) diff --git a/encoder_cbor.go b/encoder_cbor.go index 7b0dafef..36cb994b 100644 --- a/encoder_cbor.go +++ b/encoder_cbor.go @@ -24,6 +24,9 @@ func init() { func appendJSON(dst []byte, j []byte) []byte { return cbor.AppendEmbeddedJSON(dst, j) } +func appendCBOR(dst []byte, c []byte) []byte { + return cbor.AppendEmbeddedCBOR(dst, c) +} // decodeIfBinaryToString - converts a binary formatted log msg to a // JSON formatted String Log message. diff --git a/encoder_json.go b/encoder_json.go index 0e0450e2..6f96c68a 100644 --- a/encoder_json.go +++ b/encoder_json.go @@ -6,6 +6,7 @@ package zerolog // JSON encoded byte stream. import ( + "encoding/base64" "github.com/rs/zerolog/internal/json" ) @@ -25,6 +26,17 @@ func init() { func appendJSON(dst []byte, j []byte) []byte { return append(dst, j...) } +func appendCBOR(dst []byte, cbor []byte) []byte { + dst = append(dst, []byte("\"data:application/cbor;base64,")...) + l := len(dst) + enc := base64.StdEncoding + n := enc.EncodedLen(len(cbor)) + for i := 0; i < n; i++ { + dst = append(dst, '.') + } + enc.Encode(dst[l:], cbor) + return append(dst, '"') +} func decodeIfBinaryToString(in []byte) string { return string(in) diff --git a/event.go b/event.go index 2e736c83..5fb46536 100644 --- a/event.go +++ b/event.go @@ -318,6 +318,18 @@ func (e *Event) RawJSON(key string, b []byte) *Event { return e } +// RawCBOR adds already encoded CBOR to the log line under key. +// +// No sanity check is performed on b +// Note: The full featureset of CBOR is supported as data will not be mapped to json but stored as data-url +func (e *Event) RawCBOR(key string, b []byte) *Event { + if e == nil { + return e + } + e.buf = appendCBOR(enc.AppendKey(e.buf, key), b) + return e +} + // AnErr adds the field key with serialized err to the *Event context. // If err is nil, no field is added. func (e *Event) AnErr(key string, err error) *Event { diff --git a/internal/cbor/cbor.go b/internal/cbor/cbor.go index bc54e37a..1bf14438 100644 --- a/internal/cbor/cbor.go +++ b/internal/cbor/cbor.go @@ -26,7 +26,8 @@ const ( additionalTypeBreak byte = 31 // Tag Sub-types. - additionalTypeTimestamp byte = 01 + additionalTypeTimestamp byte = 01 + additionalTypeEmbeddedCBOR byte = 63 // Extended Tags - from https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml additionalTypeTagNetworkAddr uint16 = 260 diff --git a/internal/cbor/decode_stream.go b/internal/cbor/decode_stream.go index fc16f98c..616bed65 100644 --- a/internal/cbor/decode_stream.go +++ b/internal/cbor/decode_stream.go @@ -5,6 +5,7 @@ package cbor import ( "bufio" "bytes" + "encoding/base64" "fmt" "io" "math" @@ -213,6 +214,31 @@ func decodeString(src *bufio.Reader, noQuotes bool) []byte { } return append(result, '"') } +func decodeStringToDataUrl(src *bufio.Reader, mimeType string) []byte { + pb := readByte(src) + major := pb & maskOutAdditionalType + minor := pb & maskOutMajorType + if major != majorTypeByteString { + panic(fmt.Errorf("Major type is: %d in decodeString", major)) + } + length := decodeIntAdditionalType(src, minor) + l := int(length) + enc := base64.StdEncoding + lEnc := enc.EncodedLen(l) + result := make([]byte, len("\"data:;base64,\"")+len(mimeType)+lEnc) + dest := result + u := copy(dest, "\"data:") + dest = dest[u:] + u = copy(dest, mimeType) + dest = dest[u:] + u = copy(dest, ";base64,") + dest = dest[u:] + pbs := readNBytes(src, l) + enc.Encode(dest, pbs) + dest = dest[lEnc:] + dest[0] = '"' + return result +} func decodeUTF8String(src *bufio.Reader) []byte { pb := readByte(src) @@ -349,6 +375,20 @@ func decodeTagData(src *bufio.Reader) []byte { switch minor { case additionalTypeTimestamp: return decodeTimeStamp(src) + case additionalTypeIntUint8: + val := decodeIntAdditionalType(src, minor) + switch byte(val) { + case additionalTypeEmbeddedCBOR: + pb := readByte(src) + dataMajor := pb & maskOutAdditionalType + if dataMajor != majorTypeByteString { + panic(fmt.Errorf("Unsupported embedded Type: %d in decodeEmbeddedCBOR", dataMajor)) + } + src.UnreadByte() + return decodeStringToDataUrl(src, "application/cbor") + default: + panic(fmt.Errorf("Unsupported Additional Tag Type: %d in decodeTagData", val)) + } // Tag value is larger than 256 (so uint16). case additionalTypeIntUint16: diff --git a/internal/cbor/string.go b/internal/cbor/string.go index a33890a5..9fc9a4f8 100644 --- a/internal/cbor/string.go +++ b/internal/cbor/string.go @@ -93,3 +93,25 @@ func AppendEmbeddedJSON(dst, s []byte) []byte { } return append(dst, s...) } + +// AppendEmbeddedCBOR adds a tag and embeds input CBOR as such. +func AppendEmbeddedCBOR(dst, s []byte) []byte { + major := majorTypeTags + minor := additionalTypeEmbeddedCBOR + + // Append the TAG to indicate this is Embedded JSON. + dst = append(dst, major|additionalTypeIntUint8) + dst = append(dst, minor) + + // Append the CBOR Object as Byte String. + major = majorTypeByteString + + l := len(s) + if l <= additionalMax { + lb := byte(l) + dst = append(dst, major|lb) + } else { + dst = appendCborTypePrefix(dst, major, uint64(l)) + } + return append(dst, s...) +} diff --git a/log_test.go b/log_test.go index aa84750c..0e64c494 100644 --- a/log_test.go +++ b/log_test.go @@ -320,6 +320,7 @@ func TestFields(t *testing.T) { Bytes("bytes", []byte("bar")). Hex("hex", []byte{0x12, 0xef}). RawJSON("json", []byte(`{"some":"json"}`)). + RawCBOR("cbor", []byte{0x83, 0x01, 0x82, 0x02, 0x03, 0x82, 0x04, 0x05}). Func(func(e *Event) { e.Str("func", "func_output") }). AnErr("some_err", nil). Err(errors.New("some error")). @@ -344,7 +345,7 @@ func TestFields(t *testing.T) { Time("time", time.Time{}). TimeDiff("diff", now, now.Add(-10*time.Second)). Msg("") - if got, want := decodeIfBinaryToString(out.Bytes()), `{"caller":"`+caller+`","string":"foo","stringer":"127.0.0.1","stringer_nil":null,"bytes":"bar","hex":"12ef","json":{"some":"json"},"func":"func_output","error":"some error","bool":true,"int":1,"int8":2,"int16":3,"int32":4,"int64":5,"uint":6,"uint8":7,"uint16":8,"uint32":9,"uint64":10,"IPv4":"192.168.0.100","IPv6":"2001:db8:85a3::8a2e:370:7334","Mac":"00:14:22:01:23:45","Prefix":"192.168.0.100/24","float32":11.1234,"float64":12.321321321,"dur":1000,"time":"0001-01-01T00:00:00Z","diff":10000}`+"\n"; got != want { + if got, want := decodeIfBinaryToString(out.Bytes()), `{"caller":"`+caller+`","string":"foo","stringer":"127.0.0.1","stringer_nil":null,"bytes":"bar","hex":"12ef","json":{"some":"json"},"cbor":"data:application/cbor;base64,gwGCAgOCBAU=","func":"func_output","error":"some error","bool":true,"int":1,"int8":2,"int16":3,"int32":4,"int64":5,"uint":6,"uint8":7,"uint16":8,"uint32":9,"uint64":10,"IPv4":"192.168.0.100","IPv6":"2001:db8:85a3::8a2e:370:7334","Mac":"00:14:22:01:23:45","Prefix":"192.168.0.100/24","float32":11.1234,"float64":12.321321321,"dur":1000,"time":"0001-01-01T00:00:00Z","diff":10000}`+"\n"; got != want { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) } } From 61485f38578672cdb7019c32230055a2c70a4620 Mon Sep 17 00:00:00 2001 From: finkandreas Date: Wed, 12 Jul 2023 14:29:38 +0200 Subject: [PATCH 05/51] Fix #564 (#565) This could be a potential fix for #564 --- log.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/log.go b/log.go index 0b51676c..e6f6f7c0 100644 --- a/log.go +++ b/log.go @@ -309,7 +309,9 @@ func (l Logger) Sample(s Sampler) Logger { // Hook returns a logger with the h Hook. func (l Logger) Hook(h Hook) Logger { - l.hooks = append(l.hooks, h) + newHooks := make([]Hook, len(l.hooks), len(l.hooks)+1) + copy(newHooks, l.hooks) + l.hooks = append(newHooks, h) return l } From 873cbf13eee25c3b40b0d01330471c1e557552f3 Mon Sep 17 00:00:00 2001 From: Dan Price Date: Tue, 25 Jul 2023 06:47:18 -0700 Subject: [PATCH 06/51] Allow callers to pass go context through to hooks (#559) Add Ctx(context.Context) to Event and Context, allowing log.Info().Ctx(ctx).Msg("hello"). Registered hooks can retrieve the context from Event.GetCtx(). Facilitates writing hooks which fetch tracing context from the go context. --- README.md | 56 +++++++++++++++++++++++++++++++++++------------ benchmark_test.go | 9 ++++++++ context.go | 10 +++++++++ event.go | 30 ++++++++++++++++++++++--- hook_test.go | 34 ++++++++++++++++++++++++++++ log.go | 6 +++-- log_test.go | 6 ++++- 7 files changed, 131 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 312b3b1e..3fc0dc4a 100644 --- a/README.md +++ b/README.md @@ -513,25 +513,53 @@ stdlog.Print("hello world") ### context.Context integration -The `Logger` instance could be attached to `context.Context` values with `logger.WithContext(ctx)` -and extracted from it using `zerolog.Ctx(ctx)`. +Go contexts are commonly passed throughout Go code, and this can help you pass +your Logger into places it might otherwise be hard to inject. The `Logger` +instance may be attached to Go context (`context.Context`) using +`Logger.WithContext(ctx)` and extracted from it using `zerolog.Ctx(ctx)`. +For example: -Example to add logger to context: ```go -// this code attach logger instance to context fields -ctx := context.Background() -logger := zerolog.New(os.Stdout) -ctx = logger.WithContext(ctx) -someFunc(ctx) +func f() { + logger := zerolog.New(os.Stdout) + ctx := context.Background() + + // Attach the Logger to the context.Context + ctx = logger.WithContext(ctx) + someFunc(ctx) +} + +func someFunc(ctx context.Context) { + // Get Logger from the go Context. if it's nil, then + // `zerolog.DefaultContextLogger` is returned, if + // `DefaultContextLogger` is nil, then a disabled logger is returned. + logger := zerolog.Ctx(ctx) + logger.Info().Msg("Hello") +} ``` -Extracting logger from context: +A second form of `context.Context` integration allows you to pass the current +context.Context into the logged event, and retrieve it from hooks. This can be +useful to log trace and span IDs or other information stored in the go context, +and facilitates the unification of logging and tracing in some systems: + ```go -func someFunc(ctx context.Context) { - // get logger from context. if it's nill, then `zerolog.DefaultContextLogger` is returned, - // if `DefaultContextLogger` is nil, then disabled logger returned. - logger := zerolog.Ctx(ctx) - logger.Info().Msg("Hello") +type TracingHook struct{} + +func (h TracingHook) Run(e *zerolog.Event, level zerolog.Level, msg string) { + ctx := e.Ctx() + spanId := getSpanIdFromContext(ctx) // as per your tracing framework + e.Str("span-id", spanId) +} + +func f() { + // Setup the logger + logger := zerolog.New(os.Stdout) + logger = logger.Hook(TracingHook{}) + + ctx := context.Background() + // Use the Ctx function to make the context available to the hook + logger.Info().Ctx(ctx).Msg("Hello") } ``` diff --git a/benchmark_test.go b/benchmark_test.go index 9aa41008..b2bb79a3 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -1,6 +1,7 @@ package zerolog import ( + "context" "errors" "io/ioutil" "net" @@ -160,6 +161,7 @@ func BenchmarkLogFieldType(b *testing.B) { {"a", "a", 0}, } errs := []error{errors.New("a"), errors.New("b"), errors.New("c"), errors.New("d"), errors.New("e")} + ctx := context.Background() types := map[string]func(e *Event) *Event{ "Bool": func(e *Event) *Event { return e.Bool("k", bools[0]) @@ -191,6 +193,9 @@ func BenchmarkLogFieldType(b *testing.B) { "Errs": func(e *Event) *Event { return e.Errs("k", errs) }, + "Ctx": func(e *Event) *Event { + return e.Ctx(ctx) + }, "Time": func(e *Event) *Event { return e.Time("k", times[0]) }, @@ -284,6 +289,7 @@ func BenchmarkContextFieldType(b *testing.B) { {"a", "a", 0}, } errs := []error{errors.New("a"), errors.New("b"), errors.New("c"), errors.New("d"), errors.New("e")} + ctx := context.Background() types := map[string]func(c Context) Context{ "Bool": func(c Context) Context { return c.Bool("k", bools[0]) @@ -318,6 +324,9 @@ func BenchmarkContextFieldType(b *testing.B) { "Errs": func(c Context) Context { return c.Errs("k", errs) }, + "Ctx": func(c Context) Context { + return c.Ctx(ctx) + }, "Time": func(c Context) Context { return c.Time("k", times[0]) }, diff --git a/context.go b/context.go index 39397d9c..9d860e50 100644 --- a/context.go +++ b/context.go @@ -1,6 +1,7 @@ package zerolog import ( + "context" "fmt" "io/ioutil" "math" @@ -165,6 +166,15 @@ func (c Context) Err(err error) Context { return c.AnErr(ErrorFieldName, err) } +// Ctx adds the context.Context to the logger context. The context.Context is +// not rendered in the error message, but is made available for hooks to use. +// A typical use case is to extract tracing information from the +// context.Context. +func (c Context) Ctx(ctx context.Context) Context { + c.l.ctx = ctx + return c +} + // Bool adds the field key with val as a bool to the logger context. func (c Context) Bool(key string, b bool) Context { c.l.context = enc.AppendBool(enc.AppendKey(c.l.context, key), b) diff --git a/event.go b/event.go index 5fb46536..2a5d3b08 100644 --- a/event.go +++ b/event.go @@ -1,6 +1,7 @@ package zerolog import ( + "context" "fmt" "net" "os" @@ -24,9 +25,10 @@ type Event struct { w LevelWriter level Level done func(msg string) - stack bool // enable error stack trace - ch []Hook // hooks from context - skipFrame int // The number of additional frames to skip when printing the caller. + stack bool // enable error stack trace + ch []Hook // hooks from context + skipFrame int // The number of additional frames to skip when printing the caller. + ctx context.Context // Optional Go context for event } func putEvent(e *Event) { @@ -417,6 +419,28 @@ func (e *Event) Stack() *Event { return e } +// Ctx adds the Go Context to the *Event context. The context is not rendered +// in the output message, but is available to hooks and to Func() calls via the +// GetCtx() accessor. A typical use case is to extract tracing information from +// the Go Ctx. +func (e *Event) Ctx(ctx context.Context) *Event { + if e != nil { + e.ctx = ctx + } + return e +} + +// GetCtx retrieves the Go context.Context which is optionally stored in the +// Event. This allows Hooks and functions passed to Func() to retrieve values +// which are stored in the context.Context. This can be useful in tracing, +// where span information is commonly propagated in the context.Context. +func (e *Event) GetCtx() context.Context { + if e == nil || e.ctx == nil { + return context.Background() + } + return e.ctx +} + // Bool adds the field key with val as a bool to the *Event context. func (e *Event) Bool(key string, b bool) *Event { if e == nil { diff --git a/hook_test.go b/hook_test.go index 19bde9d4..e9f5b9ee 100644 --- a/hook_test.go +++ b/hook_test.go @@ -2,10 +2,15 @@ package zerolog import ( "bytes" + "context" "io/ioutil" "testing" ) +type contextKeyType int + +var contextKey contextKeyType + var ( levelNameHook = HookFunc(func(e *Event, level Level, msg string) { levelName := level.String() @@ -31,6 +36,12 @@ var ( discardHook = HookFunc(func(e *Event, level Level, message string) { e.Discard() }) + contextHook = HookFunc(func(e *Event, level Level, message string) { + contextData, ok := e.GetCtx().Value(contextKey).(string) + if ok { + e.Str("context-data", contextData) + } + }) ) func TestHook(t *testing.T) { @@ -120,6 +131,29 @@ func TestHook(t *testing.T) { log = log.Hook(discardHook) log.Log().Msg("test message") }}, + {"Context/Background", `{"level":"info","message":"test message"}` + "\n", func(log Logger) { + log = log.Hook(contextHook) + log.Info().Ctx(context.Background()).Msg("test message") + }}, + {"Context/nil", `{"level":"info","message":"test message"}` + "\n", func(log Logger) { + // passing `nil` where a context is wanted is against + // the rules, but people still do it. + log = log.Hook(contextHook) + log.Info().Ctx(nil).Msg("test message") // nolint + }}, + {"Context/valid", `{"level":"info","context-data":"12345abcdef","message":"test message"}` + "\n", func(log Logger) { + ctx := context.Background() + ctx = context.WithValue(ctx, contextKey, "12345abcdef") + log = log.Hook(contextHook) + log.Info().Ctx(ctx).Msg("test message") + }}, + {"Context/With/valid", `{"level":"info","context-data":"12345abcdef","message":"test message"}` + "\n", func(log Logger) { + ctx := context.Background() + ctx = context.WithValue(ctx, contextKey, "12345abcdef") + log = log.Hook(contextHook) + log = log.With().Ctx(ctx).Logger() + log.Info().Msg("test message") + }}, {"None", `{"level":"error"}` + "\n", func(log Logger) { log.Error().Msg("") }}, diff --git a/log.go b/log.go index e6f6f7c0..7c7c6a20 100644 --- a/log.go +++ b/log.go @@ -82,8 +82,7 @@ // log.Warn().Msg("") // // Output: {"level":"warn","severity":"warn"} // -// -// Caveats +// # Caveats // // There is no fields deduplication out-of-the-box. // Using the same key multiple times creates new key in final JSON each time. @@ -99,6 +98,7 @@ package zerolog import ( + "context" "errors" "fmt" "io" @@ -218,6 +218,7 @@ type Logger struct { context []byte hooks []Hook stack bool + ctx context.Context } // New creates a root logger with given output writer. If the output writer implements @@ -455,6 +456,7 @@ func (l *Logger) newEvent(level Level, done func(string)) *Event { e := newEvent(l.w, level) e.done = done e.ch = l.hooks + e.ctx = l.ctx if level != NoLevel && LevelFieldName != "" { e.Str(LevelFieldName, LevelFieldMarshalFunc(level)) } diff --git a/log_test.go b/log_test.go index 0e64c494..4d0d93b1 100644 --- a/log_test.go +++ b/log_test.go @@ -2,6 +2,7 @@ package zerolog import ( "bytes" + "context" "errors" "fmt" "net" @@ -119,7 +120,8 @@ func TestWith(t *testing.T) { Uint64("uint64", 10). Float32("float32", 11.101). Float64("float64", 12.30303). - Time("time", time.Time{}) + Time("time", time.Time{}). + Ctx(context.Background()) _, file, line, _ := runtime.Caller(0) caller := fmt.Sprintf("%s:%d", file, line+3) log := ctx.Caller().Logger() @@ -344,6 +346,7 @@ func TestFields(t *testing.T) { Dur("dur", 1*time.Second). Time("time", time.Time{}). TimeDiff("diff", now, now.Add(-10*time.Second)). + Ctx(context.Background()). Msg("") if got, want := decodeIfBinaryToString(out.Bytes()), `{"caller":"`+caller+`","string":"foo","stringer":"127.0.0.1","stringer_nil":null,"bytes":"bar","hex":"12ef","json":{"some":"json"},"cbor":"data:application/cbor;base64,gwGCAgOCBAU=","func":"func_output","error":"some error","bool":true,"int":1,"int8":2,"int16":3,"int32":4,"int64":5,"uint":6,"uint8":7,"uint16":8,"uint32":9,"uint64":10,"IPv4":"192.168.0.100","IPv6":"2001:db8:85a3::8a2e:370:7334","Mac":"00:14:22:01:23:45","Prefix":"192.168.0.100/24","float32":11.1234,"float64":12.321321321,"dur":1000,"time":"0001-01-01T00:00:00Z","diff":10000}`+"\n"; got != want { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) @@ -462,6 +465,7 @@ func TestFieldsDisabled(t *testing.T) { Dur("dur", 1*time.Second). Time("time", time.Time{}). TimeDiff("diff", now, now.Add(-10*time.Second)). + Ctx(context.Background()). Msg("") if got, want := decodeIfBinaryToString(out.Bytes()), ""; got != want { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) From 06ec071bc1eddfbec464bcda042f2504b1126947 Mon Sep 17 00:00:00 2001 From: Scott Davis <123006247+sdavispluto@users.noreply.github.com> Date: Sat, 29 Jul 2023 07:32:05 -0700 Subject: [PATCH 07/51] Clarify the godoc warning for Logger.UpdateContext (#566) --- README.md | 18 ++++++++++++++++++ log.go | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3fc0dc4a..b83ae159 100644 --- a/README.md +++ b/README.md @@ -755,6 +755,8 @@ Log a static string, without any context or `printf`-style templating: ## Caveats +### Field duplication + Note that zerolog does no de-duplication of fields. Using the same key multiple times creates multiple keys in final JSON: ```go @@ -766,3 +768,19 @@ logger.Info(). ``` In this case, many consumers will take the last value, but this is not guaranteed; check yours if in doubt. + +### Concurrency safety + +Be careful when calling UpdateContext. It is not concurrency safe. Use the With method to create a child logger: + +```go +func handler(w http.ResponseWriter, r *http.Request) { + // Create a child logger for concurrency safety + logger := log.Logger.With().Logger() + + // Add context fields, for example User-Agent from HTTP headers + logger.UpdateContext(func(c zerolog.Context) zerolog.Context { + ... + }) +} +``` diff --git a/log.go b/log.go index 7c7c6a20..e7b5126e 100644 --- a/log.go +++ b/log.go @@ -84,6 +84,8 @@ // // # Caveats // +// Field duplication: +// // There is no fields deduplication out-of-the-box. // Using the same key multiple times creates new key in final JSON each time. // @@ -95,6 +97,20 @@ // // In this case, many consumers will take the last value, // but this is not guaranteed; check yours if in doubt. +// +// Concurrency safety: +// +// Be careful when calling UpdateContext. It is not concurrency safe. Use the With method to create a child logger: +// +// func handler(w http.ResponseWriter, r *http.Request) { +// // Create a child logger for concurrency safety +// logger := log.Logger.With().Logger() +// +// // Add context fields, for example User-Agent from HTTP headers +// logger.UpdateContext(func(c zerolog.Context) zerolog.Context { +// ... +// }) +// } package zerolog import ( @@ -276,7 +292,8 @@ func (l Logger) With() Context { // UpdateContext updates the internal logger's context. // -// Use this method with caution. If unsure, prefer the With method. +// Caution: This method is not concurrency safe. +// Use the With method to create a child logger before modifying the context from concurrent goroutines. func (l *Logger) UpdateContext(update func(c Context) Context) { if l == disabledLogger { return From 9c29f785f9ce5878e52be1bca5b1e4a4d08a89d8 Mon Sep 17 00:00:00 2001 From: Mitar Date: Wed, 2 Aug 2023 00:58:42 -0700 Subject: [PATCH 08/51] Make LevelWriterAdapter public (#572) --- context.go | 4 ++-- event_test.go | 6 +++--- log.go | 2 +- writer.go | 10 ++++++---- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/context.go b/context.go index 9d860e50..353c52f1 100644 --- a/context.go +++ b/context.go @@ -57,7 +57,7 @@ func (c Context) Array(key string, arr LogArrayMarshaler) Context { // Object marshals an object that implement the LogObjectMarshaler interface. func (c Context) Object(key string, obj LogObjectMarshaler) Context { - e := newEvent(levelWriterAdapter{ioutil.Discard}, 0) + e := newEvent(LevelWriterAdapter{ioutil.Discard}, 0) e.Object(key, obj) c.l.context = enc.AppendObjectData(c.l.context, e.buf) putEvent(e) @@ -66,7 +66,7 @@ func (c Context) Object(key string, obj LogObjectMarshaler) Context { // EmbedObject marshals and Embeds an object that implement the LogObjectMarshaler interface. func (c Context) EmbedObject(obj LogObjectMarshaler) Context { - e := newEvent(levelWriterAdapter{ioutil.Discard}, 0) + e := newEvent(LevelWriterAdapter{ioutil.Discard}, 0) e.EmbedObject(obj) c.l.context = enc.AppendObjectData(c.l.context, e.buf) putEvent(e) diff --git a/event_test.go b/event_test.go index 98041b34..e7cf4250 100644 --- a/event_test.go +++ b/event_test.go @@ -28,7 +28,7 @@ func TestEvent_AnErr(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { var buf bytes.Buffer - e := newEvent(levelWriterAdapter{&buf}, DebugLevel) + e := newEvent(LevelWriterAdapter{&buf}, DebugLevel) e.AnErr("err", tt.err) _ = e.write() if got, want := strings.TrimSpace(buf.String()), tt.want; got != want { @@ -40,7 +40,7 @@ func TestEvent_AnErr(t *testing.T) { func TestEvent_ObjectWithNil(t *testing.T) { var buf bytes.Buffer - e := newEvent(levelWriterAdapter{&buf}, DebugLevel) + e := newEvent(LevelWriterAdapter{&buf}, DebugLevel) _ = e.Object("obj", nil) _ = e.write() @@ -53,7 +53,7 @@ func TestEvent_ObjectWithNil(t *testing.T) { func TestEvent_EmbedObjectWithNil(t *testing.T) { var buf bytes.Buffer - e := newEvent(levelWriterAdapter{&buf}, DebugLevel) + e := newEvent(LevelWriterAdapter{&buf}, DebugLevel) _ = e.EmbedObject(nil) _ = e.write() diff --git a/log.go b/log.go index e7b5126e..834c7e60 100644 --- a/log.go +++ b/log.go @@ -250,7 +250,7 @@ func New(w io.Writer) Logger { } lw, ok := w.(LevelWriter) if !ok { - lw = levelWriterAdapter{w} + lw = LevelWriterAdapter{w} } return Logger{w: lw, level: TraceLevel} } diff --git a/writer.go b/writer.go index 26f5e632..d2f4f3b4 100644 --- a/writer.go +++ b/writer.go @@ -17,11 +17,13 @@ type LevelWriter interface { WriteLevel(level Level, p []byte) (n int, err error) } -type levelWriterAdapter struct { +// LevelWriterAdapter adapts an io.Writer to support the LevelWriter interface. +type LevelWriterAdapter struct { io.Writer } -func (lw levelWriterAdapter) WriteLevel(l Level, p []byte) (n int, err error) { +// WriteLevel simply writes everything to the adapted writer, ignoring the level. +func (lw LevelWriterAdapter) WriteLevel(l Level, p []byte) (n int, err error) { return lw.Write(p) } @@ -38,7 +40,7 @@ func SyncWriter(w io.Writer) io.Writer { if lw, ok := w.(LevelWriter); ok { return &syncWriter{lw: lw} } - return &syncWriter{lw: levelWriterAdapter{w}} + return &syncWriter{lw: LevelWriterAdapter{w}} } // Write implements the io.Writer interface. @@ -96,7 +98,7 @@ func MultiLevelWriter(writers ...io.Writer) LevelWriter { if lw, ok := w.(LevelWriter); ok { lwriters = append(lwriters, lw) } else { - lwriters = append(lwriters, levelWriterAdapter{w}) + lwriters = append(lwriters, LevelWriterAdapter{w}) } } return multiLevelWriter{lwriters} From 70ac648f5c482a2c2ac141448fcd3d37ef0723eb Mon Sep 17 00:00:00 2001 From: Mitar Date: Wed, 2 Aug 2023 01:24:51 -0700 Subject: [PATCH 09/51] FilteredLevelWriter writes only logs at Level or above (#573) --- writer.go | 26 ++++++++++++++++++++++++++ writer_test.go | 20 ++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/writer.go b/writer.go index d2f4f3b4..9b9ef88e 100644 --- a/writer.go +++ b/writer.go @@ -154,3 +154,29 @@ func ConsoleTestWriter(t TestingLog) func(w *ConsoleWriter) { w.Out = TestWriter{T: t, Frame: 6} } } + +// FilteredLevelWriter writes only logs at Level or above to Writer. +// +// It should be used only in combination with MultiLevelWriter when you +// want to write to multiple destinations at different levels. Otherwise +// you should just set the level on the logger and filter events early. +// When using MultiLevelWriter then you set the level on the logger to +// the lowest of the levels you use for writers. +type FilteredLevelWriter struct { + Writer LevelWriter + Level Level +} + +// Write writes to the underlying Writer. +func (w *FilteredLevelWriter) Write(p []byte) (int, error) { + return w.Writer.Write(p) +} + +// WriteLevel calls WriteLevel of the underlying Writer only if the level is equal +// or above the Level. +func (w *FilteredLevelWriter) WriteLevel(level Level, p []byte) (int, error) { + if level >= w.Level { + return w.Writer.WriteLevel(level, p) + } + return len(p), nil +} diff --git a/writer_test.go b/writer_test.go index 0c466b0e..60595ba6 100644 --- a/writer_test.go +++ b/writer_test.go @@ -175,3 +175,23 @@ func TestTestWriter(t *testing.T) { } } + +func TestFilteredLevelWriter(t *testing.T) { + buf := bytes.Buffer{} + writer := FilteredLevelWriter{ + Writer: LevelWriterAdapter{&buf}, + Level: InfoLevel, + } + _, err := writer.WriteLevel(DebugLevel, []byte("no")) + if err != nil { + t.Error(err) + } + _, err = writer.WriteLevel(InfoLevel, []byte("yes")) + if err != nil { + t.Error(err) + } + p := buf.Bytes() + if want := "yes"; !bytes.Equal([]byte(want), p) { + t.Errorf("Expected %q, got %q.", want, p) + } +} From 7d5aa987d03a59313ea3430130671766da85b8f7 Mon Sep 17 00:00:00 2001 From: Mitar Date: Wed, 2 Aug 2023 01:27:39 -0700 Subject: [PATCH 10/51] Deprecate lint in favor of https://github.com/ykadowak/zerologlint (#574) --- cmd/lint/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/lint/README.md b/cmd/lint/README.md index fbd3d2af..32b65760 100644 --- a/cmd/lint/README.md +++ b/cmd/lint/README.md @@ -1,5 +1,7 @@ # Zerolog Lint +**DEPRECATED: In favor of https://github.com/ykadowak/zerologlint which is integrated with `go vet` and [golangci-lint](https://golangci-lint.run/).** + This is a basic linter that checks for missing log event finishers. Finds errors like: `log.Error().Int64("userID": 5)` - missing the `Msg`/`Msgf` finishers. ## Problem From 158e4ad5c340016f054bd0dd17142adb518014c1 Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Mon, 14 Aug 2023 23:42:26 +0200 Subject: [PATCH 11/51] Update logbench URL in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b83ae159..2e48a6e1 100644 --- a/README.md +++ b/README.md @@ -694,7 +694,7 @@ with zerolog library is [CSD](https://github.com/toravir/csd/). ## Benchmarks -See [logbench](http://hackemist.com/logbench/) for more comprehensive and up-to-date benchmarks. +See [logbench](http://bench.zerolog.io/) for more comprehensive and up-to-date benchmarks. All operations are allocation free (those numbers *include* JSON encoding): From 802c88f065bc7019d079d03ef72e0899b2b3220e Mon Sep 17 00:00:00 2001 From: Manjunatha Shetty H Date: Fri, 18 Aug 2023 23:11:23 +0530 Subject: [PATCH 12/51] chore: adding any function to context (#580) * chore: adding any function to context * fixes --- context.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/context.go b/context.go index 353c52f1..fc62ad9c 100644 --- a/context.go +++ b/context.go @@ -379,6 +379,11 @@ func (c Context) Interface(key string, i interface{}) Context { return c } +// Any is a wrapper around Context.Interface. +func (c Context) Any(key string, i interface{}) Context { + return c.Interface(key, i) +} + type callerHook struct { callerSkipFrameCount int } From 95cf29c88c32a03634b38e647960f1dc0adaaba2 Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Fri, 18 Aug 2023 19:50:46 +0200 Subject: [PATCH 13/51] chore: switch to go-goverage-report action as gocover.io is closing --- .github/workflows/test.yml | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 816f1646..05f882a6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,4 +24,5 @@ jobs: run: go test -race -bench . -benchmem ./... - name: Test CBOR run: go test -tags binary_log ./... - + - name: Update coverage report + uses: ncruces/go-coverage-report@main diff --git a/README.md b/README.md index 2e48a6e1..f575a683 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Zero Allocation JSON Logger -[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/zerolog) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/zerolog/master/LICENSE) [![Build Status](https://travis-ci.org/rs/zerolog.svg?branch=master)](https://travis-ci.org/rs/zerolog) [![Coverage](http://gocover.io/_badge/github.com/rs/zerolog)](http://gocover.io/github.com/rs/zerolog) +[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/zerolog) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/zerolog/master/LICENSE) [![Build Status](https://travis-ci.org/rs/zerolog.svg?branch=master)](https://travis-ci.org/rs/zerolog) [![Go Coverage](https://github.com/rs/zerolog/wiki/coverage.svg)](https://raw.githack.com/wiki/rs/zerolog/coverage.html) The zerolog package provides a fast and simple logger dedicated to JSON output. From ad77222f682b40d1bb0c399d599c6f08cfdd99a6 Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Fri, 18 Aug 2023 20:03:26 +0200 Subject: [PATCH 14/51] chore: improve coverage report --- .github/workflows/test.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 05f882a6..a289a263 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,7 +4,7 @@ jobs: test: strategy: matrix: - go-version: [1.18.x, 1.19.x] + go-version: [1.18.x, 1.21.x] os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: @@ -24,5 +24,13 @@ jobs: run: go test -race -bench . -benchmem ./... - name: Test CBOR run: go test -tags binary_log ./... + coverage: + runs-on: ubuntu-latest + steps: - name: Update coverage report uses: ncruces/go-coverage-report@main + with: + report: 'true' + chart: 'true' + amend: 'true' + continue-on-error: true From b81cc57e5df0a1499c3f1521d3134466cb96f0ca Mon Sep 17 00:00:00 2001 From: Mitar Date: Sun, 20 Aug 2023 06:04:54 -0700 Subject: [PATCH 15/51] Fix the standard logger output example (#584) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f575a683..ad7a7230 100644 --- a/README.md +++ b/README.md @@ -499,7 +499,7 @@ log.Ctx(ctx).Info().Msg("hello world") ### Set as standard logger output ```go -stdlog := zerolog.New(os.Stdout).With(). +log := zerolog.New(os.Stdout).With(). Str("foo", "bar"). Logger() From 1bac5cca5027d91b560cbb911f924eb355628c56 Mon Sep 17 00:00:00 2001 From: Lasse Gaardsholt Date: Tue, 5 Sep 2023 11:18:05 +0200 Subject: [PATCH 16/51] added support for NO_COLOR (#586) * added support for NO_COLOR Signed-off-by: Lasse Gaardsholt * added unit test for `NO_COLOR` Signed-off-by: Lasse Gaardsholt * NO_COLOR can now be set to anything Signed-off-by: Lasse Gaardsholt --------- Signed-off-by: Lasse Gaardsholt --- console.go | 5 +++++ console_test.go | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/console.go b/console.go index 8b0e0c61..28279885 100644 --- a/console.go +++ b/console.go @@ -312,6 +312,11 @@ func needsQuote(s string) bool { // colorize returns the string s wrapped in ANSI code c, unless disabled is true. func colorize(s interface{}, c int, disabled bool) string { + e := os.Getenv("NO_COLOR") + if e != "" { + disabled = true + } + if disabled { return fmt.Sprintf("%s", s) } diff --git a/console_test.go b/console_test.go index 18c2db70..0265672d 100644 --- a/console_test.go +++ b/console_test.go @@ -104,6 +104,25 @@ func TestConsoleWriter(t *testing.T) { } }) + t.Run("NO_COLOR = true", func(t *testing.T) { + os.Setenv("NO_COLOR", "anything") + + buf := &bytes.Buffer{} + w := zerolog.ConsoleWriter{Out: buf} + + _, err := w.Write([]byte(`{"level": "warn", "message": "Foobar"}`)) + if err != nil { + t.Errorf("Unexpected error when writing output: %s", err) + } + + expectedOutput := " WRN Foobar\n" + actualOutput := buf.String() + if actualOutput != expectedOutput { + t.Errorf("Unexpected output %q, want: %q", actualOutput, expectedOutput) + } + os.Unsetenv("NO_COLOR") + }) + t.Run("Write fields", func(t *testing.T) { buf := &bytes.Buffer{} w := zerolog.ConsoleWriter{Out: buf, NoColor: true} From ae9b26513771d01720d0e82fb236cfc1e3c48875 Mon Sep 17 00:00:00 2001 From: Subhrodip Mohanta Date: Fri, 22 Sep 2023 16:16:02 +0200 Subject: [PATCH 17/51] Update Build Status Badge (#589) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad7a7230..972b729f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Zero Allocation JSON Logger -[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/zerolog) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/zerolog/master/LICENSE) [![Build Status](https://travis-ci.org/rs/zerolog.svg?branch=master)](https://travis-ci.org/rs/zerolog) [![Go Coverage](https://github.com/rs/zerolog/wiki/coverage.svg)](https://raw.githack.com/wiki/rs/zerolog/coverage.html) +[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/zerolog) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/zerolog/master/LICENSE) [![Build Status](https://github.com/rs/zerolog/actions/workflows/test.yml/badge.svg)](https://github.com/rs/zerolog/actions/workflows/test.yml) [![Go Coverage](https://github.com/rs/zerolog/wiki/coverage.svg)](https://raw.githack.com/wiki/rs/zerolog/coverage.html) The zerolog package provides a fast and simple logger dedicated to JSON output. From 4cb8cc56224bccb6315ce117271c023a6facca0a Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Mon, 25 Sep 2023 11:27:19 +0200 Subject: [PATCH 18/51] Update dependencies --- go.mod | 4 +++- go.sum | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 6ec5abcc..4385ff97 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,9 @@ go 1.15 require ( github.com/coreos/go-systemd/v22 v22.5.0 - github.com/mattn/go-colorable v0.1.12 + github.com/mattn/go-colorable v0.1.13 + github.com/mattn/go-isatty v0.0.19 // indirect github.com/pkg/errors v0.9.1 github.com/rs/xid v1.5.0 + golang.org/x/sys v0.12.0 // indirect ) diff --git a/go.sum b/go.sum index 50b6327d..f2b8d847 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,13 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= @@ -12,3 +17,7 @@ github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 h1:foEbQz/B0Oz6YIqu/69kfXPYeFQAuuMYFkjaqXzl5Wo= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 8344fc0c93cd5d8fe3d46c4a713abe4136b8cd5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:28:20 +0200 Subject: [PATCH 19/51] Bump actions/checkout from 3 to 4 (#588) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a289a263..93c07565 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: with: go-version: ${{ matrix.go-version }} - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/cache@v3 with: path: ~/go/pkg/mod From 9e34cb475c21b8dcd3a59b551b69cd8586adc9e2 Mon Sep 17 00:00:00 2001 From: Clint Armstrong Date: Tue, 3 Oct 2023 18:33:11 -0400 Subject: [PATCH 20/51] Add Type function to context (#592) --- context.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/context.go b/context.go index fc62ad9c..9efbdc67 100644 --- a/context.go +++ b/context.go @@ -379,6 +379,12 @@ func (c Context) Interface(key string, i interface{}) Context { return c } +// Type adds the field key with val's type using reflection. +func (c Context) Type(key string, val interface{}) Context { + c.l.context = enc.AppendType(enc.AppendKey(c.l.context, key), val) + return c +} + // Any is a wrapper around Context.Interface. func (c Context) Any(key string, i interface{}) Context { return c.Interface(key, i) From ed609e7fe65403d60002a9ad60ff738c3b4666f3 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 4 Oct 2023 17:54:14 +0200 Subject: [PATCH 21/51] feat: display error stack when using `.Fields()` (#560) --- context.go | 2 +- event.go | 2 +- fields.go | 23 +++++++++++++++++++---- pkgerrors/stacktrace_test.go | 18 +++++++++++++++++- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/context.go b/context.go index 9efbdc67..ff48b1fe 100644 --- a/context.go +++ b/context.go @@ -23,7 +23,7 @@ func (c Context) Logger() Logger { // Only map[string]interface{} and []interface{} are accepted. []interface{} must // alternate string keys and arbitrary values, and extraneous ones are ignored. func (c Context) Fields(fields interface{}) Context { - c.l.context = appendFields(c.l.context, fields) + c.l.context = appendFields(c.l.context, fields, c.l.stack) return c } diff --git a/event.go b/event.go index 2a5d3b08..5c949f8a 100644 --- a/event.go +++ b/event.go @@ -164,7 +164,7 @@ func (e *Event) Fields(fields interface{}) *Event { if e == nil { return e } - e.buf = appendFields(e.buf, fields) + e.buf = appendFields(e.buf, fields, e.stack) return e } diff --git a/fields.go b/fields.go index c1eb5ce7..23606ddd 100644 --- a/fields.go +++ b/fields.go @@ -12,13 +12,13 @@ func isNilValue(i interface{}) bool { return (*[2]uintptr)(unsafe.Pointer(&i))[1] == 0 } -func appendFields(dst []byte, fields interface{}) []byte { +func appendFields(dst []byte, fields interface{}, stack bool) []byte { switch fields := fields.(type) { case []interface{}: if n := len(fields); n&0x1 == 1 { // odd number fields = fields[:n-1] } - dst = appendFieldList(dst, fields) + dst = appendFieldList(dst, fields, stack) case map[string]interface{}: keys := make([]string, 0, len(fields)) for key := range fields { @@ -28,13 +28,13 @@ func appendFields(dst []byte, fields interface{}) []byte { kv := make([]interface{}, 2) for _, key := range keys { kv[0], kv[1] = key, fields[key] - dst = appendFieldList(dst, kv) + dst = appendFieldList(dst, kv, stack) } } return dst } -func appendFieldList(dst []byte, kvList []interface{}) []byte { +func appendFieldList(dst []byte, kvList []interface{}, stack bool) []byte { for i, n := 0, len(kvList); i < n; i += 2 { key, val := kvList[i], kvList[i+1] if key, ok := key.(string); ok { @@ -74,6 +74,21 @@ func appendFieldList(dst []byte, kvList []interface{}) []byte { default: dst = enc.AppendInterface(dst, m) } + + if stack && ErrorStackMarshaler != nil { + dst = enc.AppendKey(dst, ErrorStackFieldName) + switch m := ErrorStackMarshaler(val).(type) { + case nil: + case error: + if m != nil && !isNilValue(m) { + dst = enc.AppendString(dst, m.Error()) + } + case string: + dst = enc.AppendString(dst, m) + default: + dst = enc.AppendInterface(dst, m) + } + } case []error: dst = enc.AppendArrayStart(dst) for i, err := range val { diff --git a/pkgerrors/stacktrace_test.go b/pkgerrors/stacktrace_test.go index 5a138323..a09b986f 100644 --- a/pkgerrors/stacktrace_test.go +++ b/pkgerrors/stacktrace_test.go @@ -28,6 +28,22 @@ func TestLogStack(t *testing.T) { } } +func TestLogStackFields(t *testing.T) { + zerolog.ErrorStackMarshaler = MarshalStack + + out := &bytes.Buffer{} + log := zerolog.New(out) + + err := fmt.Errorf("from error: %w", errors.New("error message")) + log.Log().Stack().Fields([]interface{}{"error", err}).Msg("") + + got := out.String() + want := `\{"error":"from error: error message","stack":\[\{"func":"TestLogStackFields","line":"37","source":"stacktrace_test.go"\},.*\]\}\n` + if ok, _ := regexp.MatchString(want, got); !ok { + t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) + } +} + func TestLogStackFromContext(t *testing.T) { zerolog.ErrorStackMarshaler = MarshalStack @@ -38,7 +54,7 @@ func TestLogStackFromContext(t *testing.T) { log.Log().Err(err).Msg("") // not explicitly calling Stack() got := out.String() - want := `\{"stack":\[\{"func":"TestLogStackFromContext","line":"37","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` + want := `\{"stack":\[\{"func":"TestLogStackFromContext","line":"53","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` if ok, _ := regexp.MatchString(want, got); !ok { t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) } From 11f895c15ed4cd720f06fa7d979d161181583ce4 Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 13 Oct 2023 01:32:42 -0700 Subject: [PATCH 22/51] Add FormatPrepare to ConsoleWriter. (#595) --- console.go | 9 +++++++++ console_test.go | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/console.go b/console.go index 28279885..02104f40 100644 --- a/console.go +++ b/console.go @@ -76,6 +76,8 @@ type ConsoleWriter struct { FormatErrFieldValue Formatter FormatExtra func(map[string]interface{}, *bytes.Buffer) error + + FormatPrepare func(map[string]interface{}) error } // NewConsoleWriter creates and initializes a new ConsoleWriter. @@ -124,6 +126,13 @@ func (w ConsoleWriter) Write(p []byte) (n int, err error) { return n, fmt.Errorf("cannot decode event: %s", err) } + if w.FormatPrepare != nil { + err = w.FormatPrepare(evt) + if err != nil { + return n, err + } + } + for _, p := range w.PartsOrder { w.writePart(buf, evt, p) } diff --git a/console_test.go b/console_test.go index 0265672d..bdb70a0e 100644 --- a/console_test.go +++ b/console_test.go @@ -418,6 +418,29 @@ func TestConsoleWriterConfiguration(t *testing.T) { } }) + t.Run("Sets FormatPrepare", func(t *testing.T) { + buf := &bytes.Buffer{} + w := zerolog.ConsoleWriter{ + Out: buf, NoColor: true, PartsOrder: []string{"level", "message"}, + FormatPrepare: func(evt map[string]interface{}) error { + evt["message"] = fmt.Sprintf("msg=%s", evt["message"]) + return nil + }, + } + + evt := `{"level": "info", "message": "Foobar"}` + _, err := w.Write([]byte(evt)) + if err != nil { + t.Errorf("Unexpected error when writing output: %s", err) + } + + expectedOutput := "INF msg=Foobar\n" + actualOutput := buf.String() + if actualOutput != expectedOutput { + t.Errorf("Unexpected output %q, want: %q", actualOutput, expectedOutput) + } + }) + t.Run("Uses local time for console writer without time zone", func(t *testing.T) { // Regression test for issue #483 (check there for more details) From 6e8841b038192f6cda1bf2652418cabc8928289c Mon Sep 17 00:00:00 2001 From: Olivier Poitrey Date: Fri, 13 Oct 2023 13:54:09 +0200 Subject: [PATCH 23/51] prettylog: add support for file input --- cmd/prettylog/prettylog.go | 40 ++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/cmd/prettylog/prettylog.go b/cmd/prettylog/prettylog.go index 61bf8b87..9b8b43c6 100644 --- a/cmd/prettylog/prettylog.go +++ b/cmd/prettylog/prettylog.go @@ -1,6 +1,8 @@ package main import ( + "bufio" + "errors" "fmt" "io" "os" @@ -14,13 +16,39 @@ func isInputFromPipe() bool { } func main() { - if !isInputFromPipe() { - fmt.Println("The command is intended to work with pipes.") - fmt.Println("Usage: app_with_zerolog | 2> >(prettylog)") + writer := zerolog.NewConsoleWriter() + + if isInputFromPipe() { + _, _ = io.Copy(writer, os.Stdin) + } else if len(os.Args) > 1 { + for _, filename := range os.Args[1:] { + // Scan each line from filename and write it into writer + r, err := os.Open(filename) + if err != nil { + fmt.Printf("%s open: %v", filename, err) + os.Exit(1) + } + scanner := bufio.NewScanner(r) + for scanner.Scan() { + _, err = writer.Write(scanner.Bytes()) + if err != nil { + if errors.Is(err, io.EOF) { + break + } + fmt.Printf("%s write: %v", filename, err) + os.Exit(1) + } + } + if err := scanner.Err(); err != nil { + fmt.Printf("%s scan: %v", filename, err) + os.Exit(1) + } + } + } else { + fmt.Println("Usage:") + fmt.Println(" app_with_zerolog | 2> >(prettylog)") + fmt.Println(" prettylog zerolog_output.jsonl") os.Exit(1) return } - - writer := zerolog.NewConsoleWriter() - _, _ = io.Copy(writer, os.Stdin) } From f70fcca1aba64863420b5f735f70d1f4bf863b5e Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 13 Oct 2023 04:55:44 -0700 Subject: [PATCH 24/51] Update example image to how it is currently rendered. (#596) --- example.jsonl | 7 +++++++ pretty.png | Bin 84064 -> 111497 bytes 2 files changed, 7 insertions(+) create mode 100644 example.jsonl diff --git a/example.jsonl b/example.jsonl new file mode 100644 index 00000000..d73193d7 --- /dev/null +++ b/example.jsonl @@ -0,0 +1,7 @@ +{"time":"5:41PM","level":"info","message":"Starting listener","listen":":8080","pid":37556} +{"time":"5:41PM","level":"debug","message":"Access","database":"myapp","host":"localhost:4962","pid":37556} +{"time":"5:41PM","level":"info","message":"Access","method":"GET","path":"/users","pid":37556,"resp_time":23} +{"time":"5:41PM","level":"info","message":"Access","method":"POST","path":"/posts","pid":37556,"resp_time":532} +{"time":"5:41PM","level":"warn","message":"Slow request","method":"POST","path":"/posts","pid":37556,"resp_time":532} +{"time":"5:41PM","level":"info","message":"Access","method":"GET","path":"/users","pid":37556,"resp_time":10} +{"time":"5:41PM","level":"error","message":"Database connection lost","database":"myapp","pid":37556,"error":"connection reset by peer"} diff --git a/pretty.png b/pretty.png index 242033686debf04c5b1756c166d05d09767594e3..2b75cac66508a93e1dc927b1e4f066460171fbe9 100644 GIT binary patch literal 111497 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 ^@B8ZX#04A=zjjcT$@u|e+ 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 literal 84064 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

8fq~0=I!v4AnE;d}cbadUlY^=u7 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 From f115bfade51ea02bfa74b4a4bd1350f92fa20fe5 Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 13 Oct 2023 14:38:04 -0700 Subject: [PATCH 25/51] Make console output more readable. (#597) --- console.go | 35 +++++++++++++++++++++-------------- console_test.go | 4 ++-- globals.go | 12 ++++++++++++ pretty.png | Bin 111497 -> 118839 bytes 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/console.go b/console.go index 02104f40..917d7492 100644 --- a/console.go +++ b/console.go @@ -281,7 +281,7 @@ func (w ConsoleWriter) writePart(buf *bytes.Buffer, evt map[string]interface{}, } case MessageFieldName: if w.FormatMessage == nil { - f = consoleDefaultFormatMessage + f = consoleDefaultFormatMessage(w.NoColor, evt[LevelFieldName]) } else { f = w.FormatMessage } @@ -389,21 +389,21 @@ func consoleDefaultFormatLevel(noColor bool) Formatter { if ll, ok := i.(string); ok { switch ll { case LevelTraceValue: - l = colorize("TRC", colorMagenta, noColor) + l = colorize("TRC", LevelColors["TRC"], noColor) case LevelDebugValue: - l = colorize("DBG", colorYellow, noColor) + l = colorize("DBG", LevelColors["DBG"], noColor) case LevelInfoValue: - l = colorize("INF", colorGreen, noColor) + l = colorize("INF", LevelColors["INF"], noColor) case LevelWarnValue: - l = colorize("WRN", colorRed, noColor) + l = colorize("WRN", LevelColors["WRN"], noColor) case LevelErrorValue: - l = colorize(colorize("ERR", colorRed, noColor), colorBold, noColor) + l = colorize("ERR", LevelColors["ERR"], noColor) case LevelFatalValue: - l = colorize(colorize("FTL", colorRed, noColor), colorBold, noColor) + l = colorize("FTL", LevelColors["FTL"], noColor) case LevelPanicValue: - l = colorize(colorize("PNC", colorRed, noColor), colorBold, noColor) + l = colorize("PNC", LevelColors["PNC"], noColor) default: - l = colorize(ll, colorBold, noColor) + l = strings.ToUpper(ll)[0:3] } } else { if i == nil { @@ -434,11 +434,18 @@ func consoleDefaultFormatCaller(noColor bool) Formatter { } } -func consoleDefaultFormatMessage(i interface{}) string { - if i == nil { - return "" +func consoleDefaultFormatMessage(noColor bool, level interface{}) Formatter { + return func(i interface{}) string { + if i == nil || i == "" { + return "" + } + switch level { + case LevelInfoValue, LevelWarnValue, LevelErrorValue, LevelFatalValue, LevelPanicValue: + return colorize(fmt.Sprintf("%s", i), colorBold, noColor) + default: + return fmt.Sprintf("%s", i) + } } - return fmt.Sprintf("%s", i) } func consoleDefaultFormatFieldName(noColor bool) Formatter { @@ -459,6 +466,6 @@ func consoleDefaultFormatErrFieldName(noColor bool) Formatter { func consoleDefaultFormatErrFieldValue(noColor bool) Formatter { return func(i interface{}) string { - return colorize(fmt.Sprintf("%s", i), colorRed, noColor) + return colorize(colorize(fmt.Sprintf("%s", i), colorBold, noColor), colorRed, noColor) } } diff --git a/console_test.go b/console_test.go index bdb70a0e..c3dbdb3f 100644 --- a/console_test.go +++ b/console_test.go @@ -97,7 +97,7 @@ func TestConsoleWriter(t *testing.T) { t.Errorf("Unexpected error when writing output: %s", err) } - expectedOutput := "\x1b[90m\x1b[0m \x1b[31mWRN\x1b[0m Foobar\n" + expectedOutput := "\x1b[90m\x1b[0m \x1b[33mWRN\x1b[0m \x1b[1mFoobar\x1b[0m\n" actualOutput := buf.String() if actualOutput != expectedOutput { t.Errorf("Unexpected output %q, want: %q", actualOutput, expectedOutput) @@ -248,7 +248,7 @@ func TestConsoleWriter(t *testing.T) { t.Errorf("Unexpected error when writing output: %s", err) } - expectedOutput := "\x1b[90m\x1b[0m \x1b[31mWRN\x1b[0m Foobar \x1b[36mfoo=\x1b[0mbar\n" + expectedOutput := "\x1b[90m\x1b[0m \x1b[33mWRN\x1b[0m \x1b[1mFoobar\x1b[0m \x1b[36mfoo=\x1b[0mbar\n" actualOutput := buf.String() if actualOutput != expectedOutput { t.Errorf("Unexpected output %q, want: %q", actualOutput, expectedOutput) diff --git a/globals.go b/globals.go index e1067deb..7e5ca25f 100644 --- a/globals.go +++ b/globals.go @@ -108,6 +108,18 @@ var ( // DefaultContextLogger is returned from Ctx() if there is no logger associated // with the context. DefaultContextLogger *Logger + + // LevelColors are used by ConsoleWriter's consoleDefaultFormatLevel to color + // log levels. + LevelColors = map[string]int{ + "TRC": colorBlue, + "DBG": 0, + "INF": colorGreen, + "WRN": colorYellow, + "ERR": colorRed, + "FTL": colorRed, + "PNC": colorRed, + } ) var ( diff --git a/pretty.png b/pretty.png index 2b75cac66508a93e1dc927b1e4f066460171fbe9..1449e45d142c74d023eccd28c7f9e03b0af2d2b9 100644 GIT binary patch literal 118839 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

0hOT$`donwI~(&Fqvi(oj|qzVR4* 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]V;ZJ?Jx7eS(*KURO{y5^Zh7CMY>g9 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 ^@B8ZX#04A=zjjcT$@u|e+ z@zof_$#j(_Ts+~1qR7Q|87sdi;M}zg*_-1R7&XdrIK_(pek|zM?CW5* z*B|N8;Sm5jjdOb(e=L9YZO%KsPIs*!DC>nTK6Lo>{CZM#IO{Zk&e^Fa(hCi95v)1) zn+;M&H3ar+_%b?y1d4j+V$t)((JJgYJM)lUOjM5L)nRnU!G5OI+NiXl{kJPxW3?nj zUEGK!=q(5&lAX*Jud5*L{9yZ=k4LX3MwF)AxzvMg8=}p^l`h zLjaDLqWU1v>$NAFz8Oqsw)~TDZ>k`hOm{RpymUWH?8^Dd-3fe2P@18v4-zq+U-GGX zP-rwm_3UWc*1Y=r-Nlmg8$f>PZvS#b=!!Z;bE0>3+joR7-mg+<^d>b74>C~!gVp=Q z={zi`xYD-19{si3`~`ee`6&ok7Pt&FFgfRM{6%)+{PCBLkMY-o2@wbvkL90V_=4PG zO|Q@tZ_EXiNGPi29TesV#C@LU-oEwBpY$4AeWg6!>2xg$=!Fv_ky9*gxOD_@SNl4t!8YMg<0`jmAUeRj!>m z<4vfVxBEiFm>Xn?b-;hliAIbRon#GMYy z|GX6`Z=x#E)kd-xdH7p=0pZN=S6bb_ov!7(t-tmRL=oYgoEkBBcTrQQWW7)QtT#Kd zBaf4hO^mi@j5B}65|VOI+bxbWEWmhDeD#fU01)L$Jp@ZDmst04ZhDZz9a_=AhBK@0 zNiig%#$Daidz0P|Z`O-md_EC2@XV5Dgzg%2#l+)r@HRs;9IeI{vsv^H}nk*F(@KuiQz^l0Xj4iJlPGbYMOFc@fU;CH3 zf9E}##4D^(m5Pg7((v-KK0m7wLW#z&i9ZpkSAA2i@?b?Eqy$84*3&sbm87>`^%UZ| zx;UsnYx)y7Xtw?Lg?Z^Ep&e&u)F}se^)d-H_D5`$#i+hl%OhVMlhZM=gM-pGQ0=s{ z0~JzHQPntj9B18*QDV-RWhQ=X&C#(Qf>T z`1u6nRfhsY#z^?4$7jCsy&hzf_`LFUe-giknLXL#IbS;heRic^!Gs!L<8)SY5Qa^$ zPJ@Z)3*FBTp6$(B!Iew^J<|tjz+XbjNtteUwh;~)Y2X%gviVlOBNR;}zcZ_~gh@gaZNj!f0~$ny`uDg&9inyjheWiJi;+9Z zTq{?GiJdL>2LUV~^Fg!aMop)*GOG>OaAlBBB^}H2`AbrT3cUFuJ^e#eFmY^vDlfh% zs@_`WWb@x>v?q$uYD$=v(!z?m^n9@&fM~We9Yg-oS6ymcN}&51)*rW^FtN3TP^+c+ zcqdHFtZ4TN5PFm3YQ+ACPeGWrO_i{Z*<}vK78vdqMnj9H5`!Jm_z#vM!6N!xJ%%(A z*vmPoBafd930w{aAU>^+=LgXxo-BvMiE16iR6SZc+8mgFgh`7zvtQ418JD15BxH7$ z`oaTj+?K1lEN^54;ei{hPH!LbCw83=l5(|m@*bGRALkt>?$5M53Uk_h-!Hp#OJG1j zi+G*SA9o-1V@FIp-x`kJq{`VIEHA58L-H!$-Oi$W2ro6DN=k|Xn1S9;IS~jlPr`V$ z$H5hZfLJBTR{U|24V)iy#to8`OymsD*LHf9Pc{Vcf1HSAW5Os1Q1Zcl*{&xGI$T1e*CYTr|RI z_vcbgEyYa!B6Dd~9$|A?f68eO;>Pek-oHHzEPjn2{O|o{$@a8?DLbAi4+e9H{hHA- zwmaV0D&a7LB3`(ENKVW^9J4ozf}6rC=;JZw2^n0P7XJfHFOL{Of09E_uQmHrD%*bi zG}|Yu$=Zjj>4#M!ItYl)){BUMxbsJ67rT~_{l9Shb>aia6FFZo8I7PwL)I*(tXQ1c z$~i>QUzEEQuQtSXWro+i*)=EFs6kD3RB9d+x@#m2*UM|$mgDKX&T4MKVeC$RN128p zBJJnx`vxz!8rsCkL6dr?yN4DIRwi9XauHXYI9strkpK`+AVZdK1x?M$Qt5wQ+`BL{ zdh+VTXS=(dZ}Juc?$4bi12#r#j;>E<_u<#G(Arf^7(+mz zB`Y~Ks{E!@Bk#AC5!?(Wy>7@BmZ!ob{h6gI1s<#BZ8+B;f-Os987ulY<7}wFLHC5g zU^@TWdl>o_ZTf}faD;_4dvxEooL9MkxOKYs^q-0n`A zR~EK)#tONwSu0wS6)mQ@zuX6DUt6NPBvHh@q*VDTgp;-2cv~^5QnaYhO944COBXi> zF^Zbmz)PRy`uKwfWS9bP!K_OV+MV#<<2mI9E;nU{spQ>a$^GKKKEWIGtGYx= zCQUb&Fn+A*B`ckUg~e%|NYQMpcd4_fx(%2qrRwhW78q&D-_HAb$_`^3Y9A6E8-a3t`t9wFwPOn;}IPUyQ%+S9+$ z6RfBAI=hh3DUk%@FEjgesEOasTU^yJSbdyvyNo;#bAL0uI*3Hi$VdkZP}E3#2V~AV znu-Xhg^uZdEM50B;*$Eu$@IR_RC?C(SLD*@(Q|cs6c?m9%|#f=`iU_LYk* zB>KBS(+PXD(t0w{&0md<=MInWygBEiu z?aHaxKi3`hgO(dV>9##B*EIebbQ#||Odoho>1twl7ca-?mbQnY`qR2|u8{I58QhVI z`J3`{P-0L24IU{d7w#XX_MyzRs@}YLE2x}TwH_8A;It{%P)ftrX)CP*5u5&ZFF+Jq zY;DkB0s6{H3~sTM7tViJGYUWcJ&lQXaFFOZ2 zKRpfqrJ|mCL3~vt67)zdh63Dv_RjS;|AK`MI!`Sa!=<-x+re$U@ypO&6H_$OdNdT} zF>HA&Lek#3@%{4C!!PnDI;uCO({gIt%QLr)Gsp0CO~r8JoDW(o`+ zPXojMY8@wmAY07Rw+)58NQ zvFQUYiUz0Rs>%%sTI9B?Q8>9}G^4OwnMAQ=VGl23V94MWRP1laj&c%OlR>}B=mHBg zkk@v(-=S40>0#&RwYdHu1Ykc2bB_`=sWVWQI8eP4*}eB`x&{0dgxYNha{g^(u(s(- zQBF_I8e7)k^hezdLDb>iRWjSn!KMIW1;Av-D_x;M(LS^S&=+u<($VWIwm&c6=w(}+ z8FOV<9W}^B0nsz~SO1BK4p;Wp{wDSQm$!r>2x;hWi=hvVKr#O06`;+QG$7o|teot5 z@PglY=zAkfMqw)KUB4dBX{pWEp znP`l33nCPzuzB=V-W1UBL^4niF>0=U$}k0gUS!T#E1>|Kxet zXo9QpnPk5h`_tu5GLqVGP=HFSTjM~+%V}%IFRE+L0=0rm1fB~BL4Kw0LKWTFkv}Zr zXd7FdUiJL>qv3emoZ3x*LaaGebd|2a^REQ`O{G^M?GC5o^y5Wa(A;l2bN`p$Kg4y+J zs*|vEOVsR&)+x@y}!{U6jHzHLOD@}mgWj5Y5Ee+?YgCC`)@yW?Qr~M z*k?7t2__8TYaRP9Eswb(m8si`%M%(^?30aUGsURT31{u(DxqJ&rZHf6TO4ZDPlh=t zG@kg#&hf6%*`paB)|v`T*80+@#0zD*`Gr;5^4OkUk+0I)S8Z41a}Z3#;n{I0`}Cf4pLv1BSEB)7d#BQZqKRr9 z&hb3xBVv=6)fbM+b3->DNNda|VQC@A_}_Uce&V+z;L||E@7Xn=$)KZdsHfvZgy4#b z-QwnA0S;~0|9<}lil;1GZsjff;b#VMU!C`|j*$m%O;>JBGXl`gKxu?WffCR=f|+CT z^Dm2CJyC5jHj^+MTNJz)U8u3ZBEzPqO52)hY!oYJZ@z4H6!V6XWD_mWSJp0siV0+U zaWb`JHHV$uEk-P&2&<*kxYQfxSYrz&J2B?@gB!Y_dC6Gmdy{A6Xf99Ax}gEXuTOI? zMtX1Q-e440J-Ph*Z+KH{1?zSxS^x32)a=IKby- zD!&3TH*tR_0UMJyO;c4hZfj;nj1-qZ_dnD|&N%Z-TRl7CfO~1+yaw-IMfP}8qu`wk zHPc(LPxIVy;Un!NMOTh1&PjELgak<>D;0OHw#3E79D>${P9h2A z6Q}RbI$E1@r_6V4d=^8kFGS8as3wocax@tRJP$V)1~ zZu(;9XNBzdHSny>FDwf%iSr|`gbd5e%rYYf6kJ9khR4te0Y*F1IKo5`B{gx&v4^a` z*_;cCt*B~jp8eafDW2P#(AFWEc7v(%g|GnO9SN2ioiEj~U|tm}RP5goOR;a6KQ*6l z>787}6Q7WZsJSmVl4u(Z#IUi;bP_aqXIfN8Yr2R2V8Q^|*~^p6ScG7b1@SPTc}A7) zy#6^3CSF&2=8vE+T#Flj^}oHpLp}Ap>&9%YJx(1g3Qrq&p;1d$;P~= zC`G5BW2#lea5gWqaeijwLkJHeBvf~dD9b<8CSaP2EIbncGTU1ph=Kz;__!NhYs5UH zEU+-}Qd};s*d&^Wi9f4JW$Ylzj*X#Vewz{Uw|H+nrln->SrqM$S!3;H302T|N-2Ii z3xl9)IniXQwZAXo={sN05Xap?w&|Mwb!2~k=L!~JSFDVN9-MU5vx?n{?S#mC&n_qS zIR%TM=GdwG9EyR@VtkAP7)M%1Ur%m*wmW}M`O1G4BUV}Yd@a*3!RfwT8fMu z0Fc9L(?eb9Bym&g?K_9CCm~WxkvD@acG8ehkf4ItYHQ#VmKItE3(CFcjQX(yYsmyp z%Fc{T1o4(q9qKK0yr#I$z=t5gy_O%Cn5W0O*~G7VaT$-kB+1yxy;$54V^23=?99r# zFzp2wBSScNay=8h25rxRjn2+!{K)q<-^a2%Jsvfs{eJPlMJj`yu2d}u{8@!+!0rv4 z#c#DBzKUB>HViqSA|bY|v+Vh^@@g@VfCk>24d?KR2}_=R9J~W%=`}B6pih>pJ?)B_bX|W zJ;gR*hF;Tp*~Aow?ZVFxaV>nM2o>48BO!qjt)-}9L1ZhP^RCf5JvLT8CHodkgUSk3a(A!4K{e z<1w_i^}N_fK~9O%>#`1&A{U)lr#xuYOtb>2Z>ZpTvNBcn1d=HD=E5Oa!HPC_y{Lqz zfaVlGUutZNcYni%01q^0B-CGN%qO#a>(LCY^8l!?z1-$ISc`6}OVq93+6^a`%b53U zT+IyZC>aAWfv%DPz*et9CrWKFXVb=4ieVE9pveBXkhethX91pY?vpu5ZzOsbUVLjZ z?$^VpF)Tn-mXr%ubNmxbG(dhqG|WdlBUAbHR~&xwAX)3jxA4tZMuAm*BInl?l;)%} zyZX8^SiO4>$Eh!Y2mnYV#U1QJ9j~+>oyOm{Rnh>zMt+}*kXY%O8Wc@h>=dt$xfw&r zJoNR@U6-wH%e>~^E}PuK#(vE1BgR8W+iIiJoZLb?f0D<-^m#r%MxU3N4)ADr9gqGl zWin!YDt9(KnjSUA4g}0_uGlHq=vIjYK=x@d0qVY=YeonH6f0S1CL1UGJ*_G89a$($ zo@475*T)88uwCXSke4qoe^mQ(y?Fm4846Nt?qVVy>p#59Zr)GMf1`vv#1BJF6D{jiY`HH%tet7bJ#VN6v0MCkvCz4Z@o(EJ z4Jl?0wyuC1SpEL%yS@iF$wDGwB}_&hHV*d02!^N10?KU*EvjqBAWG$iGZO4@Nr1*~ zb(Xu%&0*PB4iC?(-rHs|04cs)LlC_9r6bp`QrJYrr;MtTC-lw;G;t z(TUm%UJtI^A|eycbB1o|_(Lmgz7yRY({=v+v_~)3O`BnX63S(x*esQ(LX<<<2))`Fq}ZrGG{vM&v(e9E;s;iD8~V5b3j6 zIOqKh`GT^#`p+Ev^Ip^KJW;cx*~*5hG`lMkfvY)4OX`doyB!#{tBHbwObb4igI&!f z24}MgPm%L)ViO1HisHLfCb46QD0J~p%%BLMrhZ1?--jeU?1nl`ZEIs-A)ci0g8CdC z3v%99Bfh<+0;;pc(;!IiA=6o-#z);B?K4FCd&f^1IqV@ucwy*p3Y8^tXRJ==@Yfyj z3nsW!t(4VuGJIp_Lc$PFQ!?+ZMpj=B`+0Bt++OFis(l1~zMF}M!5i$@(iND{807k7 zN+2(M;o>1WA#I3Tvs3%#c#y<-MlALGJBTHU&+Sf%R@nsw{Tt^ya`M)ob&>l=C&}X7 z*&{D(C$b@5u9SlQxL+!rJ!6QFT1dWZShFT`pU2Vu0uT(UwZH zV&$}fk#jGU&6~k~zS7VEoye|RLW7NkohAS#I$9}rg|ePjs_-;kdmMyMCb%5x?CkWO z>39djM9`a70uxeF9-NY~N}`3>*(Mr>`(B^pSbVpN480M{SR4UT{Qg;Ri4!&b_JbC-Zy4-#h!c=h8NKO3<3uAS%%FSHZ z-r+ga7}q)Oghw$q!|a~0{Ib5gIe2DgZiTqg*80}v9<+Dc@PT}{#;=`szZ_E`eFlH% z6}(!bs?zy#cAATB5(F!SF7gLmggbh9s4p&{5wYLJ%%GxJY2z;A&vjrN5DDES34` z`C4vLgNp<;qMWgjMpvFD@_EHFZVB%(kO#%U7I8qt~JPOW;>tmyBXXchz1H4 zvCS!>Q^EpzDtdnd&-lbx$&{ePwDP{53oo?0Rs6o+8eEm%>wMCMp2sT%M9JE$UYQ~c zc{>-EGvZ30l)M`J8px7-&PMk4?4o^e4FVnV%ouW|m+TVaL+2?v#K^DU;5p|g3Tn}x+T}{x!cGfFY)|B(LYz}HY zo%EiK!b4Am&-84%6d||eZcJ6U(S_t<=D_#`+S9#dsq7P~B&w!CN+uqejP|8o76C*AS${l(34sNFt>M7BF65VOs>*m^?e$Ub4Vj_@Dx{Xt6=kK>|cM;2-IwBJ@FeLlj?oofwyvb9|AIBINFmHKSRVm?ZnqC)y^53w#b@`FC|nU~_m*N`kfp@>EQQ zAF>+QEhIXeiP4Z3oK*$Glf&o}wZTz>@L+$B53Cd(+SC+3I-Rm&hCRBViZUl5tWktQ zfSaR)g%c+EB<{}}Sf^_Nx0-RRE6L|g?q^B-l>ss@J}P-tYAoofkFrohGPG{?mzp?a z(I!=V;LhZv(hdW*86>)Fy|%9peoN zrl3kx3ZrT2kvTS$&&7B$QM*{&>}vgdYO^1GvRre#keSy{ zifdFT7XSswXh_`!W_|ebs>@||bBPrg==I>~)v`pd5LFmiNzKa4&T-Q1_vCuQN03zE zP_CA^o9VSzcj@z*$>(r3Ee_KrP#!7it*y9KfdV4KK{=r%<^R;CNC>eb+t@4C&Dqa;YI8?AYz{Rh(-!{yzc~u9)6Miw@dv$ zgVVCS3Dihg_Dw&zP!5rJN|H@;##}6{+I-!|JPE#N-bvvdHH{Z z<$p#};{Ui9l%Q)Y-FTr)g6FcJ-mZpM8M*TlZH}ign8k0ItpBHZNfGG4;@(n!kO`Nc zU}V_Gq{96H%M|fZH!T?t$93<#V*NLy-|J0XolK@w!M&9b9c%|}Gr?>O-TFOnMJFNt z&zt^d_Wxg;W-~t#rYLht=w3ODBA;KXquycDeeKMoeWr4Ot2+y66EJ3k<8KO&$aA1A z(pk+rc}}rc9F+U0Sha6|{3ZM|cqv4-$x&7M-sSRhF@)>5PL)W961P2F^*>X(l`;Bf zk)oA3r)f>0L^bHaVZtb)CHt_h%{2be7(Mm0r95Ahg|kc;bY~jqUj7hl-wbb}j6B0O zylOiiz%>!J$!Gmu@8gTqueS~0L`j43I-Cu$R{g)Y(7ueoxW-(p{!yc5`YMyikaJ=u;U_s^n747OfYH$} zT-AoZN*Wwx#$NB+7bL~G4#|BvTWeENQu1;pEN2{7jOy@sP|>nJ>~ZcllDBxowH<*5 zNQF>L@Q%e9NgMxsuUTT9oS4-xrZsKo)23JEWzmZq{EO)s{m=Hw&!rCl*)H0s#pYM% zT84V}-v$TAM2Ws32UX7UtJ`_$N9|U3M&wNIeL_a9r@-(p{jL;%5&r)B#rA;xI}M06wKE}G z_cAI>w$JuO_=1M3K^)X40*v<4uC@0&DzVj{HK1GgF|p7zD|=GEl(>as#s9gnnjFAW zDy8sIEA`Y!wpTfYu?H4|aR`r#Qg&ME>KPO8#))#PqL zOGOyH>&-QV6m#*I{SdrjwcjJk7EVP+Nrz6HauNS*` z+h`np{%IWH>wP(>bVe~cmG<}1;RVHt1K*n@8p zK_RW9t(?P<3^_A3^l|u;ft6+P-8z$~JGqxczs-HBET0~u&&1a@Wb~Xzlv)Ze1i(<( zh~YkGf0zxf`b4~C&rmYOI3KOwKm{)x=Cel z%>N>Ux&qQO#eb}1eZYTP$w>MC$4X{D_g_}B2><_umFyiA05CPF3{xUUoP#N1B?>wE z6Csx5A19Z(vQb0OfeCAnu05)g>DO-|$~_c}*d0%BinHN=C}0kj+oTwJ{ng-IIjWt5 zHjGkm;Ib28n}v0 zy4rTUxyBmp(@trve~k=k#XR{!T4kdfM1lyYVlK(fFP+ka?<)LiiH`pu;l9?r(MYzw zbvbVcBcHsyGrV<>Rd3~VC**YG(%LaI|D#qB>D@SwTid>LhbMX6wYZ?3Kz6|&{ayg@ zhRVLb5TX{R%?GW&yzu?>d<=%3uEa@(Y#MXlmKItfFIOIi{OdkTTmDBaIKrAs=ps`k z1XC@o1Reak67buTM_#gA2%v5heipV7F||D@CRlPgo)x!a`qDp^onX;hxO0pIkV}y# z5$S&Tgr?O?pydHZ>b6vr+;N_bkye?d>*{BaxB7PZa_B5pIGj-W7_0V!qA98s*<0j2 zT7U`=4z;il*oF;@h)Y`i45QVC>`Kiu89ExWik}mSzyz35RXcyLWWXe6a|u;43``aY z)$&=b4S8_r#`O{f3ZTbH1KTypY4O8g-)H0)Vn$y0`%Q@JR^oG<@VeB~!00&*D%7~S zp;%2$=T|gB666H6|H0mpKV>!LzMdoV)l)ARgafG{@9X+}L?}b|?Rkv#Cs#<+x6EAe z^GlQ@=FB7W4^AF;ZLH(q^tQHuS(3=z91NZ+kFoXNwYtNJ781e1(*4vHcxHx`vzI2n z5EMzasHH^ZOd-py9?O5~n*RQ%39o}J;IF5FCKZEV?|zEt)<4~M<79UHL>k)m)9;BQ z{4x4%ryGi8Z_`6f>I$Q38C&?uWAi~@*Nseo7%yABTR!m&$~4Q*=M3<|igzD<+L{GD zRv=Ez%HY<5_Z2jWe-xUI_{-)CnIqoEkKQbeIK`^bnq$75WSBqoRZ1n0acAekmx#3UoTA$Sa;JPHC^D(2_f4YR`q)W&v)@je;yurDEFt0j}1S! z7ukCC6gz)phAky3^60rbZuohVf;h1N1-;>9JUd?vx;-P4BWES9H2l7P`tj#l(yh&c zUpFQv>f-?@$=kZxcV9?14wAB2X2>%=_>XKatRtas@OasF$-|UjS&+#1i%83b9?8?? zqahWl1liNbwNj^Zo|9k9N{VW_L3&Cr*&@$sRs+H1c!bE4NQZ`7E#?2h97c3t?^u(* z_Pk!by6wR1;rQ^Uw~a9x2PfYlL&(?Wx~9Q2Aw@YVZ3Y~O14(f6y?iI-sGCpP?>Van zakb9owz}j8i+c?r#c9U8M_zPy>T##RK<_^3)5CP~ze``aH47ulxgO ze)AvTosX1~+;hghwL5&JADFLr=Ew_IN`FJpmj6Ofa|I7h62=l#4C@AxCPHMJy~FiB zF@G74qgzHt8npG`ni_$xy%!Wv_DS$>t#xU5@8;7ize%K%`P}Mw6G8#~y=#iTptUdw zY$WKsv2mu20QNc+#Pe6locemB0M^0bO7iL5N{RpO1@Md6UeXpm??}#gt;oECdGo{h zHeH!T>HEl@)v(TIRgnX~wu5BbC0za@uNbT}d#34x$v7Uw)IFl7v|Uxj_M37&rbMZ} z46wA2-IjM3p1qub34{S74}4aH5Dmlp)vfN{Bjrv8@4ej9fh%{w$Tnj(zQ~two6l?Z z?<+0A{jZmZ^{2YCy`O_!pF;qD+#O!itdAoq+@1f>%$fXhS0-~ST!>s=l@&7n}E>&1H;?hFLvgWN2KTEz-$8BN3o0buLaGrhuG($ zq)>3sFi11VpIi?S^kD&j&~gKOk8b65^=gVhWI8$UUcg_yZkNrj6hpdDoE#IH8C)ezt666NMCpH zJ1P6$SlV*A{}0m6F}Sj>Yu77Ahney#L@B4h` zt2%$r&t0{4?YY*TYs@*vxbJI-9%!X_`xQqpvn501Q9h-TaV7A(#mP~dMU;vLPe2UF zd7AfiWnJ7WCy80wt(<=fY4m(KC*<64*mUz+k>?k0VdFg;N}5cr;!Jh!lu^wtIDGf& z4T7S78m#e-m|Vo((i==h)_TlOM!9wAz{aWH5o_4#Q-0HSHM5s@acRhGC`i>L>G2fR zGwwMrqeQZNIev(TyBo_x)p$X~#yPt@ot>YZ9~LvCPKJG~eLbsBIW78FZ+mO%?6p5B zs|1C1{76sATCa@Q0&J!P|BeJh@;KbX=J-WP1CM6-SPcN_wwHckNFD)Qlx!afWPkIa z3TOGdR<1@@%6h0Gj<$T8$>g!}sOP73_Jv6yAr;GRdq`*1XW5NSbk?=!K&wV$3Q1#` zZElxug`>`d-2^u=2(^q(BBI6aV(R`5_d%Qm!^u?AjOFq|eo`7e&`TwFzq}m%LF&II z%V!O;xR;K{b#@yhMdo2jWd_&t)lW~z9dAT=-h>t2^U?@Lxtrr|1}+;Jhq&-BOHMaz z{UE^`hX--fJ?2e`I8q2LGSU~OBtJp=v*oK36V}G`8vP$R#3ax8=T$OKIoDdiB}@fN zntRpWb2IlfUURK4ViW>neLouog=}*fx4oml0=1!eAej)6`qvRkxTYtI!k8tk-tj3XxiWont|Us*k1cnES))g3l;8yw!jZ5P6BR&#&fT1N2>?jHzyU1hORFQn>nge8D7tV6e}nT5 zbEx!)7Xa!ezKM~N@blrdbjO>cwQub}tBpYrNVJ-Ff3`eX_IPxEV`lXWJ{{^$jd5>VfaS#{ zAAP;;8Q)UPOAb|?NqGjd$9#Wl0P!#P6J+j=G*tsqyZ_hL7t7@|U#moCcsBlrBcvvI z1NjZ-zc#n)>qtz3FTSOd{a=P-8*po#d*7h1R+T@p+ixNxPL6OMQ(IhUsuPU-3LYv$ zRe>K}8&MQL@+2*%SroI$3QgT*#0rc zWq!mUhqaj;Zlp4sOk{8}=e23-ejA_aqy@{m7eeF2SZ*f8b>T7m+O$o1;U3mKQj4UQ z?SrSmnyGFOn?_PXRqF)C&#C#RuVe*wB$x4KDa<=mG)k`6RtTOF4{ze5UEPJKWHo9G zn)dbnG|1V-NM zwr=9ev8Tr*Mcw$EZf|g4OPW5bbA8R7*_jlBhq<@mxNlzK;t2EL2$RjJTX9t<>kg!e zI+(RyFzJr5&~dimyGl`A@ladwfRao5*txr_qIGq#QIBY8^;TF96!iNQ)gH$x82vsp zjf@<&@ODL$y}0m=LVjmit}eg|_a#{%+EWNCTi3Wxbe$pnNi(XO<)mBujP*3VA$$Ca ztwRGBUi`yW{Nw6aj=ybpyrs%2x{5I&^Rkt|8O`r9zsM6;3uCmkdwY8D!`t9_78i{r zxHL)|A0KA~LA&-jV0eNS{0i&ko?)~SX7dJ?#}K3CEWM=?yqM?X_(n&wl#JkfP@R_c zv=O)g*?cPktUR?fHBm9mN54(*W$8CB8;XjsJT7Afrx9&^a%S*&5NI-BSyEMA{Nm|m zmI`_)v4SRz23P7$ovP(YK9Qqgb?0Z#ytT%&Z-EDS=e2-!H@-nweFKg@8`wBqAn8jE zjoQd5=@Ombmhr9pnm2AYaA*Mu4bc0^wT|lCC9qZVzJfBrLQlw$?^wS=!GNhbXWngO zYz;Nmjrt(6BxRmlfK z^AN;em9~ z4y6Gb6A5MjDFPv0$)e#paIj^gb{N{*pRqB`B{|d#>wuv7ybZx#4*(~lFwy9fUOiHH zJjTuag;xDmN?AX)A~am+5zEq9P=3=(hDEhx{>a(s8!$dtklpC0wB44;m;e+c2%d&7 z#v?rYU}05$xxX(Br`*ERx*%h7mS!vTsUvzg^iDqInb=r%q)L9d8fmQ}bVeg4O6yrY zl-22oSNpvaBvyF97JcFU2Civgy=Ho@enMGr7&wvWW=*{N6*PCtB&EQqN}3q!+jW=v1;Gb;!?;yOm8=K$ChE7>*0@K=%{td@svS!3Vt z*ZGG_;rp$1-^WrMu+U8BON{BF_a|78aqOW~T+Vsyi^e!?SJuM#DC}E8ZOIoOtT_{m z8DGP&A!vgtW4vBx7UDN4@4s8Fa~sDB*&=B z=e`ZF5eRmJH7bmyz|gDKts=zuSi7u-bv{cTf0~Z-w^WcvnCDUD&{eU}MHzxv4nk|l zKDSQo4%v6zps~!sCIWsFW5bcjK~YHUZG#k%3EgMX`s*rXPb3{}I0ZT%C(&ZZXsk{d zHRg-ql2RC8+ZOf)6I!ygz3^4tx$g@khI_1D{W=4$%}*K{=dkmW6E4EYcRvw-(@RB1 z$PEwC?MLB1BM=-J6AO?GhUt`hoi7aS|1cMx3ns{e&~Y>#rzBKo1|-1I0+8L|`2QRN{W$Bg+hq%>H{^o*LA)XC2(%}V_TxWI(JDQ)Pp>qN< z>qPP@Z=z1<^{f&JhYt@iu5?F<7DmLPb5AZ#B}t9HI~W3vlIbe=XWsBUjrh!b@*ud! zME@r<=M|}h>xw%FU}calspPj-EnI(JMEDuDmcH(Wo_FZcC<3%}Z%$q#~qfxD!7XxAxbao-ejN>fk#8 zOaqa*mKqg>vWrR8NHUBA1xO&jvG%0W#{Ylpp>EFB1yv-L4r~T^FCs6(Ww>y0RiMp z_$F*DV^H95u+4x&WP9wG%6PpkXmhz2dfxXQ%uF%%8m_)m+bokAlk%y*+@pL#5SU9H z?9h1bK7nXTzufvlbtXeSx1KEY_nPqSF(C#E)oNiIIm`Vzd9)w#v%)2%_uBm(nYc3F z--?f@wYQyIiu7{PZaJP~N+E$#dT%bb=cYxCBl@Hj&f#zk&Q{Q@Wk(e!HDN>|0lILb8aTl?9_Wlwr&HOC%Pe7nFxJnYkV(i|PoTWmui z0D-SPO?=<%ULaj+Z#QC==WEl(u!b`s))s_4y@h=zhZ0jC5Oz(V!MTkOOy6hQ15cgR z2=tb;0RbYjnEOG9{C+(Fi9lL%I%zOSu-Q~tZUIOs{g#GKhhdjHvA~{#+PY^_%ScMu zE*18xyUFO-UIF7sxgs34mN@?Sxie13WR^U;1 zbi$jb%w2Uz@aN8})diQ{ebqgFoA=mDZN6#c_qv0j^t^-DpR*h>XZ#Mkebb_jLe#};ZW`tf{Qbz!Eo*h}rq%&)`uW0+)1n!%IVXB)HV zgqbYJnRHXT$^BYDalm+uQfGpT+rfZhQ;U0(mv;_%d>ZqGukp!R7d`b>t=fH%(x3wS z*QI|lMMYLy+3`+dRzvROk$_aC<=eHCmf>kh=-~i2*i|a!qW6PE5$R5TeQ_Wq;-|_$ z1}f@v)w!>GQTs96HTjQMZ45RNEh<8|AkRrRsvJhm2AH@0kVWc&gn8-dg^cj$lKSD_ zRkmA45}eRm@R!B@8;{rH+W{}F%c;^eg|w7U15d)Mi|@}Sj&?w}Y>KLbm#UR*?hovY9OBh-y#91*vB>%+17<2(ruD#l$?JAoQJHR_KNsfXtN{zV zFO-1TMjj!KDMOw7k_Qq2E8Ez30$9iG-*6~~^Roo^FlfG;*KeSO+UqU(GNz%4GOI>e zT@MgAAimkuO4Cx$NdDzXd2n)rzjdA2rht<<@jdc_l4yOu%i-^V5;tynOF^($>HLxI3G3kE=eUCQ#7==gGS zfEP)X(qt|ysPkyToAHJyTN&KR7gBX7oX>lecr|%hZRj)leFz+T?%b7%E_kEmkLZ%m zn1luNV$7 zbnG()jP}u;p=F4uAN+uPfo*5yZn!G|=`4&*_@il5NLMcm1+XPM`E2F|$?+q;r*?r6 z#kfZx5Uk#8ZL*Uk>>12AEn~ealK~3&hS=8;%!ijC9TQFsa$=OUn5{?5ZE)B#B}3?z zuW5e2#IaHEe!hA#2lvg-B@Mx1UHmcXN1R0q94Sm>+K?6x*j2EEB#2jdp1)Y&fcw%t zBio+N4L@nx&7}p+Zt`nQKQvzTDpU*Zu*-1|$ z2OmMX&e6vxes-}pAm^5%$(&h75I}j19+s7bj6Fn2ByvEj6NfV+(_J#KA`4-Ta412|3q!HwC+c~&c zUY7rKdM_ntHfc-OA9HtZ{#y7UFFt2;U39Y!mH&EMWMehj>hc(ppv{3_Mh-05_xu*e z(`b@x$DIEyik+MzzzGeAak?EJex$Q9O^r)YU{ni{N*{Los?+{>nrd0M2^!{hslZW| zeb?`&6^9O`ziUEX7yv=?D3Q$uo%qjo%HRNhzTIlYCiEJOJU4bvgVE6Bj`#afxuo{% zvq)PPMd)V#_)9qt*QZq3f>GkS=}(1i-vH0$-1+qQ6)zDnGn-KWFhFPWxGuAyec4NA zUA@<7MRT!x5wC-wtIo|wDE;xz9zOS#=163Ku!wqSLJwQ{>u2f6$b1rL(2F;cKmbu; zm8deQB~@|OwLZJokH@dDrE7&SAEc&MfKS&#O1cOjGb3n93dw|*y7YR(GM5iY80+nB zUF_?Vivl?`QlU2PvGEdLMS#FVIDl$&_=lSt_OiRHg;D6-!Qq#if33cPF&>}Pi?;zt zfF#y&W*OZtkH%Fyr1-#%m_+Yw#XG7slU5W`OstCpz*kxjXu2_j^csk+H}X}=;>9nPPS_ur@9SH}QgI?XTX z*#;VurPPzJPUWWe@e502rq$WHm;J%=R3+53O4md^{(Q*181?57G?}g7YW!5~wr~PW zkOD+^WZ9-U%ldXqI#O6r;EJCD{cev?IiC}M;!bAE8WgsG$K`^~4>!&aBP8-az(9)f zucolA%`uL~c0G0|jRpX0OJnw^CBAyqe$_gea4<2MnDsqMqLK;<=S{^yBv=m`D{BKJ z5THsTC@%^~I3AYJH`(9I}LmAJm1W9^Y zz|^Ml<3hl$jCR^K979LE!>w(kvuZVpWV>fZ zijTF!dRf#49=>|uL3Agt@m@&?iKgwra{G$`JoncmJMX`5CU2rS(eGx<1GlpC^vSIT z<~{YPV3wKZrE+g&vxp|h$?hhJ#Szw- zobD7{R7EmTMpB#AaPh*KWaUOj9}86@_?$OQ9z4)YgteBl4>3!1p~bt(?e(vgKW&uE z-_0&8$q1|vm*8PI?aZj!`O+RhOIqa5zLz#+*N*n9ii+z8E_|F-J{FsDJP6y=RiCG# zX0HOFh7yzaWgA*XwnU9(PLAbaas=?cG`DE?`xm`k@ea1#)N#p^3u$cGe~-zRknhdE z1Er%(|7swry}7B;_fsnBr$~I5 z;cQdobe+iySam-gi7ZQwqfXaOrbJ-^5I@a$nmKDX6t(@zqyv5&?tifZ1Wp!8QE7A$ z?Ikq_y)|LJCqbN^R2~Zuq4+h>K|cDIAv_}l*}Qa(*yxG7$3IC4|71QdFCamCyu!sA z^JhafW(di!p5RlxoF>gwC1OpE&NORX4)~JA@1=pcA*YMa_&a86Zhl~xyOEG($q%HK zv6#FJ;r76Y&{kM7-V&h103P*iQ=j|LtXitz@j=y+m3~Qh%*zYOO5Qdnlat-vy}nY9BQ3il@a?`Rw&W_pWM!%`$T2h5$5BsL1AW zZhxy#7LsQ7;b)-4bs$wPEB!hyCoOnl4h~4@lb!c4g;E@J{mM98!^0l%7Ko+mh?{uG zNYGB$M`IPF1y{VG5Y!9I$V7z(vev8>2VLz?F|ci7zKPM(!;-V#chg(U1t2R!-!&Nk z0?FQg4K-4ETLTR!XLW8|46s&nh`2pl=nG`{xi^{Ji&gd*7^n)uksG@r8)m}&g1fS_ z8m1%igmDQ(jw{|yZPqL6`ik6fSJXRESZ z-HqdF!?FlyQy;t1E)sCDrbOu)-*|F<;FW~@itu2U$c8vY=#BV+RobZ->HPnzJL}b`L7=(T{@p!WK^`$;#Je)<4$-u zEPVsM=%s299_FJ-u8&Xk8ee!j>qEBwdE|zAxY0%Yt%#mKu=yuddFG5Btq=Yb=})Ef z6GR6GWz)d8R=BU}P2Fi_5$T;GUy_l>vokW7#L0a`aqivww+>imLNjm6Miil&u{$ z++i)wpYk2>9*7>m7=zA7KBji=dTla&+95_S2#{I7?!9o8;%ssI$HCo}x~|Md3oRYd z`XSIgyS#tlq$ zQlt87r#A99UHbC!e`dSEsjfzoL{ie6b8RF&9j6wIHNrP%q(+3fpw`>E8{Yg7_kL08 zQEFJ#dX7xl$(5u2X+fPpFN}6ZH9yJuuuJ8PW2p_i?6<`mG%2(spH|mDMP~5_B!8%B z=rwju&BFXfr6g@MO$8K6n&06!&LWdmJ1us7JZ@Iadimhc^-dY%VLruVo0(Rfz8!=WEl?JF)U?9epVIjT89ne+TtpqLv-*OFni<$G#LO2x9Z|R@AAe3) zhwsbhk7D>zy&dn9{y3kb@AA1x=@5he4qIV$a#s82N@H3YyAaMmpiWVh(nwXDc^AaxRdo&$)43TLyE*ttC~TXx_|) z$^F`vUm+Er(B;&5ZM<27-FiT?-Tu9Ay3>V_2R~7L<^*~-IQ|7EI%hj#_A=kZ*wCnu zGJj5-`l&UAsM=DF@NdX>!Dukx5&lTYJP>-~(%+^M9Jx!qH_tE152^CY3AinVGSTTZ z6S#$L&#> zYT>eMA&I49#lvsGFECV`wWktr$iDjqg`z1ej*HcLe6&DGhwW`fX=3D%#rvhWiw_&+ z*s$(2#_!V7(#y`zj3;VT?OAf4oCZ3Uk7HormV@8tWoZRxZR7j}LgigR$$FTu)5E!Z zvH5#{qLNC52BzlcD`RH0w@11~{P^XextNQuiu8(a;SYm2HklJ(M+Mvk^ zcneY0|G!#*@weCW)cXX(^@WGvVaC{#^vwJV>|c}ZU3+2Y@5$<~UR zJF|C)@fXP%fe0-X&fmJ=HOw+I5u{pIcnGDsIQNu1V%pQg1Uk+Rws)Hlck6$ZmIrE> zW!h({`T<}-i^n~SPMqtxzJ8rfS;PwnA9{b)&_Uv1+XVonnqQCdC%76Z<#YZzG75aQQ zbf_F0jeGYzcGyT(ibyeEa7dEY`UMA4pV4vqGiIdNn9hdO!i;|!>ioMsQCvo(>A103_GsVl(B_uHl^{K20tToK|t^DO-T55%_OJp`n@$B zd2@?9ez(w8!Thqd_@^-9#8J2v!QffL2XCG_4ojXi!HLY$pj&e-aY{tfF>=A%yx$_Cv()Mfbg@rXWUVpKIPcIM;B6fwQh`uz9%RJGkDP335p^j~49|ZMlwPd!mCLfHQ z`Rg#?{5PB~JG#~wmB~MM;CZ(ts)G)lAO;F797tT zuiB6q$o!@$7IlpQ_+Bh*=V7}SGRDWD!7!K=Mxv1}tPf@e$$WRoZ!P=xsQCf^3Ra|i z3i}O~aedrYI7N@(stm<@{k_{PH& zEs^aOwuAG<14s+d1&oRe?3`U=71z)GUel@^o6=PXid$dbD z?@U>3af(;2Bx9xEI&hZ}@*elX3O${9#HqZnvcXVxsj!)Zey`?~!3D5<=X%1H=naiw z$GZ{00Hu;N2~-XbbkNc#__*{e(nBEh>w=cGp4s%tB=u_<2R;xNBmx3b}jUSofFULW8}Z@7A_?@#*t2*C3? zYKgW|yZ`}~*bK4aYG12p1F3Wu()VH10Awfh&Z}{iN-FFZgDjx0(l0Qc)5CLxPrShp7Xf?jDu)b~`H< z{ZMCWQ@u6HQ0aA<>5|m=_He#Uiv&n~pBpf`r1d&nCyY7VWG0wg;(s3I?lpq-m0o|o z**KtbTUlM){bytHf_%KGJ`Y9EK|l+jXt|q9Lv*>*sb4EsBY>5JKc5UAHszad^ZEWN z!W04>IF-e?n`Y2VlSWLArvHd*kB-bQLqY&L>TBAE!p6d<_inb!MY0q}*=>=Ajg14a zz~kSUiA~$}EG2f9|JJm8sGcW9YQ~29!$HV{5vkSAAQjVfcKhPCNHAc7W`F0Jrp3xi zW;)S?Jh_S6mKjM~3WPl1p`;=PxvE_zs%5;^ssg%ndK)?r0&B#$=4gK$_T9FAEh)h%+8XF z^($RwxNVPS(Hii-+&m!5dhSZ-QBtcgP+5&#v=7U5o(WYH$6sfB^D@KVn6VXHj#phmJnpX$jhsjZjzPlTBX zej)-xN%MvEt2~`O`D-r(5J#S!14b@b1sBe06*aIRZ59B^OuwtE%O!~t(SU8rLn4>ZP8H=67{pDQJ?5nHg9=;#!i};wmSq*2&_ zHM$)&xNZECseX8K(pu$>u!7}1JM%aW0iC+RZ7nL6Rd3@*6;as301*j!tq}np;%kf|V{n!dtfiOYw8v<;_J}<&-UQme_ zgrA>pcGh?A@g^4h3@K3hn|@=8|AhM1^Xyul7@X)NecHuwJ#j|k-vrg7eatJpVY#D2 zZ9*dgvVP5)m3&H71{m;rVtmMIvQGFj3?Zi4TN)Xg^SwQj*vCY;eoE_^*o@#Bvc!5) z?!~2-_2jrhR|e*GgFqMH30J-b!J27l3>TUCY4QaOdW&XT{)R_T0nXxH2pvoSZ zyzW<2%Ainb;-zIeS0*R08Q-bEz`Fs4JX=xt9(>vJI@2V%;JBPfM;5EKyVc%up3R2F zDP`sJ;5}27-{iYN!Gb>Bu`v+%Kk%JfMfV%j3mg^SWv!(p309B{OikG-F*x#Qf!yW#sgub zqAn5Zp$nnqDc+Cs%q0#)FoB&=lMi;8>HR)5=c)KAnZF6^6&}i{&m+%?a$Jmn2wKzj zV*Gq?{E1t$W5+}(i6YO7+Cb;9nBA!NSRJCf>y11!@0?uT?Ws<14i^<;JP1o+J>nlW zGGI+wd+*p_YAm|wsp6s-c_&Q6_J_UJjt7-9=Ee0U84VqT2;qHxW0+2});P01(No!w zo*c^dZkS%57EE^J7L*2JuZ#N`LQ>cn?Ntvj_VP>zPxR7D82FEgg#bX}i0P(4Jk#AC z6EHZ#V|!_*E0V2r>k;?&RnpSAzD<9L&~Q`x=M|4m_zS4=z4xL!wBvF|PMNJF>+o7n z0$2Nk-kbBUjVc311B!X$j40>hKc(68??=85A;9CtSf$;Xrc&0~5;XP!khPPxO{>U( z2S#WF017;wANu!TIOZ2)FSX8TO`Xnhd_+ZD`mO6!7xM}TUJ3!S0-QL#3NX~G&Hv+L{WOfB4M==wRComkDV(qXZTHwq^9^B zEw*((C56kCGlj*KFH%j*5>>LC*K3JOJgxYXq5^ztogfyYW#+?pJklTEU`v5uJp_j~ zm|cK@53ZoWw_o=V0HfE{bV>M${@VIkR;6B%SjyG&^OrI|aiY%wpnUF=Upp!h(9^qo zZreIv>vF*OI0Kaw>4uyL#_V zu{E2yX^xm_=k$%Fyh_2S*4p+`1s=Xn!eEj9>K$5Kh;psr*}aeI8~Yuuo|TxALZkJ^ zOEWTt|Ma1+azJWYI(+hDHwshu&%)&07iJ8>Po4Zs4|%ugjMr-Yi8y3zKbP8`9yxGz z+#I%qEz&MVdf0>swCc$muW{3U@16cwyv*NAR9d(qQM5?r%iRvhFhT&OR5lym!W&zp zD`FC|i1F>s$|ffL5NiQtKSC}4LBpHlra05(B$-l~1d(x)KHho0gO2lP<4L-?Q^+cn=;X=->1h)h$I);kim0)NT8z(hI9GgO9;bBO%)5I{JN$UoP z1)kLLf8emby!nwxGcW)|`-6=ivj=Rvah)FXl`0_ zOutrLgPI*JS+P#9RD8HUEWOv}j}kuXpWtvT>3}Gg0_MBQbZXdntT{?HfilAdR$M-m zjh&nl>nVr)1Dulo5j35Z2DXl7jr?|8O*_ra!YNSsV1jJbctOtRz1*JAPp2xIc;s;- zu1sN80Ch=vOv_f?<92yiw+otFzg|es1NTnTA5BAYw|m(i+@aT!r0%z$1Pk~>8wBfn zWdGr9F?^qKkX8`We^E)`eB6F3+_`deanyB)_j*~^{i5>K zxORzJUx}X>e9OWyI$p=iK%e_(qMhqq(FoYKt1P`E$D*wOg2Y%c~0~tCQR6xIvNg6lR zNLo%tBMa5x+THvojE7Dc{3nah)F15zDjG`i){j5Fq%XfbE;rs@{OVijEqX^{RX^c=+Yaq^DpMtbT!_(oAHiY=c3%U>Rn*K*EZ22PN^kmOP3-`UjlaJaG( zG}c?wAg={)6Ai@)QI2~1$=@5=iek7c7eWM9AQ=^3W6hfUWG7F*EUXOyE+7~w&U$6@ z+dc_-5q}C3mDAJ1sPSVuBP`taOz@rz@U&6)=hhmObw}Y%NhUp0q zccO5@uQvlCJ>0gEfF6Mb@fGgRi|aqYilmDGu{LD$0&Lb{pLWiVvZDiHdr*BS%RA|+ z(<@Jr&M<@%Tu9eE=4EA*IRlK{<>>vJQPDFghF<}9qvNGMPkzeg6XnNW1lnHTs929| zic^3`ff`^!RKfr^pxLvSx17$tiggofGUnFl!QE+B-OGUl1ZY*;^emc`8On$k8&B?w z8lE5Ey;m1oXDCyyy?y~;q@uDLLnUgfM7W~j9&PTZ^hTpGFWRafq2$m&$75Gx@A<8= zg0taqhD!zeAMP3L!0#CWl$Du* zodExFjLyc3MQ@Vw7d&*$fi-bnT5A2O3M4p z+Q%o`ABx-+QvB`5r!gJN7+P!Isxry1r@uMF5iNAEEr+q%M90+erXL|%dmMBow3^vk z`tz73EGW;Y>Yce?qY;<(O2s5UaA*UU6<^nasTq;qP7)t_=LyexQ17*e z17tK%&gp=k)7DuqVOg{Z-&$A{2N5`!LOO);pBt5gw5A*Gs`%eFI-DoB^v*OhML}H) zBNHM$%;Ki_r{sK5l2qN0366Q2Mb$j_Gc%{sFx!2ujL47`w&cE_w)gNvF!JiY zHL$7(0s>{hwM;`}{!1FRXP@((s?nkYK5^?UaHgPu^?G*C!$(4OmE_hV%*+x~Akp^; zRK8c%Oo z_^hQ`Qo}+`EvO@InBsSTGh}gHi8C#79sLgZqT+gxzD&FtKTKBP_Uv(5~z#aW;mC}};zGQng*Tl4a2QZpAU!TEKlgAnYyC9e5^oTQCnSIT|prs zJ25RG!SzMSaTQzgr1z46BRAt|>dKEV+MZNNBg5`=XPbZF{m-$CGmJ_3G3C65slyW@ zp#?+m)|B5;FVb+IyrOI^8puoY7;&8+<$e?_c0ApQkc%f8k{p@sxtoY-5{12Yu1h@k z6T^gZv)NJqqq3r+aHs)JBbyLJ2#<8DD~yJ_vr|fm9eKUgz(l&-_`BLzmwG->)@ohT zRuH1)!|--wZ-u4nD8KpSq`a3&nXU89$~CqrPl#e*rF5q}@Q69&{$gcg!(%?{<#ri4 zVe=2q3c5+w>+yU{G&Wa;ta)h}=lAcTqCd2i&3h_RMopp#IPCdaUN=;}#_lkW79nxo zUiCo5L?WHJVNg3?VCWsv)8#gU3%#&{*Sl*Vy{}+2792mTK~P zg<)>*?3LBiQeh>(g8(8YAbtqa<#OY$sgS6+o9B|cSrCXHBDldjd8S0D!DPO3ZATh{ z2!C>Vd2DK>M`2X|lbrL|MV|q0wa#jlzs8ECHcR38-+JNH-rN)U;H?ZPhFS zx?7vZ5S#6)@(M}{aqW7g`5^@$`C&nFIfeU?FvuhuSf*SH5m?XlAG1R)kL?6}1^7P+ z$GLz#gAGqAnefn)wKPO_P;b5eUhyCC;wA#(>krUpkZ(8^6sOCS$EpoN+05QBHJFcs zg8ws&f36Gqdl_8tQ{bOUx6Q9;)y8|q*}X{n4b@{bF8!1kP2bSx`!tn~Kbpc8A^()a z|NFi7{i!ZO&;VXP@WKCt$l@`MTgmKpqWpY4z%=o4?1-CM`M;NbP4Iauk5LBu=W3rI z!5|lX1sN~AF)SxFS^e7*-p&e54-PfaJn#P<(Et9-|K80%+13BgPw%}%>QEq2r(d;b zG(-xZVrU^MTeV|tak&|glDh@Aw1E*e+dN(bCzl>yI|Uf5+h_pl5~-l9R*eZA3oH=?|;`rcV|RPJ;e+2FBk9!F|Ee#Z|J=g0bKvyodq8}Ir$5C$vIX}E zpL|6|-g|}Cj1YV&?$$a+-5%@}s%vh#uKey5zJ~GIGIf-m+o>AvFAw&r8`CCAi3ov> z>WaWlnwgi;j7I#eomH$0FI`Q^sfi|z7q-OS8nq_icQ5;MEJtb(Gi2wrkM-Dd3L{IV z;^OmYVz;?pUZ?h=Lqv9tYh~#fZ&Ix*#Ai&a=Bv(k522-QSJql@(v!@@gdnQXfGHb0 zVA40_k=iv|*?UMFTc_^8I+F9gkb^w=ag#v*6YU zFLJlW7kq4<3h%Kz2Nl@RWlX6|k7azevRmtJ$o9VKeNRZE!07s@P!!jBIGz$Y-RZ=} zf4_Fp((=J+qV}G3jGrLGMV-%fSi^j)D8!k+k+VeQqz4h^9jU~TD5sh?A)u2;r3-UQ z`Xuzguet)6RY%`vF*~1M%YSTO_#fQ=-aFW^N&3@%qHibd5_;`3=mAfwIkHza-4SYyjsWR6n%{AK7eh;GpIEnhuY`<0YJ1`C_5xU;G)prT;9V!xN7 zN+$P{C~_RSSFA^P$DQsDuhDfn!zAG$rOiq=tWKi+UQtuBrx%&DMeKk6xMEWos&bF{yor3(u@M)1`MA^&NDz>uu@n(WwOMud?x9FvKYCE z@qeh(>~cMV`XyLkfNp9!3E5X$q+}TKff)I@-NjsrwYt2FdLG^zI=DTThH$e z;cu0-IO#0-G32BdHkN1CbH_zg=@CL6md9`@(hx!MAh(Fb%x8M%>GvWQT#p2OR7u)5I)EW=w7xS z;aS?Xhi8}UKAiL4*QDG~*_?52o+)ewiv}1rk|#G0|NFqgyN_hHVoD-jP`}%$>kED_ zi+L)o%}Sjh3KRa&?K~(m$8Qf0Gw8~Bw>I{t=g1XFOpg0mN(%U5`Kg*0R@Z*hM>Q~9 zb&T~uz2Q)b0-8#r?ScqODt^*Xq!?u>z?xgopyD7$@#PP2)E~US_z@*bO%;G z`%*#;KFtKPeWfv1QU5&FjCY7u*QRMY0oGBQ8B#UIYI>6vIGJJE3nXKE39mI}3*p=k ziL6$f)|S-CJ&~e~5B-l809m$P#(#6U<6^l(0a8FI?8WEF>@ADAsg^o4Y^KcTu}|%W z;1kVe$D7z{u#$_(WO%#F${0FnKc@ZVJr@0SHo8uJcv^xv9>?zSv@C)xwz$u-cg62v zLlF<|Ea+T!h~3=X5FAo~{$4g8SCtCfXoB zIZvm-?!=pkf#Ro9*OCU8p}it)O_XCYq0iYt*$nTbukof<%(+MFr#|f~8wym7aBhzN z*^J;F)cj5R&ah;xNldW53~jYe<6-5>q>RZJdFJ?&Q*xyfb@kZS6Dx@fkQ$&(Zw563 z-~B;m{_SgR&nSyU_I3Yg!*b=08la^_s6MiQMtCdWN-@<_aHUDBZB%sbHjrA zK$irVY<66*iOFDoB1S*9t1(L}6Y={w&`V(UD-wirIXCacfD*@4-ohcbI_w>clcirc?$ z+q?JYF^8qFNkt1LKMu~sL@8V891+21@hCs7s^dK6y&itUZoCcY_sWM2r9Zt~Ead-q z$vk+%ZgV^8scz%v(f7nPGB|m?;xbgaKRctSKrI?qAwZ#*H&wG;2+GrPIDZW%*nJdGAegj@^g$t%!Eew%h)v`y5seZI9INM6LB5R9 zcCf!wvY@ri<|(*5oL)>rSn}KsyWHfP&T2Yj^Lgo20BMKMHU8db{RVYjB{cw{f#^>k zCv`lr7l*ZupC!R`)8T0DD^m9@W@pi=vO#2z^XY5~4FfUG?djah3=Y-V^?w6h0N6#Ji>jcOt9;&ZyC|*l z1?E{93XwuQz7u&tsh15(dP`6=E;n`G=s+mg)=$oBs&zFQinN)&vPA`u68_tPY;^5_ zE9qxRGT6|y;BOao7OlNh zJ~p)0Ob4&Z#N|781Oyo#k6roaSw6|9nC|9Dw--qh46u@@Cu7<8Vx9P55#_OS5}f3h zNn#`d?ln-;KG8uWE#=wg9LI5dDmfb*o#K$m&CWYhIAkEQy)8X|)_BNhV{w#ZjPVM} zW7GR)G6MvR!cN5^1&E9av{X0e<)pUm#?lB)THsJiBA<*VriP$&UeUkjc_(a$B-a}o zUnLYo{pfUWK3m_klAHkplAfNqnR!=esQ%fN9gA`$UQ?nF0YvIiV#tFsy4#%9olO;t z3g~@0?e0a@%xcKsryUSH<5*LP8=O9LTDvC;?`ciOK5`qS#R~BJU4sF@s}Nk-glg-}gi^`AQY0xOWD{Oo>Ezc4%lc zVlL$nr$0fsa(&v`sUP0rOet7NYCM_B$3{CfxV*5Y8tQm*^0#NL{5GNQ|M2$CL6&r1 zm+&pyw(TxkT{gO^%eHNG*{fbA%!^Ef91Y3Mn5?|mj$_n?aKqJ4JG)7B5DIM zD!pBkb;LB7i1?T8CoB552$;*jbNYDy&@s{k{9(On=F)1oH^CQUKNQgIZ=8P5qRtO~ zX7|i)gFc<{k*xJ9q;UVrKMIM_NOer=@lK1GHG0jIw;{3eVRNsL%D@?ugMdKVu+xlD zIw<`k@ezO6H$x4^_K{mhM$ZD!^W5DIPH*m3^dpL7e0i%A-Hf%&CMQkr6tLMqN3kCj zjDhp{D*vnRDoQj?*?fYBNyy_ar0Cz0(NK_;+!p?wTu8gBypx)f?BFq;D8<_+-vm~J z=_iNJgCdLO^(R^BL8k6_&0Ef;BULs1F+#^Ih_^{wgg*sfr%j#_i@1VDMh}h^2*DD5 z?00q9=rjk&$;vSUNDhh)vh;#xBw%?3K1UN2(Y`z5XyxSGO!fWB*1bdiO~OQUei(so z9WN4NEKZCL*v)HBPr^vd{OSAV+nwNSwP1DLtj6VxeR&pajWHq#9|q>aPD4i$>_L9P z;rEJaQFo_dN4NUpz9IkhK56rT^FFk6(Pm1*nFgi|-@P7TZ1O?1rtsf{Oc?GxK#}}A z;CsbiXCF2r`VXiF7iJLvvC1pdTPk7LSdThv=gd$~PX`O6&CX>qZufe?`92IyH>< z5&ml}ZLinBYxz7t_VWeWunWhH>2oLxO8z41&k#Z)$xIQ!GEoWGj1Ip&Ik3>FwUg^W zM!#fdeHDTf{v7z**}OcN`lOj1vdYhi)39ox8;^tI{2h2zz&;uQ_%r&hh1`{YO)Uo~ zJ!`vG%H8>)2L_{RP^a}mQ+^~}E@gQuX69^z0Dd>@1JD50N!ZH#a7&+I7)K7~RsMTzA9&46K+G?AngH4XMYW4HMb=RZS! z1ZvwP=X%f-OIk))>+~uhVlg?Czm<1&<>!9U`V~YUai-t^-@e_QjZs%^|D6DSHjF zpHy)B%!pKjg62|w32_c6huE$6{ZO{%Ab^EbBz(H;x1eM$_X+z*xwVKjckO~+td>h{ zTs1cgR+7_%q~+ghI1se**4C!B7yB1yuvk+AC-B6<`|&yFo1G&PQU3NAWk<1DQBpO% zj!$v%1+O$>m5a5UobQ=}o{vNKrf0qR{_1~yK58?dL1xi61>9b5vnEh6nApCtw>UUI zondWjI_-&{(Zu*Fd-kU$(xpCUTH51|fUgGB!5|ZUt9Gml9&w{~WdRYRW_`u~l5m`7 zj3V+$j&1}4?_G);$RIBWBR1OKgyKyD;TTNJHlj;8o8mb6RrpJ=4i8vj0ZnD56awi@ z{N3+ud1uVoo!;0&mt!s^%t1pPVo6AkUt7V>480$4{wI8O+O=h3yWf%T3WH+?Xqht` z7X_YB0*Xd)YcB)}KBoUjQFmFf=pC8WNUDC=793Sj`YEN1DyhWq`zM)ONpo=+0I-ce z1g_~)o*ik_#`=(mX3cA#3kC-?TD~dxnuKGAR^3mC;#1ZD`w7p%xIBxG40#0oh*5S~ z;o^NJsjMWRgdu86Im$#*j=PP++%V|#9tQ&^g7-c^O8LafsN&|wCS9Xu>qQNR&AS={ zLj1!FDZ84@dRc*~BQM7UtoIuoorTUq>~+&%S<7yMV}#5&uyf+y=**VXkoslB?H~VBf$P9&zu1js#)@ZzGq)dM9Yz`qg|r9}V#5*3EbbgKuSd8rtS9VPeaJqF94 z5P)UZiDw}YfIT-BQ=tp(hCFK9q5p(%-WAX=I77KD@ z`riw>hx3^$uHo!i#J^|Zc~LZ-eg;*<4gArL0QfJcsck&O$19S91D*vRr+695jl8za z4mYcM=QL6_g?oR6<>u#;x<<1o70i;SbfW8xc}dAmPv37wI-knob~>DBJDNZikrb2H{gGP~Tu{KEp8JF5Anfnq zVKUmT5YP)4_Zzt!Z|wv50kTUQ(amRODrZ~zTxya$Du+W90%U^Qy`s0#*WVmo=X%3W zdaIXfm;&^SuTpbP?~Uwl-D}oDS>VObl*Xk3Jfe~ZCChwp{Ffjd-ZOCz~7(;07@6o);a__ ze3aT(%J!(8j=UbU&$rNdBDad)j34UDz{@LXkC1G<91aQqEACcNuZ!exR!gv)V|ZVK zJioQtgYFUn7m0l@p)bY~@8z!?sXYmgXhCunv#Bdzge9${`{QUG?t!&hp#@K@*f=X} z&b%C5g*Z(y`C_(r+^d75NiaZFkLSy)Akd1Mih z<5*A)1-XI%#-MdaGN#*OKjHMYrb#|wAR=qI(q10gWU()_dZ9pyUarSg@N_O7S;Gt$ z)6q)nMu1>@xi~6{nSTKR2_;6s?!?!*w<(;W~;12@O zK+?K@t>8AHcu6bc+-1_0KVeI(IaA)P{ms&hEkxa}g!cMpi75twX#2vNVL1JEeSxmz z$?oN|V{1>^a~lCBuSCs)b5PWa3Z&6_310I7(94P15eA?xJfHFHN^Rz;N0y4qih><# z$k#!9$1xT|$fW5yw8Ne?8hDaF`VPrf*xEyyir}2C9J_q~Kp@q3I&NYLDnz|b0;h_XvzfG2 zFRF};SZpGaFC)Kkw;AuAqM8Y(BNRoQ*S``a0!g`>ch5)%;^-fwMS`<`G+!i)S zZmhCn)ET*k=}HiUYQ(HovSo{=33w)%i44?9k}>9@4+yS@#X%(SxpG))K6J+HTV)j| zWiG!$sfaAVQb@S$;lkO~Jm4UriwD0<3D6#cw%b7bjk%VwriR(^n2`8LppgMIRA=fi zoauw$VrGb;&qR7t`7H`wO`r&@gBFRA5^&KVw? zUyV-oKWx%#Ed+giFn3XIuSK45*;gOS=x|LMixvebha#bJPo2DCldxUl;Op@qHJdTb zX{G7bBL6mV&yP8$R9Sg0FOIHzxfY1ot%~t~jIN=ysGHKF6Kb)T?Qq_BCdZOh{2pxJ z=LRTu`%N;@5Ih1(936H6{!Z8&ek--bIdjQWL>u>uZ#gy*R)Tpo%Qy7{=uT2u(~N4NQM{vo0@U4Oby6dHNN zq-q#Bb4@%u)gYHmQ^iPIPD0$5|M|p+-2T!J=V|hcO=*&;2yFu$OpFqSyr2SreL%>X zDp*tNv!Ql91Ws!@ODv|(hpjG9ehc{qg+7S94 zu>r(yzvE^Om#@ZT{)9`pm&56M;h!=VvIkf5Lys-Ls7JG@hEyFN}yA;7vW-u9Hs{0-BxrX`AE@KrYI|na(slQw?T%K z&IRTMwMw>3#JdEneX&rv>5*?pSh#Mwc!r$tP1apYe*_9c31)%w(5c`L_xF#j$1Yzc zCLaqG<&6ze9Qh}{Z?l+S&>C9Z8yiw=2#Y0I>s`azrnVMm+vlg3)^vNw#G7Mw?|XVN zz?a>6=CH4nlAB({)AhrChKRwSx&k2&PHKWy^$_e2{r#kq{tc7Pjq9(^RvsqLO9h-_ z7-yW;Q>D^Ma9DpXbRN*G4U?eAz^IC@;=-eM1fwY?WB%PH1ij6pKV;?I&95hJ3O}9} zDvga$rM6YE8-5FDUE7Z{+#SujbxLRLMB1D%lyDzE8!H znSrm|*FskFXv(yn7H^S1cIGdU?5@fxzAq3SE!0N}6k*&RiC4*7}{)}uA=2D%Fj>DCvlM)6LxirKfix3h*g8}lEYFbLR zf^@s2sXBvh(3)XlQ(z(%W)0tdnpX<0opBTTAZo<*D>Coat^{)I_u zJ~Dw8>D3udN5wp z3|}AX+pwDn3wOd~$~?9*z~TEECwN@n59L@ttz=BOOK10Mg$FsdwO#Y>ZosNJb)qBU zZ@F#GY?JvK34ao}KmLPFPhC0&qJKqB~lU8o!8|< zg!YCfiSqc)boNPL7~+pkzK^WV z{Rj5ylaNM2r9C4rw95NeW)ZaWixelUT${17j+}v}vZ0~pIH~DCf_s0o65P(;+d(jaj7u5;Ax$viirFuOQrFP`t0(|Xl-*BfHs;T4vnSN$9J6U&~r zdv1Db|FD)R5wt~#yctYjCs*pMkxyIXlI`1gW@HB(6d<=F+g|PpC;_hwJZFUh^g>Pe zoJF=}b%dv2VqbnQwffY&*@hd7zM8&H3QOLB+l2SKPX6;8*kiNNXmQqORYc%YW}w^! z4%rbB`NACWds4#rRU-|a)AhRv-Od&(LZ8#&L+rSrKNs2vUb7lGn6t;}3OV9hC%^ z3)#O-tQ~)Aa(XP+%;t66Lw~nyrumqE4!t8nMc$z+Jk46c>8NCp zu!y+JPh2`?qJJm=h^xu3G)G}=Gx@mmiA)#H_xXNcAA?& zA+|pX#M{_ZCW=)k%c|R@zu>6?3*%H7=UY;_V(hxCG95Zn zJ@`G2pGz%AkXo+ST_I8ru+ZURo=EhUJ89*?AyR*L;TeJk5CVmSHv)31l{g948Bsaq z072jLDa#1Ae!_Zizkma3i%Lq^e|?cGJlJ>=0s!t9zUL;hnM%u3&PqLq>|>Iq^6a*M zfa&%OB>|VcOwXhzR!4rMYk^kEB=c*8$(bY)LTzZ5IVaD>N>cQ6_q`Sgh)_i7iV8lj zn*NmCYm^WQU{UweN1|MR#?Hpmb}+{T93T}co3R}gO%eS4f*@R^J{G^b8Vq1ffPVhx z<3g>gQ>EQ)bM~V9yA@CfdlMBQ;xOA?=lzgXJE(%>aLRmj?TIC;hvY`@zQ34Le8n)g zDSS(S?<&v5V_b5D!P3J3Y@(pMP-N^@xWC0oVY!p)_*c&cJ5E7WRP;WTss?zbZSG zjEG<@hs;UET7qB`s$Vr%?#ks=EdXi*TGl^u>sS-Xa$8xF5XVUZR%Oo7Wzyx*me?qu70YKiq@{{3 zWSSz6sBLSNYZOwnF=MDWe*$z)n=&j<86@&QMWM!hSGC~2=)wk~`D^AmWF~vf*ZaL| zF^K(N@$3C!?YWave*A(IDi$i&x1Hs)HkxBd6fRgFn^=j>z@`)jv}-{juAj55i-gT! zL!cC7H*#z=Swl`uck8dLE{XP6%3ZBQcd!+`KX0-&HC(YskoM>c5<0Fu8E{SCpn-k| z?t7lwip2pil8yJr-A?H^iG^WLCrACFDaE|XjqT+-)mYXRHjDDG8F4vlaWuhI1lBC; zrw`~Ywl$s)ZN^Ku_0zBqM886Vc0LIugL)a`yhgB~>=r)mu@=+5d%X#SJbH5;VI8r3 z+(lnSt2>63Cvx)fyhR%gLb^6)HzfQsCE!(Nv((>yX;u~Vk_@OjYCVdKukn_>Q49 zyQ^o?;3of%Yr$VtqDIrHshcZS24;K4AGi%D}@WsM=gu7o(=|Lz5d zhG8G;RkD2{;Mk)SlSJ{4^RVA)nzE79kt2Yh3t~WE1YerA#U8DHDCR#`;*75!~F(JTt6bi|eEJ#gVTU%6k^~COkPOQSwkrtXu z|NQubF%%BN2ER)DD*SW-SLJ(qRNX0ve{<##A*vw~j430RB`p@(FLF|Jo*bsh`A^^R zk=3<~vwB_DBF>L!+bJf8UL&jS%nL>l)e)fAU>no<=+)n}D9?%igaG1hkMg8xQ4#>5 zru3;zYm)dsv-8u#<16+3nULiS@=~q%SX-Al&u1P8gFPY^n%>&)2hSN0#awgUB+)e| zr<*aIWg%8RZ_3+9{)O@Ps(`3W3B!0PEmD|h+`L|)vqynTBP%1b`NP=$5+D45_JGz%4Rha<5*FNky!hH{lo1&t&vR{04RuK9>BY&i!KHUkX;3X6|?YEfqR2! zR<93NQdHc#AhG}|b$rgv;}!ja%Fkw`BGY(t9kQebG-rM82X5lO+xf@m2m*Pf7Osa` z6|A)g^}+x^lN5Pb@s&jqijbNTTIe{kf1H!Kp2!gse$acT2nZlHh1 zW39w}ZIQBYq-wW(r5rFc?BGiYObvyA1SqR1i}NZE#3Q^sh)mrWaUvi+kOn6va)Sbt zm5RSECJ3Y~YV^8`ivW^5?gQJ+T@1Gf_Xi;Ur{Cu497t=NYSidav|DCS{K-D?|a z)uRgNDYo+AMg+UhO7x+b6cB&+uKgJ-i~GFy7LB{p3u3OaySvuIESHLprzZt!Q~MDX zAMk$D8ZsHd;krgtCX;is$DR5@^uEn0Hs5ZUN6J^-D zSmPmg`VL;)BJ><3rz z3jF3=?*5?+%i)Cgt+(u9U?&i>v(4MKFg0I}6uOzfcMBW|5fHR{zRp7?`9LTFx#E52E zR*9YaUxi{pqVb8qN~Ol}c&yedbaOud-BBKPDT4t?gmH8h1P}(=CIu4W?4@9(>c$eA z$ucHNEwaN&ArYF+2wJBZv2RoiF)Q`EZ6TdLEJoj0&@uY8gvDGg(W%?|j$hU5`e9OX^ghwpqx$KaD zi^qH|*m|2CMryYQ6z*P6ug%HbUoLF_nC4E%;DKKoUw!S{#*4W?2C5iXK*e9$nll00 zUl*N3`?~0)SF4-;Czjl21feY}n9fxUMb7Ikuk5TBuOdUg zQD&8~!V50!+beo_QAc&;ag`cCm1+>f1xl(sD(s%71X`b*URloW2RNxA)QOR+yguyV zdDE9Ow!2i+@&f(1_wZbq3mZHmi>-xX_S${^vEz1FmR>!+__@OVVZugb>$p3v00%+g zDgG%rWN|8hVK9FY89!O8^dSaN^dlE8#Xlp3Arv*2SvF7HKyu=R&Vp?}3-kHRq(>z}UmxR20 zJ=f+WHNfb+9`uE7jY&o+j4_tY5tkKpMY{F)5*}jd!grY2AX;1^#X%4pG^X?7+>h(DF1?y6O~R=Oek;XkRkAetZl zG=DCusR_XY{td3sS=be|{@}+(9pdho$&JXZYq8#J+Ppv{i2As zeR1Zk;&qi3OJN0#AF%#Tf$(iQM^xUbD8HHe1H9h0z za{PG&5u5on@zp(3Q=nbjPPe9ZDTg838m5oVoaRTCez=|=%ud`OAy8eq^GDt$ruGG3 zv&o?;9Ftk_NrsG>=P(@xS(H!+uc-uu9{4k&GBfUDLxhIET4_U+!`d(j1CrQ8;wih$ z>t|%j)yM7{U1ADSlHrg1b8^_vNtXe5^S&zfvl3%|93U@ zDfZZ_i8*S^&Fu+8s&jGbHEEZH3-FPIBk z8(a}$f16oTo3kI1KD1-%c51B$^9c77v?ByaE>0G%cSKRw$9kS`#ESc>>N&HLkZ@NN zDl=RkK3;x6hCXw=W5(qN(rvCUe!DdLjXslqK_}o&eA_jvmbq6L`1Hf$ss5mK4hI3+@oNilFH zJq5&cyI3)hj}Lc%kRfkQ9*cnJnz^{nDG?LnD_6Bi*gA8W?k4z;gvp%aF--eJD4?B! ze9SsnoEO|QHutLA&j(SNk(!=FvqOCdNb3;q*Mh@ev|j#|m(6iW2{{5w7KD3bs{Zc# z`2Lw!?|l1Ni#{CzNePdI0*j0E2NG={BKjx4pjz+sIbm1)=reSIJn&Qnc=d?5kyW#2 z)tsGI+!KGCX^4sA>l4nQY7U$2n!e45co~4@X0S`zpLV;TBsDEz*l;bE9*tYpK$O_t zDX6s%6o^^@O}I}H@muhuWtDXHi;DY`poU4O194NEte z2kLP`PUthbJ(n#p4`8*Bw*3@DP{EbG*m?7KK7xJYwQV_=Ujx&5En4? zUT7ha2^21AQdIq(QY4B*c6?xyhi)$}W3L>O?*}sm^`a z%79#%kIUK6^Ch1z>sA7@O9FN~4b=uHy4SOU&{W?X%Qv=u`8ubq27rlCJ{{bO< zIIpSphY7h;uJ(`ht&D7nm=mQ3@JV@GbmUAl9DLQpJzd*g86EiYj>m%O>ia-wok|&6 zJy=-2t~{?Hw%o6nFX;Db>JXn@J@xf|rNE|zXX=EN`RXkQep^Qcn^~oE$Rc3V#Uk?h z;dRB#qW1keBKie)mCYgQP>mLc>+sTS!(|4Wr~6MoyX30m;2_Jha_QR!<(k1P{_dxi zW)S4S!l3-boGGGa3d6sFPC!~0(e{~PN!(3gcRiaR*~wVZyu{Nx=GHCBLTEM~|7Y(# z%`90c;`NiOQzJ`iIJdCQkCdEbPxi-!fGtit-uPL{TkGGdHKMemo5}l?OoS)_Z!g3W zc;skciy|)ElhgT}H3^Yf*@KB*s!zI%Sp1Mso}^k3VaTNw=DIvxKxK6XW_h?K595us z)rS7-Yv%K_D0Jo0id^o|{W-mTYt#$s3Q2WIj;<1Zf{4)IT>z4C5da2Kj=zdF@Et!P zTe^k{n{`?w)yaO4UzBr@?|J4UQ346(UR6`NuDLm%oN3SWPZ29s3_hPd>7HGi-b}() zPmx-`eJ*Ex6QD4UV!!|@rN#>y^#-qZ8h%Enuej}-o`os>?dkQr=dCLOo5EF?l% zQ&GsN#_jK2SFREyDPjiOUqY~%Q?wLZJk$uvt5c_3+n-xVTp_(UP!#G7b*dHh-r~|-4U3kb7wdE zvH=$7A&fhLGzIcsitH3?Zxt^JbSMa7PK^2{5oH#A zP?yEV#<*gtc(@WNWru0=e~5P-rEng!`vn-*-&u{RP9qh!6OY zv*uO!o8WTl-(UQL@V$c5Ul0FtCeFDNNEz*R1XB9A+f5csfBEmX|5gHCM|6W-K>o!8 zH-6n^An#3rDPA0WggUMWE5JkcFNe*}+$`tOF`Y}HaC@heYb>$+bJd$3M7Z~VKg}|5 z)%=D5AqC9nZ1@o;4t`+6htvrhvN^+Itz-1)xFu)vNi5QXrTv30MSZ#aEMxkwYiUYt z7#jX^2h31j2)fJY6a4xA?)u+<^?&_LoCvCp5jd*PAIvs{9Y{|SDkx9GCVL&L_K=@> zVI<3gFjDiudh&{YLPAdRV0sy4n)Te7ltI()?BFxr<#6Zw{fgUJtor|RU&jvae<6U6 zf$7|TcH3h8y99ut&3FzAHItLmjsp_}{V(+SB=o%Kygxxc6(R~5;9}7SidBQJv}T7V zU5^W4&2mIfD@bq`0crW4Fx-5SR!DQ_gnZpIMAJ z)Qg_*8J5M>j|@Q9+4N#-YJR(9kA>i{jQ2rX(yQ1h<#kBiH7_0os*Co*?Y2q?+h)avWfaZbyqjm2z4;M@1qEm{Tj6_0o zN@;FfRaHrMHe4%z5?Du8-z2BaZsf7(w}$gch&G?RLVDqQElEEym~L4%ohSt6b-5ib z*S(WHcAfAmQGOqxOQ!cvF0$S>BNJDSUnE{XtRv4`izSjsz2N)>(5AL8Ag6U7bEuA@ zk!n%ca~4&#(p&H55148MwB|g~xq80v`94pHXLWkCoGu^2XtoMl;;jOFV51pnZo{TnY(ezByS-IFG_^`I{HMuC)DKE6=OO!u8*MT7x;db~ zzY8O?JLd>JTU0!_ZRG0qr=<1S`Q@&@l?h{F7*`YkKr$h-56hdZejUe>I2;RIi_sFF zFoyRy`*Wv|&2E-VvRGMTC*c+czIpA&@f5Y3i?w-Mj- zwGLOmSNouHv3Ep+w7Xg{z01vqN9>NrLUa@+o2`$7gq^AaUx5Dr2gn{_CLz6n=koBH z6}P2fAr2_=H^j@H@;5xU&INvQ(&folqGAUT!cpr8zeLA`SvQf<5zkYgk9nK5V^7Kr z1VD&1phmax;qSiB>PO6P;ROW* zP*DOVVsDqSCvsVw)@srphc(=e#us<l-M@S#@5g(gTT?~Ya*T06SgcS z#yjIZo|bVCptR^ZtIsc~J@~D0%9Y7KdECK6qwxiu9w&r3eK%B=>9K?*H$PrNEha%( zNBE4VdJNaOk-s7NbQ~z(Rf=3ZkQ3ky>-Ku@@5diP3ypBMat0hY-*cPOXtXH*CJeN0 zx}RVqDY}|~)ogZKoE}X~4O6hw`8vy1fw2f){9X-@&EYeu5;@!|6IZ!4hm`Wc@tVbD z1DDr&A?WK?S5S)MitqZBMC=4!*iKyIf&!6{G0qJx1XS(T^kVCnd}SycUYc@!5tkMh_LzM^Jrt--o4a$?@IpvW&b(W0+v_TXHkUiy zdDyaB_Bpk*#b|yE|9!LUM?`Q&DNOqGwx#oV7XO7`W#BpV&&#fBhU_}jT^FdkVg;8_ zqg!)aWhiTXf=75rDnY!k2&0_VnrKgms@49AfW5tE{&(@ItMS{Orbv77i@L^J5F(O8 z0$IGxw$N4O9%qHEAalwX1vE4Xw2@VE0UJeA_01M=-ta>SLHA)xnV^EV+q$9UK|lrn z8d4)c${Fg_>mwnlQblq=xy_DX?V-@&otMaM>j+-gy_uxXza+4W6i$6#tFX(c+N@vr zfy&~Oe_C>-u^)SbB-Yw}vGKL0x>-4}No#zAb+(yy{zoh5<7s1Xt)xcQ#&gymeJ@9k z&?Ye8)V9jcc&s5b0&hTC-bUNu@j3a&+tP&duC9o}tea09;wc;jge z#{AV6Wf{#%etskI-B26R+md!H_Z|!5m&g6I;!jEMgJ0*XT&7$AK#TX47KS zNblll>}%omBGYj`8lKmKaS7gAlrAirGztlT$Y=Ed(-pNX&^w!z6AXY{A6xl)U0~&@ zR)j|h;ZIQF-EDQjXUCE+GWZ~`0S zzXc%zx)F;+GZoEiN6lr}m!SEUP{3mM+2AwA6dzDFD%ZZ4)zYo1lHz@%tjPcYm|ESC zbD-J`Bmag2T24btP1U=?!@XV&fk{Jf;X!;5EcSpN_nnsAVYIv%7aGC=`siZC3`2p% zbO@UczCB5Ymoanm)2taFi7()iAA!Nh{Aosf;9!-?-@yW`U(NM3n7wTIIt1VsGqew* zfW;+b*;R9`J2q5}zw8xZc#S~=O493$)4?perHIh2!$Hh9ZgM!uo1Cz76qSBzPkVOT zkwyRJ`U?pbx7+_VU7_K}+Wg#qGD1}&reQ=J z%&X^n^VA&5M#>831P*BItc0@*Mo2_`5o~@u^Vl@}Ua{NbW4`};kmwU-INvvFa|ro@ z-B|5Z`R`Qp@0-)CQoVWF?1qoXXc`_sZ$z&?lG@h4p*#O9-JSwDuqxGr8x6vkGBU(u zZSSART}~t0?tUX4FYp3Kdf-putA>9(W}Dfaly`G`X?&$!l7~tNa$F8)OQGAAqH*o96oQLI+e5{|_prhs$cQzJMGkuu82cxZVTJvSmVarG#3YdQGwy6w< zK(+DyyiKoPPkNqzYw>;RC%T~!2}R6XYJEYP%*Muc_F78Crd*_uz(@++nVXW zBqQW;$Rzj|Q_ZsAOcg!lGxnY+4V#Jk6!z6+l*S8|{cbrP;izJ$aK6=jk}8N6!8^X1 z(i)X{H`1Ag76R4I{d<1wSCo|*;(Ogm2}4Q!VwSZ_hhf2L8@&kMZGX@%lGcUZd{5f9 z^ToSW-Imah(>$N3uV)I3UVCf~%^cqJ&rsNPR{DwNVkS0Yau>ifO4@ zDEdYwHIB$8rd9zBN;HFEY6l0Z{&2vMCmg!B&;!?n{DoL;BlHn78y#Twcw-0JyM0Q-5K~t z97>&F-I-?zTY1@ad7f^mlX*(aQA^zViko`XX{MDsmhX8dUqXO;jRTkLCi`viFxJe2 zQ{j1kKLzm;cz^^-h;^7+zc3({DiyY$mhQ5^JyU0x^8Qrd+XO@Ez?zrs_+fKK zy||ABw6{E21LQ1ZA-TtRkxkvlk(sv4HApvYvh~a z!05-2B+OJ4`-3Rv#XpN zi#B(y<+kUwwr2@ht^0)oq8y#~*QxtQXWdi5tNE*~95nkQM_R9z?OEHt0<*8Pn<^%O z_jM+zi|@EzgW?ajb}phw2>ttiA$buH9R`4~tbA+vmKMlLt(k7NWo$rsO{K4um21Z* zQFC)sAE2?mun|t|1X5D!57F0?Bpi65{hL+I)x}L|&NTgO&oG(P8Y(!vBSZpS+z%9s zH_G+eCS~p@zgyvRV#^o06iM6gOg@qk%&BZNOWA+vj(&JdgUnf+e=ETOy@wHyX!5jU zV=D&u|G-Yny4$gdl3W0QoX-;4XIxugf7V(}+{Bb{04$H64wEuusAoD^`KUstdqVI#G5xsS0{NOABWIwXi;>c|wSM3}Gg(JC7p_yAtDJ_Qn+Z zm`Iu{VzPSDKfKFITURw*dwdh9in?jA5P7DCF)*Q*GrP-BVZ7ZS=>2URXpmtUQT^qz z`yO36hfB)Q(CF%X2ZPHtQ*k+#+?;{YUkD$fIsOeB3ZwrznbSOrW2MrN3 zkd3J?m>KyJ`JS@s4ZHXD)gS8sRE0h@cO;#pFCM{vxgWk%^JlneqdZ_va`$T z3$?i+o4zGc^9PiMm~Ixnu2+GlXM34Jc2^%`GQraauU= z|D=wO_43N#2LP_a_C@gTPmdD7cM7}L;K@1dT7xtHE^??<8BqBN0y|qass_#o@V8V_ zv2!ZBm}H|cK0mZu1Eb3@MNVgpPR8HfZab$Fko5RHzwn0N&K;i6Y46NU1**!y=piH& z&P@@Z10~SEDz%?(kP2;#yITGKCJE_cGEf(>y9jaBI{x_xjDvtOl<3@6V!ZMpkuk&N zXUnz?gOrbQI0TqKl=)DVU(SU-h)JdHB{oEsvt_mw*qILqQE?wuielDm*alMx)^+{3 zWjo?9duX06DRT!;S~wW|auI05UwaEhLQ<2COZz&X{$i#|#I&)rScb1tDtz8wb=y>R z1W2+N_tlSH@*U4TRciay)ekx)-Y(PkB|X+wc>YYJKY#9`xsU3#gU2#2(wiAu_#4td z@VUM;9V&wyw+mLmvAIAc3f(c`@hGf-C^WM6*w?beBbk}9x;%pHuc)cL8XR!ap2TOl z*=39G&v=l!_$KYOnHNtJhs|jj)|_s7G;>Q^S_Ux|Faesx*eVccsoBw?qe}z2? z>~DNhV72GzJk2@fzwq7yh|jpnn+cw}F7>ZZ7hE|Vn;*aui$=2UiyyAb9W?f0>DBG8 zs1_vLV~dzl9;O`;%_fUKKO{|!7=SVMSw*>>SBE4$3NYRHf60SflKMa9L25DnPkE3$ z|NA^h?Z^Km53;AanEigj7pQNOSK2#N_2;4BPu;f<%`&pH)HC_5>Pg{k+(D*{Kn4~r zF$a=R=cA0&3u1JZ8kSS_MEXh{x^-&1cdRpg+Y{6&8AP?f=QgrNI)ypjuJOEMkIetU z+Fu66^#$#t=-?LI9fG^N26xwB!Gk*l88oeIkdl+XI{-A9C;;Ou2|W?465T_DAltMUa>0U_20f;Lf@>h`BL+; zVS37@dztaT@R<4ee~}`*(zwzn0NRm>(X*a%8kp3T?*!CR8KVoSK}7@%cI!M2AKYg{ zE0Y;MJ(zkiu+_k$2^POthSMP2{?p+_4>w$gYB)T>yl1K>V*wJ|&|8;kEA8yuO0SyR z1pAk8Eh^i<^}l*;QD>GAU$q5Sm6shWSDfc;ynae-YzNWAcwBZXh=2RTt|hc7l`MFidLcMdxQHi9#ce6KGxuw(rbGGAP0W>I5#ESMrP z^Nm2p6LqZelTNb&q!R*M9zdLvtmwQ#Ty7vR*EqC|@-%$p5_^umVHX^-0e z|H;Vg=UjwMg&A1KJj|=9^|(PI6=9oQi-%Hk2i*-Sf2PUbe=j2Sc23}fEbDr|NDdX? zAB$2iBVq-Rof$_O`f(LkP>OIoNWBk^(PbWrxf#e2;c)x|(}^T`ti_C;Uk7VcULmtjm3O=Zg{%CVg8q1kHUZcI|iot zly-)8e`KN=n)^zr?M6qKqZjl3O@z5oiSDd_U&evmXh67Jgsls1vE33o1P z7>j7ebrZt^%9w}ST@v7}D}ELI22_rYRX(D!dT6W^+GrkzEgl>sp~s;^0?06KfW|*< zl#p66e`(9_^P|udV|31PN&Xt<*>&&SnvZSJR*#-zz1c>XkwcLg3GeriL$?9(yB0le zjvO9R{F5I3T;961W8VUUSnt+7p*51b9%f3FFRYJbgxyq?%G;!Z3Z8ogS;k%W{TGLT z@7uc$7-`q*mEBeHf%IxiXJ^hGg7SVK#s|wEfQ7&~b!5Aaxb|v|}lj{kr;5o=AePs^86^GvTTtbaX z*Vp?Lc0KISaQ5W2|M)dx0;T45{pw>7yv4590ix_g=SW9;Y0=4WS!mGk{t15{%6}71 zm;{=K_njI|m&?~ce*5v|k(Z)?%kIk{#JY^OD4;;**|;)pvEtwX#%xPgF!w^ML%L@) ze2f$|nGB%jy5Do~4>Xvhm4pY#>8h&}uQn{HD9Qa15?9!0ez!>vy6e6(s?+&=q|~lm zwz~hzfXd``Q*G3(*J<4kDu@uyAP^<{2)kt1PM+#@hW?;2e!3Go(}10w?9~KY%uBmlTWD{|&AuRoVX+*R!4R{}0!*J=#t4 zB0ERwyJR7<9s~OFGC4E=GFnJ_%}_&Zp+Uw@?t<$eZCbh$tKW4KuO2)AuDr!grQ$3OI8~ex-Hlw;V=h}@$e)Acc6xBGnKHNOH#!&#Kv9}bg zedGR0FiHUu&=5t(TwHA4KPJH4#2XML&XAnt;Q{2}Y&i=~ZWn7)Bjp30TUN{f6t6a1 z{P$^T4W)TMlLkzMh|S&;fMs9}i2Q z@r9{5HkpVkzpD!0uh0cQ--^pIR$s$3X+C-N1^sd{^nQoHg}Z0j-LhG^sj4DFAmBW7 z9|cTLkQ&l1N&6xHWmi%O;)dpmgO`9mr2_=NhA17)*p+W{V+ptb5)4=8X0z?ro8sle zT?c4?7Ywh#n5cWzG-_j(p!xrTrl z#SM2hO>8L(>JKD@ij06%{MmzD|Hu?4O*G~urYw`K!AEFRW~?8Z|LF6! zxn}g4sz2x9(96h6o%edhI(b7Q;1l=}Gw zpyA^5xg#bHE0=ydCm_N?a^v8T^_1p2mGfl6!a1%t(}O=J=n1YlgPsRB7kALVx17z9 zW@j}CrW^?sZEzf4L>@I#*QioAg#MfEk72ECY`xfXL{a^023Bv4$s4UEXn62o9=J|X zVA`?y$2A_TZDdN!sQ_0;HoV8p50jcuCaW$do7hnxb}QfiiGU7DMrNiaJkOJ{+@1=5 zp&BW7ja*|J33(oy>C4%-5-?~4{82AL^+>*P@Be(;JMB1b6){ht#xU9bE}L72K?~Sb zIfi$2Pex}(VXt~ji_f}KYvbzvGUrJ#E(iGkrI|wg=PmH0zPuw0@=R^;;X~axGr(DD zgOO8-FsRGp<}wm?4>QksO4f`eMS?ty@0W^yc;OygwgVQylPNXsXL~htu!S!`*N<6k z^mn_h35P>)E??Q;0HR=~k6O}Sqq8H^!*eiH`K5Ib5-=SSB{C5C+~qW(b%2mdmZqIb z9!s0hB^gUxD_Z|asVOFaqN5vL%gIbey_yO4-Q)6l~rkWJ{h%I=X|g_0f!lRrIuuoqTvt_SB%>S5QR8*GBXn(tyKfSh~llR zLEW1Pd3r)dZxa{zp z8VO)M&Kcu%ujqVd+L-7cV$VW)Jmf8&RvCh6Uf9EbmZ6CpOyYT9io@HFz9Spe~6k)4%nEmOP}(<8BodAdpT}h zlZxi>I3eY`*$gEyz}qv8p}d?EF-*?Hxm!I+vzH?eR-=;yCndhSY|Zm1ak89#Y;R2A zeze^6-#jjRjo(d0ZN8qPW9l^9S0wT%BT0($!J%{%hi$@>g`&V)R!`ICI{XCl4xtSr zjQO`dbi=WXr#|a0x5zEvWp4f~;dHtbon{Nx{ZF<*a=UtgL{nQYDP2Fwn_+@N&^fG} z$T--;FE$~cZbOlxS4;TYq#AVFdjVl^QAbqNsWswUJO<{R9u6CY;kx6FwD>4#T>N?m zzXK`w{fcRr4u_!6w7^Q*{&r1>pyX?5ap~SK%Ghlpk2B}1F72F`x8U`xbKgneI4>zl z3H9amO_C?H*lOvVZXX%Tr1`y$(dBOAS{BRE?qweY;JAuLf6g2AXB-yz`#1#P8p37k z)x^FSRMa<{cY~q@0F=Dg3t4?&EF9h=v zG4Rd_s+Rj{O}I&CPAtvYf9JsQ;5Ec7sT;W~7E%Io7>fod8XvBuHjN6m<-Q7NqY@xL@w6*UE+{o#LF zKYW_918HF2^td>5b+FDS{rxrh{EMS9Lig3%khJqYpS9Yl!`41_>0-qySW4+2FVsYj zE``3h4JgF9_}e8sbvYXjumOg&)PEr%Gq6@GLs{qD&e+J{8zuwv@U`-Db+pJSTZvG~ zC1<7OLOG!DT58jv%!bq1YHZbpW*!@BSC$}DB4f{UQRyyCni&Yx+kCvfls5snH-bIF zUi=;>Il9VB&iX%7JC$XxI{%9KtBBF&K23jK5E*Q+5f*G0gDv=~3n zr~I)hFXGTT8)1<=I?H_ddbnHVCNlZCd!%gP6<(Gj$-?yP{%=XPPPQp>in#&qzsC&U0w&P3nk^+%+iusLN4#yT_R1F z{LaF)PN#jVfC?oblPvw4k5d)5QwNFF#KpPryOyv0Z_y9 zZsW^_Uwh;pHs?O?uEkN8UYdWEhzAbT4&OQkinbu zKMbwHNyX|ln0RXh#6UyK(@uRYc8m3)LR{#L7N^33ewvVAo`gvqImRzmV<#d+b#HoAd2=Lt<+V1 z=w|$CVJ?LYO-o8e&3q6fAk6+gHyO)CT5V|Z?v;xn)UJSNGB+^t^QrOMxIyjkG^(I!CTk+1^u;OxrPBxW?eV)I?}fNZ<~ z^Hthm#n;X03>>j1$xL&fo-v8?0J7CM-@RaIL(Q(21hh-@s5TpplZ#hZe1<`tRGyz2 zWo<04_IoxI#I!n+^Gi|845qM8!mg!gitPLb{@H{)^d7+M|gvVzQ@ zrM^*xgG1jlZKq@^S6dcA59^=k(AhndcTp+KJ|I`^;O#Ke6l?INoWb?>s9R4R(pDCh zdX*xrg_0?_)9M*(8@AA(TZ$4#T(kfMm>Vw7UdX-*d>d=zf)0>_;ly4p)mS)$Sz5Gz z;3!&HNKh+JXI`N6r3eNw!wRMPsqz!8$v_P|2?*=e&iHqjt9>`A%YuoNxIR6k$Qjud z?B(f6hWw%C>=OZD<6`g{gG>6_vbBjTmKZoxU{Wqe_<%&4!1YnMw16;?W3~=7 z31fm+No2m-BsYk%45pffv{)QqlF;GIUY(n)XezCP@aK(A=Twme0Q<6p*r=gT&^TP` zt-p1rQq*bH2c+ogXcUiG>x_a8{^86h^(Ef1DDeW-z44s$&y1K;EW0@k%?Ok$K~=UR zZuvZTLLC%m=W3%0JPzb|?*a=pNRG=!U(+h5U&!VR9bGnP;eoT^Df`*$3pdK0EO zW%Fk^;D5sxNwuKU!yEV*#m`H<*B&C%wH_)P(CwmrS%E9Kg$OJpd_Xxr-vb^7NrP+F zb;aRcJt>Zn58cTNZQtVOs9IFRHpBz5MKZZLL zyMYTY7v+ZaS6rSqF4cmk39&2zSMgL+vKNK|AlGriuZ;B~{srD5X&w*3yw@3gu zG?*Lb-WRO=P4)EXY6I>y8yk2z{Y?KN3gA ztZ0^a)FA?g^!nK`+`Yo^PKjPS(G)nLm4VdUbUMa8772o1aDk7nkHkw^$QR{k8Sg$7 zvI6@4E3mx0OZVEUy%UW%4>>_TWml4k+I~6RYBWGKPYC%i%Y!eEnY5vH-&ye z5CsXH?Nw>cWt!KIcU8iR>4}Ekjul|Jc!haI9Cmnr%X9Frh6kv5$+gXE@khwUYkbr) z9hRTF0)M6ualf~$I<3U3xY60=SJN)B>R_1I8_%qB%$v`r7=8r+&o?`%Tc+vnZb$Lw znYzZN)halJI(0%g3afmD4|&zshXu=PTT=}4FTOM`;#hs(ixJRs zB?`%mkp==4HmVWq7(0pi(g``$_-Ey;if_y_#+wD{6MIpC4=Y5ZFve5pRWtNv!Ej?O!$1RA>7ecW4&j`afrYBF%N9t_-$-3nGt*x|r*kkF z3Pp5Id_nl(Lh{h7DI{7E8ik_1as96_OW-d#1X@S&6tRWXc6$^(m1UMtGBpGmRMFIF zIs1e61B|w>k<(|(nn-7XG1+KO`z4}wlXmIiYtr)IR-qzcVKxez;@uP_H9J0lDi%;UI(-2P`t-xJG%0^PHH6B2 zD)(S>_!UN*V)lwMgs7Z=&vjd`;nz$l?edAXT}!A0Xg3;YfTz&YQY3g3&Q)n$F{jp%P9sC)^6kbU@@rgrMTCTDQ@Zu}H;Xdz z4MO8YihtpT<`Iu?To>T#g!?tUD@K9TTewc*(n>iqB>I?+q)Vmqd^&UMR_{H&I8dV3 zrT2EpL($vUp$a0}MuW~^fAQkx)018X3+l@6DBP}ov-{^QazMp>AL-j)(lbm-H5*Gy zt{l5=H9N&oT|Uc>ZMhwGxr|?0PnOQ*ez`3vY-nQP#c(oSYuSFvRh79%KgsV)K>D(s z-K$@)q}rhTGbpmhRlmGNxn`)HaSk;I*F*Haah#)F#$lrT=Ww;f2b5 z#4kv4!Cx{qO8;{`*Q*pc%yeK*UQ82Ofwcah*d>G+CQSUf=JG3`6|B!C3?Xl+a7g(+ z-vC;DU(cjkj&q>K0fpEa&|Zs!V39KG_nO~FPlAqfdAt&~?E68(O+gAI(~t%5IeboX z@L1?=3=&Kf9lL#U%q=pmB#6ZIUuVPSb!uYmx?QR!yT7=NR}(8u!R2#*$U| z4DQ6`sOgFQubGA#UtrM!TG|0HOja{hxpwowOG8!_2!Bm|!8LuA(z>lURu0ITx;q*c z!YgwX*bTQQ6)K1n>eIkpJICq>Vr>FS4pCFkSJIYAiz6J}yQ z!)3m-iTl>N+HS^^jtm}EM=I9(0Lba)+@$%4Y zw+UvR#`}v)(-$5^E=Kr;ndl0bZc?2Gz8`Z_!p&T(GJKsmbLJB+$BrWCagkqHD7oty zs#{$z>#`v7u4;@od48*VJ1yMW>9UI^1U!LS9Qx&(gLyffjmt9LJ5CRLdCC%)Z_82L z4@UvDMAz@iYe`dASMy{YzrX)NJ>J`N+z#u!^mIAt*x9Hc40crs&Gk^Y#|FrFTHz?q`S$fAm0&~Q<++c^x+z!#<2%mS@kGZ@GL<7t+tF7C@1rkoo3k(J z5+HglcRq#va;7GdFo;40?Im4M0C6Y7E4YDfy8-Z|}5e zbkIea`RlF}is4Y;&7QGNt+j?8uqhc^v-#Eh$v;Y5D<=!Snh&3N0aWg>sNo3bbT61f zi%j@@Zepq%HmP-h}_D^`hkK{qZ)JK}&{v`F4JWw8}lN`r2Z{#t(}&h7c>nHBhCrq-yh7 zL!#7B|6pvhUjw0gq5vx@bIg0HVcE0dwfMILWr2I%?ffH>`q9-E53AIX;C@?sO9VZS z(m$aQ*uQC^UlZui-Q|wu&wMC0U%9G#jN|l~xnqcY<*v?)?6V!|#`1-e!at+?s95OX zFCw0%oYLlP|E3sz4vPBb`+nDUI&sl`>&FM`-2WszL>z1ye=P4#XJ&l zh}XZ9GQdQnVZG$!tu3?$@cubQgfk+p?tK>hpy9ePpnjJA(bp# zuF{$xGg-E%Dq7ovrTn|z_nOK_CJc_`91@ep#sSV&1O&b!A~fniolcxTdi;EedxC+{i$`6OI23h><1&hUNk4!4@d3_C$Z%7>ex#EP8k76149O;;6?+Wg|z%Yjk-StZMQ5tBZvdBV#4 zU^VW5k)SsnH&?L^RAY3c(G|J4nEreMz4zGY(E*drY1dt-|j2)ayzYxBe8LG zQ(0V`#pg{`FG2I2|K<1ZhbEz#f~C&xM7J_w+h`(gS4;hbxnji4uN7XApHHxnvKC%2 zM4ctY!S4nJ;iocorreIb3|CWiUe%Nr*87dW$KRca6SS0sg~Z=p1xm^|>I>d)`|3WZ zCK9yWu6B%wv57DD5$mjhWX&T>j$XATM5#>(+=W4u4426BXn|?v{EAB( z0|Sd$0jWknRr+3w2VX<6|QuPjmdr_c#I;V?!kYeKBP_A@6%<2RsVVaeYYd`SsO7xhiwY z{S+)}6~Y0UW}+KyJGy4cco8{$YWS`uCF^Ap_|Mp!&E{O2DH3}n-hWc zVuz2qZ$clE`X%0?!zpTv9#3~1M@4?OC-vxE)?!%PUAYuM@iUx1Z7{D0C1=m-&`&5B z5NL&_Jvm|i-=Zn=*+I>?I6%kTuE_NkHR6s8x<5R?5|$3>l-W>PcxabhOa-6QmCS*K z(v>>_MkCOR_DgB&d|Kf5IRDK8`)@onWD91vx&iO~G+r0tCM|?vGJ=8OLla9BcLks` zH|KzLjndfr1NnhJn`F@3Sq-t4OS2PdqyIt=zgN8ORF(?U2Lq>S>%C(-UkuU;L_iKZ z`RVFse#w0kT8xYA9N4O>JXER*>7LL1pNucJUfQx)5(xtwDf4#EqgYlGxN7=Ag=FIM z%CAPY1G?lAl#X9=VjwE9_8ybPF;zm9NsdGzw4BYJYPCp?zRr(xnGNj6@o%X+zqAis zdcH~I6LZtqjZt{e(svuNRky>a@;?x;6)sJ{(#L|VPJmPI39CJtKk8!Q)pVxH_tq=Eh39Cw~yHpwBh zM8o4LM_;*eKkWQb<{PN>v*Xdb9$y_g*1n4#QdCY>rd9LzA9l)yGV}oS00PQ)MPJS5(3&2~ z{rS}j0YKl`RW^7h{3uGwTr1i7GygbiGY&^kE{RM^muXVi0GVH~G^|SZ4Er1b4QRad zTXOkGFOPrx2@085zZn9*!V&!?_ETGYfeNi#H^?MDzp$-jnx`)mHR~*@>nLDlVc_DU ztCVqxT#*{>^f|24{rtfruVFTn5k30aE>#}M^@LKN^c7@139$u_dM;N3Nk=8;_~oMF ziNOn%)K(lq%jrc-p01yPV#;V{Ls&w#vOn}m^PIP;+;m;C%G36|X=-Sy%k;J+7s~ss zop1SjX-XBCzsH)%F;o?S!rlmR{`S{rzH?dQHl_g*|zAYS(6|-oOr?06N zmq-MBS-%Mq@C~o{L`VZp#iZ3({+qv{fPFZ*yt=S>VYRJS_5@zy5ra{wvoDS>?o&O6KMZpbA>*_ zg1E4t)6|ku2bi;yl`NVSk=;^n)0*9ALZ@?~ta9LLwessy3Wr9IK=H~_^@kn$uSA}E z?QMI;t}=MYk5o;IDyl!rb*#wiW)BK}xnE$Mts~u!viP}NmGom?b$MJiI2i|IDQVG8 z$VT(k`@J2Ka-YXKbnNBvJ>A@c&b(q%h3$4r$UnpbJJ!!DGy*krGt&S3dN`jE>aKV@ z5%tks(jhc@@nD zNpx&2mS-WP+{E&B zeff*9{BmHKdoitI@wpFJ8w!E(7SJs(tzr~mI_#U-SZlVeIx9QD0xrw(Rj?$4trdBT z$fpR#!+K%JQ$!M4VN0vg61caJ}_hzG-X4{qgyj z4gXlEf_izFd(fX`wLrc?ICnOVt09>~kMsXNqb%AHPzfD;08#X=b07C_-wb_M|Gg-M zFy0SLYbzgO?PFsVRHvH%TZ?ij7-)pKzFnuKaPbM$<&|GUZ_9Ww|UaIfutCA;G*0$#L; zMupF*32znMSl!(hlVw6c5-|Qhe_902cm97eSQ$zwew`Fwy}|*mGwn~*G9BOkuU-G2 z1NwjZO<@jre`MJ!JzXcD{DdX)SW5zV1 zLbwh>cbAUX4aG);><5t&%%PtOPJ62%|MT=vj&Q=jr)EHuyOuAY+`%R~vn^ud{$BjH zA(DLaxZ`MF;V=7n(nqN+N|SvyuSnc$lp+#J@1Nlue#Pv>cTQAt_bdxeR81SKH1Y($ z1+@_v<_`qVl?G{nZ0hgz3T{vYs_b}u3jU|~IJl14$ib#0Q8bw7QW3st5` z+Waon67woBM(%{i;~5tLXgl8U#sED6A5rIQ=QVX$lfe(<_}Lr%DPFj)>@1ZQDg*`o z*4e!VtFe&JY6e$1qa!WfSU=O5UnLTREH%3ILxY|;2o9BSd2DD#Z9eg^Xvk0)c&g^b z*IfLch%1H?a9(^#<6l=^Syw8{a05;ChhK1^qbKTp{t<_)fDui9Ub-r-w=XOyExhVc zg%X-jb+kIlJ+3RVgi3T#xe~>-k#}+7NK_+7Okky!UoDH6-R-Ej-ydk`h@c*~neiTu zBEN(Lmr|hKs<4(mtW5BEEu2Z=5c!^VCxdRVi&8_B0Z0(|&!~>Msg|#h;_^Ag zm3FIFNJ@lpBAf-t;{!O`Bt=QA~j z^aypOVp>g*2-vnh0DV9;pmVSgG3G1&!rz> zd$D18)3Qf25}{e*aBq5q=LhH&AAKRH*PO*n0wrOyz5PS=n+f9Z*qVon^e#5i&GtfG zW)k2wv_eLD-3hB5UdS?)8wQNkILVtCf5TGK)0rwkMmQGG)chcNpF}TSr&0teyYn_13K|@* zzqnt2ArU;uqRHNPne30P7BpB^xxpx|b@;s93nD*!XhhDnAQ8s_J|6XCJx%z&{2<}b zl>T6VUEWea37;62?Pr1~qq^Dv9ykbkfpXInM-$XJ8;S`4`(OE5&syTcHyWONLFe4< z|AZ0pYOaLdDvi8arqV&9GrLWZ?-YkP76n0a3we$x-5w_l$`i;Q)%A_!t!?~>+cDkD zg_7-;GAA;rJoXx8K{!55pbuTpsZ{mX`B}eRm$Sf5TxHMmCtKzlB9tSeK=K%o+|{e0 zh8NjdzQkw{V={JQtg7O8$7|?QS$Ff?Y_X2#6Y>1kmex$f$nQi;ssij&e85-Q`NJlq z$w!>8=#1-cUkH_ANxHt%E>yok@0y=`YQP9UkyGzrBOr_z;>IUIzSDjYQ?=&0hWxmk_adk5{0*IC%Yi5 zZn$+`(st2=dPW?Ww}}LLdWc7Jfz-l(dmFl{Sa+w-)p123;X4X1M2!WrX752$$=QbZ z9#bKlE0n}kgP@m@2no&1);@OEOTVu^&@yyyU7J2t_8PgD-y5=?OyPd;nT*2AL&}_Z zdl>Gr5gVXrkyY!`O@xu5@VoDN&{ds9A!@a_EX3BT<1oa2Has2?4>406CX5_1_ljFE z`tAm>3DcV_nvUEK`QkU82UZ#8f@j5l9@@GH#Lv48XR3SaVho$Fq#~o{p}EMr1OS|8 zQlraJi@54Y3JZpv7k?iOq^K=$cb>I;zPTUl?Zhk;b!uc`1L;n^^qt*RFHd|fp>`+= zKdc(>3ApHCVr%cHUDYvbZl6DFx(%L=Y8mhg=b6cT4#lSgc^CC0v4lOk>hF)BK8189 z52E^a-WgbXZlontApjL$1s+EmcVnDKRMLBT!PXq1U{p@luE@4GQ#yg$@EhLFJpeJA|>g_{KzdU#_Lm=X^gK&)#dvs=g%I7<=yg`xn$$fM^fC&Xa4)N)wg2d&T8s9me1u79wm~l z4(liF`gNGlu;eVlr=h>z@(MGmYU@|o%%7c?=Le6X&%5xX5NfBJESpA|lS{M2F@w{x z`L?uVN9S8W!?Cq|1~nq4%IM1o?756jv(1`B{BTd6O!!jSrK!smC*z0QYKvAC$)2cG zV3HB9_7Duk5y|^`VbH|N3Mi6$ikrqi;o)sIxryrw8#S1!2_P#Z)@j`RD2L6GYdP7TnjHT92n0I*R`W z){NfYSz?T)HOrP%eol}4rT%hqX-y7r_LOoBq!UO|(8Ke7)Hi{FB3pj>rMGp@gOQku z4>5OWfjfdmw4RyR=%?D!!XF+N>FivN7baK9{qUn9KpI$XWGd4Xi?#i!;-dDGF~|Ni zRZSFi8PcQKvitQ3sWul-F8IFJc1(?7AUnwCsp+Hd%u6I57s*`Vdwzm^f+0HpaWsDE zYbyPlSJ}ulodIV5{lcNEwi{%kmknBrbT|itLVE2EcTXmNpOyIGoLQV_ z6QU1tVJf=OlJ3toCxzCvmF^PtTg2QZT1q(F|t`a;&NS~fM;RZXTBGBBLgG}e#046MH$O{MWR z6gSsXF^nj6d6`T(5c)0qFjjUk0#dtHa^_h>VjThI!U%H zy;u=c+aK|Tt&g`MjDbNPz)qozi;8g##IKr(xJTwil=^FL-G!vwlj5*FU2jb6-7m-*Gr3dqFLy=CM8r79m$sJQ3PLrE<|1Z?Mg2V#QJ;z59rIbv)1bgBfyBX-@{oK zu$;Y~Ch59#Pm;@9(!e^hD59bnFy!<5Ifkmoj5Ti+L9JHCAYIXt(3}^Ln0!AtPtKCf zZGIHkQ%FO+oc(xD6XQORk;f|D^-E$ENU&-8JIr`sD*PBpcV5-%jHIChRJsL}&9%>4s_eOY^$QCMLpl)A^tS_LN2Y^;(mz%SlfSgIkYi zF}j5xjlt!3Ojn7${W;n7SkQ*kt1s)XEmmeMU`;B<6R*{Dmx) z3Bf9a;o+0uthQ^b@F?SY+i(QytEQx*dw_;7D+!lAo#>ReU|r-at(q1)%P9_~>BMec zi3@i4^=SN_qCgE0{grasfqrSeYsysYeKK|AksnOEC6j8^4nacg1y zsA#EKzP7V5l~cWHPi7*vmP`>g-^+LTbkJ7v9{S2)EBiz;-%WVqOrwM{unH*$6Bbp5 zsFg6q&ODOtFBBMjEm(qbz?2oozMn_eI})+~i5lc!3>AMAZ>QnH_nNZ=%f_U6H*GA>L#8N7xj zqt!(0DZmSo^M{!C4->&JVFib+iWky=bn0$`X9zqv9RN}Q_Jt`A?mqVDHAa}E&M(r1 zs`?9(h}=uz&wPiibV6HCih`jL0kZ^;;S#=2&*x&?OK*4J{e)(2!rw%OUM0#V6nCuF z3GX5z;&FJg1G9#2az6&+mSRBnGC7iaZ!XX-gftF>G%U>pR|G8arTuX<+P)9(yvhsF z&T=%}zIz|9(dpiw8w@xbpF1P}x=?6=799^0(vhz#OP=XJPqs<6w@Icw1{&H)?KXp# zy!t0o2+H1%J{;!Y>dy*IaK`O2fVPnaBx?VQ1;_vfzQqz(}5M*>lxxDQ2}Ai~X>hD}rG<9Vok zK6vrf)19p}#a>T;?HzizpwsifIAs3q_H*mFp1qEWS6$5Zyn-&m91zhZ{#uUEL$5^2 zx3te+dOHs8(~NXgLv>n{n>!lq&6Qb@|D7emY#z8vxdfYr@@PM>sR&QZL`k~ncUQk& zus6#5JBCo~6!x{8F5 z2rAp}O+)kpe{poCzCGXa>G~uxtL6D)4z;6ANY-XIW0o$hGJn%NkcdFK*oN?QQ)E67 za(c+H&1AXCel}sAqN>vcV`+5vEf3oJ9S;qz~hrQ!RH-k zHsDZ^om9~yFI|LRCe*SzewsQ*M=DQ_j3%K&TVMU$>Vy3eJqXE1!?AX+C}w?eZfkfE zYU-@%yPH_23k|#<-DKsg=n2LdI!0n4$hY6H0_ihN z?d@wV1ZA(n9~+_dA7DsKy7xsjMR9d8PQsWR5}|mMKAVXwq?bCWo(duV2YT&3@kcGcbyVUo zTytLt0NS@dxJ$`@{Oi+j_`}D$GmMQrfQ@)e){^g~B+mFsvb|N5%n=?tSz)fTxzQM! z)Gg;pgehb-5TG!oW}>6TSFtXWgR6?x5*(>q_CV@Gb+q7@T$X-4jM1y7ss8sjUXnHp z11`q)+`I`YU|T>R-i^B?^NvMU8ri_&zvv1PP*In6I8WeqMPjB1ag3Q)#f6D&fRBw| z-fo%`|J~zihwi)*q48LU*c{^vRVpJ@WTIAJ+0LnS=Y=S(k94GR`kBbHlKr{v)R@J= z%dmp^3QR=@Mjb%UW3?T(79+>C@JW!?tc#}bR6rVKO^F)|NF(_R9>5^bbS87cv|2;Y z^J-#d``x}&tHu@i3)0n@y%J3OG@O=0W1%|9%IfwH3x=ZvrDRGL=nO@ip%5v0@d?bojTJ(2+2(IU698s+Z&kY{Vavw{vii z0+f#upfE=&b-jywn zPi@+X&s_jx9cQF<^e-MvX(!^Uhic!QSs@OS26}^^pV92f^!rv7BAdK?@CqfPN$7|z z3RBqs1Hm@oCvxHR4bbHx0@VJEV9E-v$ATT>&=#_Tf#M{8p?dRXCqv^Zc=~XBUq_!> z(C%kLS{n&#(Zafki?r+M!V*}=6%PwJ!p$@P{`#G=vX+Vos3>bV4=I#Npr-gvDv)0R*Htidw+^x%~YH{STCN7@v8R=<@dKLA~yAkZ(-rkIkb$6L8{MEZ%qZMlAbH(vLEy zYz{91bL$e2t=9w6kx3Q2`k2Of_jsSP9!5gk(^8I^9p@h}Lx+`$i4dZbQ=>ENw537y zL5}@GWep9@YTt|u_4PIFh*W5Br4egJD=PAu{;JT~UG%X{T~0d8V`${m>2H;CA5>1^ zKB-_9$*F=odcq<8*Zn;HT&aBC)p}fL@3QIb*VG*7Z}s={ z*GH~pH{V}x(}3!<7J9D@{j(;QH+*&RlD;e5WqHY-QE*dT)5#%R!YDuM%N^5=8lX;Z zDmZ*7ZQ8?$^)-t?B`YR*eVlV(Umeq>7?dY$8Yb}18oH}S=z^3}J{HlZu<_sc(-$cZ z<001v8((>&P{y_LHi<6f?azv(AK&$%8qs|-LC^j!?Bwew#&pt9dVfyv5)zu6SdZCG z1t2qXok}b0YYdvr73;SyO}_=^aeC znSDx<`riF>H7e|TdqmYD;%{_RFS32ln7v7xNbzthAkv~7^~P`zl$A*_zKoij;U4(P zyW13ywfLx%^(}}-f#A}CLX=tXV+2YWWIGL=Pw+gQPr-zca=5#cec`~IoVxvAZ49lQ zJkk)z*U2ivKn3#JUx{>L`X|=dmEini01pmPrgdqoKkM^7xHjnR*?T!v-A+~N{a~-1 z$M0>T8uxaMyid_$Nb7`KDz8)l@PKTde<%kC=r1jX`~j}sz4_4C#MQ->gyrM^T~&%~ zTD`GMz~OQ(a7{@xnSEwgI$X2RfCSXye{2nfrem@y?#J3F-K}N+msbeZGrIgXK0W~t z$aBBF*sPbn^8J8|#S=PdD#et3ylK?l{3;cuS!Ae8UpX`A?CI?4962dyjXTdW9l>s( zq+zBeY1#U*?&aoD07#)0xU(SmqUN%jI>N4_Y9WPBVXe(0O~}I|-$&2EfoMLwfI<)~ z##xJkU80+|@tm6~3XKM#PaW;3nP0uFY0^_idxoRLU{6`Thz2FV@~FD2_M!7Hu>HcXxLUZWAQ9 zTW}5T4ud8@f?IGWxVt;Sg1fr~cegY7{m-debsz41xVLH^db)agTE1`h?zQ(?>)|T? zt{r^8*UV}6*ui`1<*plrth_uK&2nl8RtQ%=p(2;X(*o~Uv z5du??3nQA4iSfoB)2v{yC^4a*y_v6nqPoxQlmrj%x9HBoP$tpefopc z^no}zsIHM*T4wDeN<%hSzy{Am(f%GWs2JuwoU6=KN#)VPH1Oegf$+eS0$2!|$~@#D zHlMIQdRd3V$Gm7}|bhT5U@Iw?sr5Cwu&rjm|!G2zj#BeFZ(KBRGe z#@~d49&DcSD0Qglg;M`A+!|FAwIp818lNa4^jQ+%zw62j=QjPZw6LTM6frVb&6Om{ zh7A({CJ<{X0)dip8cdmY*Kf;|TI>PYcV>rFA1)$Rej}ntn&W18-opy(bF|mJ$P`kDnRl?sG8we1_4HK&39T@Jz#A&v&3TD}rqr_c(gkMsXhU18Rze{p-OQnvk zfjf6wVF0!Il0Nz#@HLQkU8R;_%#Q=)6A8M)I642cdNewsAEKS0g*{ z2Y1OCUZjDH)~Ddcq&1S$0%~)EUc3$t+iw3~9zHLp%UN$2%RKs(e+6AyvJgOcH!p>P zM67S0$Ii%n-*&F^DRTb`zBKqbWC@qUkmu9p4+u`eu1{av#dh<&oiLi1*Hu|+e)S+7p&l-oPDaqtXMqj~Z zg{RjLHe2cQ)2&B!ONEwrK*H``;;^!c|2l~fOVpNHEeG+_F!%&E1ex%-mw|w*j=WhSd(86KGc8z9CARUL`o|A$y z=z%|_kpw~jG}h9(L?$Zv6H+k_l9zQ^iY%jKpgY-^@> zm8UTMV>-_Z?NlY>Zkdl;SG~NbO0yD{T#*G2bx87R+Cu>P$6{=oO5rm;l37+Wve>A| z91Pa%u@56sva;+&>V9o{gRpeaL}0OQGuI~Kh7?Yg=En4Mf>?4jb$e#wl#4)YR;Fa z+%2DG?SP;d+^**R8#V%IHA1D{R*bF8t+qFgHz73!BU*IyNgm6d-mJ)U&ez3ewDRcb zWCPi2lxr*-9K*GQUr$j6KZfb2lx-R_dke?#4^3$WP<{8F*tiD9pD3DLgeX3ZB_Pw# z7y%g43+&F9cRWpeMRxgjSyuVUAO59_JopJfHPP*#mhsbb?Dx}pFPB3eQ3-*Nl(A|1 z3|`e>q&Q8RpC7zNoeH~?rQd52G-F*E zDw@8m%R}qRfWZ3ncBzUlP>-BGU|@Y;6uLN(1Ht|LV32lky=(l((-n>Qnaa zd_@u!5p}zw`)0wSS7Ww0<2T0GP3!sSA}RslWd=Wy>bm6jTxX&jolyW2bYucEGX||9 z=5IMW7UIuv-NMWx-!c{BAg|VOs?@#Oju)h3gb#=V;m z8Z=uSDM~lyH(_YZ|95d+DPpC~dG}BO{Oi)y-vUnVhoKt+4ov#r^GyXI6B`tGblLRu zfF}1cITfC1c1p~Jg;}Rl^sOT~dLTu=b?)bYl(|+#6+>o_>ejxLw2&!)aB*Al%8HBC zD_~DdPgfB!Y`FLniS2ctj_gt3wxA)-n(_-=PH+H&J6zatDC5&>`5N2f^r_9%@?lFA@tp~yf9z3s=gTCu70uESyA0p2k0@y$?gE43 zq04Q>AcfFTnPlg)mY~E4s+{FxIPp=0?C8as16Mgk7aW_OYE_ABe9HLz>Ihhh5c%L&<{;1j7wTevHJCR1e(d`^u zSm(7sEnF5sl}DvhZAdqZRr_{j_oJ+#N-~CSa%{|BLC<@D%|)#I1^m=c62Zj{`*jKa z`cfI|Z*6YnzU!W(j=W)JJU$6dg1YhMTJeKu1Nz0z~$eLI?j8^Vvk*qK6RYm$#4=f{14U%qj=Yj9Ge5N6~3q?3i6Rrb9T z=A&*1b2rI^roONd36h&!3}uiPel3iK zh{l+lw>64n%;$1j*qLg$^cHVy>aP;2KHq%y)heR^vY#t?PyN=u^n$rw)Mb;p@7nn9 zPv3?^SDuEIhFNM#amp(g-_GG`5|Ko;w~U3(r_`&yRPe>qg?S+je~=X8&otp zl8Vwrdw3{>TUOI1cIrqnYrkVQcb)VS`P#xEU^n!`s^|XW%tw?dZQ;2*;)dCPtBB+o zU04Xw)W)G?k|ZxWI%>XGH(+D)go0d~$6N8hadghD&JxLaL5F22bSXq8_40Y9luorW z^WOJl39hukN2piLHOkXwG2Iu5$BdiFSnOY=@F%Q1_+Xz!OK0*}RePyVe_d~-{&e8M z@cDU2o=pX(?r%Qa`q;gI3{NpO2d~z=o=Iw^>O!`d#-wQ5`NauU5{iaOQYaTZ6B_aH zeVGOANJ6Tm)vWjBp#F>uR2m>47%;|cu41vX?JuKp5F@DN-JCFm`u{+nAL~Rkoqmwc zm$6_gv?2hyyL(qxX1If*4JP(QlZLGV#f zQcwi=Pzd!=ow)_}7_os4fzbic0S-3ew-V$-8;BB6kkM>T#6}tNYgDLtFQwS@>}692 z2L=O@y*QnJsdosetXa4<={$q*ey4d z3jApAkG{)87xEE?gKqvH!di+o_u|F~w!up$=V9*qGaNx;kf(3sY5G!q8#uX*TfRW5 zkqu%0@!zH0o(mqK8H&7IEnkV*4z4S9V?v1eWf99>MI8E(tVKzEk?3DeBtQNSFaNfN zf`+0#A3JPGm84l>X5j5%@p6|bk7=-v@&w8-% zw|+?C{PDTDMMu*RF)p6YqbbUo_k%{{W2rZ)<1e)Kykx;R0r$-LN^O2ys&D;vE5Bb6 zq5tOI9m}x$Rge7{E

x;Ns%u_@a0KJ36OPXX)Z>8H9U6Y&YHXWt&InWs8lU6I3QO zo^rU<1|WUpGQU*^Oa*?`knr_gf8H$&^QwXnq#x#uzkZiZ%Sd4Ydm)f(&S}EZ20s_C_^ztM26%P- zO@SH}%DX1wSw@Qq&%GsXn&V+iOUUojli?iviH(B@9WX2KN{;tCQ;5bkH%(uvzkij@LeEEB@O#?jMA30?>!Pnom zetwvH0y8h!Z$K2)i_7d#TwK1&_I^=I%ulWV8dqn5a`cm}z2l@^a#_UvMAT{Sc-dk! z75}h=(!9fzRGZ)RGH8EKxQ62PtWIV)S<`S8=JL?uW}jQXF@#*X*nZ`UzTs7g_0?A! zo5n|i=|gMT;#q|xYs}7AF@L;onIoO_BvE#GlDkbLS>+3spfyeg77p$4uacCWZdVu+ zW{#N~L>qEY>X!$gs^XicR@GTf0qGU7l6wLBLPs^fGf@uxhT(R*rCs%Phs3)nnPwc@nhgU zVH({&6WLTctUH}7PIMr44~-9`659xn+(x33v%p126BH9*w!tZPf()S^A{9g?d9xqm zR2hVK`&md-o#oR*ZZv<8uASbR7DPADw#Y3v8n&_?|M07Ds0@rBXg<+=&{iGH=a}ab z*v>XQ@xahT|F(%o&JXUJBB&KgRu{q3-BXE-Cz%JnImwvO7!mw{k`%OWmLgb4#25 zn=joTW8FdcYBFAaJq3W_%UMNfLAo_g+e=$%^o@D`{3mxJ{zBIRbDNviB|}sqKfRMC zTbZJkpAC~*KW*@t-*YrpS)LLca$3u?VFZY{pBZ53StfXS?IIuIu79y)&`ixVVD3#( z)%urTGuWGL%`KG6S5CTz=-7leV+K_G$XKU?e6&5MCZ~gbDCeriRKb~iEI6GH;z|6E z=}pK$VwGPv{SPVAB~AFV@x9~GHY)lnJHyqu#h!2{Rrvb$FofuxpKQ|2G%_Lq9dJ;$ zgsX2pSK;>&YE{TKHIl%jrL9R0k4=K-f$dVq{N_NSn4IHMY^QH9`S_0_yIe`{y>;cO zoxNgZ$K2i9qTpFmQPfFbRtmTgT29~lOaU7MPNFNsB+`mDHJ4*AUs%l`mx0!+m`%7~ z;MzV^hB>s|^jH-K_MrW)VR!8L75LfE#LWFL3h@dE1&^;Srf^w|rSo%fEp(B&!oN}j zu>kDG;i~ok6g>z#Aa9j!a=TOq5P>HL%z@IIwVGo11$YpYIZSedI*pBb>e$j8cW-lI z8!hjl#dm&&cE=oP09f;SbgdNWh`7t(Uu}Nr2uH#TtNa8vvzX!q4eb9V#P*m*R?Aad z?BLQx=X|^0u7Q^+U{2=k8%}_kFp%lwWV9HIow_3F9Cq1^yTJ6#myL^OTC$-M=r;x8 zrE<#Z!~lT$?%I7Tq&ldDq$O3Zbxn`|s{c++9Xn>>=ytjHQG_6(p}t|qQz8+A zUSWyGc8%IrSXQGYYiKkd7GOt2m2CUyaKK)PU^Zp^fa8@xbA5Hjlo+J~0u7vyH8;<5 zzFuAm*E z2mn0`W0SiZd;brfVdcip`9ua$aB)}b8=55zyPWlsjAe- z_VNTUi3(>PD4nG4Z&nj536*3-+~#E{4elP?-2lkC)TWqKGM&dX7m_0N4Mdp}p3;*C zx3_aZ{Lc+bA^ztrc^?jBtOyYU@~{dOkM)-++5Fi^fg&E!M#~Rdl;6mhTBr3SURR2| z{MlwzK|+Y(UC$HNXVOu7-nTy|FI7V(eh}qdz1+&K?RTIkeP=+QC%324z-Z9EUN`&yuMr4BJc_iJp8mB}o1a6K7Ddtc=SB)n;#uO5;l=y#$oubuyvH6#VmIv^K+MBH#r0bR5wF{BFDgWlRl)p`-YS>2dE4W{fXPs| z)^tc$=Fzr5!*HRt@;FliHJ$$a)PKP5=}egWu~}X0qxUB)0*9!FfTqt$(KXjH2JB@) zFM^ekq5i~w{P_mc1`us*7(j;QYdV^1AW*2+JV+GlrvdLL=W4{U_%Q8s7WgzvzcH`T ztOuCakVkJ>D2fPT5&)++=B?s+3{#-rvHM~P31wA;8)Y~57z&VvYmQkz@z5CCv1MP7 zaEhg?8(_Rn4f@?#7)4f`8CP{O&s0iww@VX$>cxIoNEhucND8gpC(BJndjR|go`2uX7h+ewFLzd?aocVoOx;+Ko_U>E>gy%d@Z{AeUvk4@Qr;U>~K}> zQ^nr*e1C$1tCt&Dv*!C0?)V)9>6eS7Q~!N2E{O9||C?z={KfZ(6Cu5_9pT<@pREr# z_@~z6V1N=v7W&!xpFw7de)eHeI6Ah+hubF4yu!3e+e@`XR-#U#*(b}&?>g@YvJnA* z7TOUA)#quPfy#p{#RElaPwvZ=Pvn3}0Qg4nu@q)OaHd*#H*VhFbGzfS;Z-L0Z>C*g{>=bZu!apFlKyF0_Q%D{n=#u#6Ga4KdZy@4TJ*K#lvfRe;TYE zr4>I;UEx&ud_4zE15aN6PV`==`Utj&g=IGk7qlZtp^R8E-FZ4l2LL?@>;7^o-xfU5 z8xe|VS!jIgG*P&Rh}PHCWB`b}YQ3&UTeWR&jnpMPk8>ur*?PN8W5)AgsTmI32C+T( zEvOMfwP{%_zuQgXo_FY3n zlUEeeJ3vfBMaE{ma@IWG!kQl7%zQcjwW%)`hC@o>_eVvbQ+|-HHJ%<0r264aWztS9 zHuw7}Rh6sMUW?!tulESpz(*tIeXALTi6xYjYzq3#4s3|IJT{wu0Mc>I=Cn2RU6-@% zSAbq`Me4GpX=X{Nh8Kq(h}+gB-Lz<;66&{YpuH)*yPL-Z#&#>vM0Idn%M18Q&)<9= z)>NfX10XcGw^IA3$?sjCA{UB+DEEzZwUZ{2cpJTG8hQZiupnh7Nbf+iR_nfAbzde- z|NPKt_}F2ya8vc}OW#ib5bNfuu95rB<#Jr0LS=1NbrO+qH*(Quvo>2bSd0W?EeRB{h=23jzVVEd?*X`SY?00GVk9?Yc zyam%YxZ!jufPex*lGxLamTVE(IJ32d5s68h(BK zkVt>=mI@hSc@3FZVrAcg8~T@8Ld+8qm4C}c%8#;O$GLZgHzed2U>}j<_hHK5ZAVe7 z%B&Ykqx@0ea=UcmJh+D8uf1KMj9c`4fd5Bb*thQ8MN_YnZq`#!2Ax(m z?C*dg*ld6jKtx~PZAIvE3Qz_x0D{4u^^~!^&I7;?uzHkvL3P~TQ2ctlrtXe(sw2Xt z!}GTGHfKhcq13GUS)~%XxHxjT>HHi-#PA8o+q`Z)JD$s!&2Fy)E3JteWC}ItKWn$G z>laRyz)|IwzIpmzQQbXMF8H~9jQ(lw`&hiVEvjuho~CF}yL)_MWij?;)K~ zH$s55+?%KOYT~KI&3iZoyd&uQNF6J-RJNj0?FA(Yie!{0q^^VX2L8m<8=sI%PG&a!CI4jZ_kO% zx5%p58MjXT&rS!nVu~o-ZfWR*mUIIG9-H$gUT;@3O>W!y3!K(36+ydriZpwgrF>K_ zL{c8>zy*3D`m$pCZigENTBU~87djeh{V|48D_a^&HKIl*jLCR?9AfB_v4u8Ct+wEw z$1f+>k3TG_s8Js8Zfmc`Gdk6mvNt0WSOY1xM^GzKo1X3pCN0@y$6uH|moBD{0ivAb zRtS!mBMDbmfKi8FMmyM#p)E6*c(e3Nz}v;H#_`MhGdiePuDb;$KDzI7_0Wj{30Ur& zl!n5^!s|Q>n3;=ZD6X4ysoz$vjw+7XQQH^yaw2yl;*t5GV^&G;D?7JOc4%W@wb&%fC@ zCphH7F~&%JD6$me85%6SDF<=<$R8Xb)#v3DIriq`Guw1A9bpHGg=_YIz8bTP(LP={ zD2XU%x{GiWhNQNj-6z;G>`p{{~HO6yV-adeLy5d4x`O%C>=&t{>C>JVJG5_n* z)$$*y(JBHSP0AgTewOo)2c4opx`)2H4uTo%or1w3q*f*KLvJ(6dq?ziJUxop`<2QEHwHKF1 zO-^Avc}b91VIA7a6&ih=buoXsi_%TuzYAakP?mtA$J<}(u3vx<097>cg!I0PHh>%; zHG=CBc!7>z1cm?#@mY0BL9Px1g)f-Y4d>~^NBqqea3yll?N^nvS^B3Anz@SimM_s) z9j(i1UpNjqQ z>LP(#+z#t@K8$8eVnRYP&q;^-4IaZv^}|9fMs@#>hI|@}2=fNC@|8ySi>WP?Gf|8q zMoDS2Lqg(R!W9;ugVWvqk9Vd8I#}xl9e;KP#!u0BdZkUU_*ht#vyzI{)>`j4##zo* zcUUFcil2TqpQ?ov22rj%tqB3-)f$E^P<7l-cZH{3f-3u*FbvNR2TA*9o^CC1;%&`R z_qNfjPD)CKTBNK|W8Q3bBP*L=Sp|)bbu{k&0deaM+zdTE+ia*AAYc02>Mmxg? zb>Cb>FFz9GE{h=3H%{tv>RG3^scDCxAOZp5Fsw_G$gu)Y(FU?I|}0U za4w(T#(c>0dpXajOh2qwHyTXlj7zkeI3siyK8B3chSPz!C~-_!RT@N9N_|3Zlev&P zgv)p;P+Jd!WvZI;IO2?^{{7yNe|weOzBXCByK>Xhe0(#>7@3xg6qA_FjC?(em}`sb{}+cpfx;uxd$cr%$*wCu97QM2ro5v(4c zi%h`ewPW@U2=J`B=;9%5?@&`2=y-3L(q3MlAKaYMBh856^21W2d=#Z#<4f>^ zm!w4yn4Kx`j{hW+ZlX zndin?XPJ{%_`}uj#C)bCmK3bb{jv`^k-HB`iYM!@SB+^(*d>pyBdqzjNRy|^*H3rv zTKbEv`YOn7g+z~V^J5Zxs=xfaQ7MY>_wc$;tV%om++y_jlblV8DL8`84u$*613@vK zBI)9bO-)1etB>PL+n}gJr~gfP^=4p2BIlG|N|N_wS7jQbiN80$;=Ckr>I%zSYD$~U z%{Py+EP=J@ZdKOY)P}wO)IVEoBiA!KK`wNt1y=BeVzb?JxfW-JAN=R)hCYgrjy2%+ zb8^rX5!wtR*0Ry0FT5@9*$rGhMX!~z`ZwD??zWQZxNS$E8(QRxg>fs)N~VNfJh|I1 zbCzHcPJwQHFQ3R8ub8# zz>?U+y~!EaP1lEspUP^o9bicp0b;2j6SjAGF=95tEFEI3&ytE3%K9p-c5sW=qN5O! z73o)B{n!*}YWx|yx@z1%VKN3h3Q9S@z<~xXhe;k%WN9t~t8#cF$QRD)sUTBH(?b4*z1XjAv4PrWE%Kv1-e^O2jaoxy0^~KsD)Mc z-Uww;3ppytY;!!gel_fTydJnWA+dmPbN_oX!u~g5F`~zoa=c0-!ozzEq6R-B+eOyp z1{Bc6tL^?WwX0)r7>O3(@UXXa{hdcnrX|S4g~ef4UI`J0=scf)B}r=}9kKn(7LB&N zpuO!Lol|z{oo24_eQwmik*nxOvO zAM0%?uK3Abr~Pnm;fGVEyE*2RYJ&g4%-U#{PuqjfF23W$J0VT$!ErV#RdL4vHs=QM zM006Ic=_!5&^h&qHe}~h>Y*Y+(i3h3nDW0M?>|MJ4Blya;{T?0C^hH7`n4y+KZ6W* z{0L)E&EK@ClGN0aKQ3<>)F!jtMiF1wTQ+GfEV9BypOUkv&1aziazrq9PFq1iNsHw) zXTAuQu*m(xG!C~0H+SDUOKkO{srR7K((pf<;C@k`b5o73e~a+j4v3=mie*&qKpGae z#1$q)4Um=p^SAa@U1a~W)XCrjTCv3=4X_?N6V~hA^84SLAb&!OPSJq+-y6}S-=%*> zgKQLcOVYN+UGfjvG5T$JX=^JSqyAo11~sFAQPb_;Pw|=luU*rmgO7;~F#t=plV!uM zf4ep<`e^dOO9YQEh9LeHGg4GsgBd2}--R%RYnV;?w}9NgKK0!xDiUP_3KU;`28!xp z4Ek^V{~Y=MIlBKpzj=TCj03q99LC}4bWYo=vF+T#uPHGV1npmwbE;$(CP`(kg0iC2 zdQwBIX0p4Y?(9YHI;Gzijd!4noW<)EsJzL$nY#aXq5fT#Pn+8R_EydA@Cm{hcd>)| zu+vk-D(y(RQlndqke#b-#6%_k3m&NAIg&TL|D0N>!T@3q2+5u@Pews>k{R2 zrmbgJ)FKM}5yStSa6cpS`G6672!SGE8=<;w?u5PTs8FFi%7t@Xeav*?VO;uf=zd&{ z&1{*;YYJg7vqir`A~~SY-|@l^ZPUsD*RY$&)~6^0Y-oFk&v7m7G;mn33DHW*U%J;c zeAt_f#E~SBDO4=fD5AF!>POI-?EI)iV6|+#LyXDAve4U)P_J%I*H0##wEo+N_}`_E z*yS%WfO*|{h_yG-w^_(z-W)e=?%jnZ4_*CT|7W`42e2&HUcf%}8Nj0!3@ z131e3!_5haTv_{o*CKtyu5*e6^A>*uJA?lYl7=;-@v}odM0n}uLrYN-+r!+FwCkKp1d6T zv-vd%7S@NuA^1Elbkn^&a!)Qrc$oe&l$mO{D{LC)^lO`y$TFi^dR|`5ynD$pA>@9h zX-Fo;V-*LM(qW#sv{xL;6xLW`apo7*Rr5YT;d5;wuUT)Eqlvyw)GT)3=APc>?rn{E z%nM&F9vo(#qVK=l2bvzy{it|aJ>(kyKKe#onbzhx_Z^Ryt+7i$LS2d!t>xkAPo`;| zv8r%KFC)A8>$7%jJl!K$U{RMq-#qm5DB;ALJy)Ao zqK6)l@C^Nxo-Z%^_V3xZ1;Dg8htrL34x=q>n1{(k|H4Z|b*M<7=0f1aM!<=w4bSZJ{80AtWTkqPFQnRRU37>YD?x3PhZIZg|b{BLSI?KWL5 zZp3-bD4S!EBV*L*D37XI=Y{Y7PO*az>e(=C?aKL#0y{arNDkO55fFOJSUkK-Thrd5 z7jtayHHw9RWy=jB{4$f}Hk4yCZv}65cU2uX{aQ-A>{5yUg*bFyXn#HMN_0u-RfT%p z?PKzXS(I^C_@Q*#5I9%Eqtmm(WWMMup~+tP4*=ayo}^vuS!)J>T#-5>S$|UXzHE=vf~>38IpsY zcr<|^O=8;m3_E45{N?cX+bgK?OnoqZRzsvyMZeA?^Tn6iXeS$4s&+y2^70Ar3d(<| z91M&)4~|Usj=5d~u~_1(EE;`YKrzHn6MIapqHjBCBo|3xghinlIDISAbwL&!UQa zM%qZoZta69EIBsWLVT|A4aZzI_fBhcuw?b1s<_e#W=+3hWp+JSV_HxKNr)U>Glocb} zNizxbP~Jlm*1a`c!*q%;&Z=`i;bV_S6V*^a}w49-GB( z(!54yxp@?D#6T6ia#WDS(@{$)9eBfaa3ty_BoP=`5{}ybwiU9@_VcU$U}SXX`5^MU z*o%AaEFlj{?~}<-xR0j)9%jkn(OqO)UKjvi$I$7_(C(KP!ex8NO*5ks1+uim$>Veq z-4vqcal3>l_tbH3!QW#p#bhPM6`nq7>}675bl*Bt*IbjGsdzG9E!{`vJHLk(L+Dvp z8PiNnSY5hES?E_Bf7%8|Xd(=@xx}%4z$hJ~&%Tb*|;7JXk&{t`{VPyYY2= zs7nzV({dLGecj#wRRS{fi+5s?K_XP6|Wb&X0f@7yY+?H*^s4j z#8%$9V3?fqE;>52G%LRUVak_3S zby~?D56`cwp@zh(O~2v8h45HVy{Rt5lAzMmNgp;+s9M^DqrnX;)KY-hVujoIanT{c zJr^erG^B`z>i@W>Yvp|^%PWrvERU^M9ff}(HIWE@ycQMlefmXqOP$bA?f4#Y9}z5Y zt2{@;$JcpRwM#5|fPJTVE|1nw^q7`=Jcs6^X=H8yWbkU^kvD7qaJ5UXw)SOlnu(|1 zKe;c;?Z3?Avv?K`tHBH@sd}jtt8ri>GQyQs7`h#cB45&U-ZIf|b5aZ^7mM#t3xrNU zUNbe71-nh3x;}XKId}yZ5lC+iuiZ-J4WQ;EfG(+EuB7VHUeXO06vbFvVDut)!%48i zj*(y_*=2h9pa7!(@r@s?k)zZz>>#`_&3MB6WXb7t=T)U;GlJ4CbtLg&s4ktQl88yiw0-LFB9`t|tk;GiC zrlHQE0~^G`!e-uS6paaILU^W8f$GOTd&TRr-YG<8W+o9pz}zgVk?%Y^L+tpAp-

F)$`Tnql(e-%d0L@H#4=*sjJ1<$18#gXsl_(g(_xaDE4Tm{)n04 z`je>srfz~g)a8SCMY!YXQ=S`g%XC{YU5ZW@~ulfFE1`tc}adpO&z`H{-6AyU&|e< zi3{^LG$Ar5u&_L@e6EzYcOcC@>8PBBAZil4+YGq<1HEJQodSs^9d8bUg^sM5!y-Q> ze^vqL2e1hfoTHA8u3{y1{4Xh)k80y|)g*T_SLrVE*Se(Zw;}fpr237jp8H-DtseR& z*v?p@vm}c;lvwaL%FN_#Jup6N~n* zyyBa+%~ei=-H4$GA2cVAKR7oSOS|a{T~xHv%0eu5@2BO+Xd9kgKB2jI2#w)2H&eb7 zG&2q}Gs(8LEXwyf*y)j>s0QtSEZy^4iD2I`i7sP~iA9#c|G-jLl3YL&W9lEvc(X83 zL}B?j`=<=Wwy&^W21(hdf*B?T=2GfWsVtK76q--dX$FiK_+^<8I^taH1!OC%Hn5Zr zfbu(b69DlhgR$3NE)E>KIYzAANN+oOe~-GfLPSs|q540JHN1FE;|Q%8!7AB|S^=T|K+nl6E*^*oQ9dg~cBjcFZgl@1%f@-wu*zFzU~Bm*{p+=N0)<2fqoo-tQwWLystx zWr&Rj4QI~d9!}DPT0}rGRsW|KfY!&^Svg6sZGCZd`?AhmCl1dyxczU zxa7dq-)pz`Y+yp|#E6K1qJVf-Vk&6&wCdWdKj-XYBcx>WGd;jT{pi&BM9QEaGX?iu zGG3I&`p&FdxnGG7Tj)i{?wodzAD#c*Mses8S|{}v-xRc15`$MZzc67v94u|hPRB8} zh%_&qrw66Hy2=~)TJqCZFdyCnHv<brzzAS1k}JH+>z*~9hB!3qB!EB=jLWOT8P0C3n4NcT)(YI9`6 z+d+|%P!FAO*Ez^m^B&oW>yx^^`-P7=3{=xvhjtDlSF`mGo8U7?e%OyqI-ga*!pgFQ za&m+)BRD*_nm#HF)m60#luPP5s%#6GhyZ3NexSAM_vZr79820Wlfd*XN6r4va*y%B z1AWP+=$ChAGP4k?xv^7z_4X}A8>@wM0$fr1iql_BpSo>$UTQ>YUKq_~H6Tj6LkDm; zqhDthMppX!=GRFS`wFeTgAlb9{oS6F?jB??lyfNVc5;3VJ)kU1arw+0zjw!66F4kB z6Jd$ge--!WRN{QCu3T>(68{=d!ZiIR;CJh6tiXjql#;qE0EU;xKU+&pT>^)hCjab? z@%BDNX0U=vQf6I%icko^q~~MHQ>T2hS{Q}>iJ^CFxHErTp^v|Q$tSuBg$`KdYq3s! zWekgm-RCA7;pL(147x*#H3%z|%@?wOSo~f5%IT1OUhv^kf)aOK zZnCDjI1&^R-LX9kG4!yJ-wpKW(K6Wl+*q#dl0#$x86D7={wl9ChfM1}IQ%{oeIfWF zTDsoBfm+yoN_M6BotDd3TvXhS*;EM+d-camR$m1SD4>fw4yj?TG_zDK=ss%beFGYb z+ZGgP5Q27PdF8+dhp6f(escOi%3W!Ig1jWNdNSYN4jkQmeZl_14Q3>jxAzV*+*)i zjDqXy+k_9LWOUt5^Xtmu4wqUUaRZam7)gYlpHt(&@Y$ahYEabC(kc-I{f>}@sm?RU z9?}l9uBgm-U7t)7F_e6+cd*|>tJc3wXK~#OG4@2sk+t?l!l27GwqJOqMqyhP2L~fV zAwcjv7|Y~9xgpcU)xRT9mbHG5whp7`t+bqQnA@l*lOHB?O?2iFMp;1oF)0C&RQAJ# zhnZ1F0aC)ihJF)x`IjFyq1@muv(75=Pnc$on!1mytkU|@t_F7kj!Xg@uf{Pr+)afM z$(_cYZ`Ke{;gJibSZr)|`I{7w-5%$jAKl&dlBLi08|>NatUSy*Ve%gu$9(?XjKpFt zG~sl+zrJL)oFx)cXsD0$-hC_9(5Es|FK-#kWv@iWKQoUgD*3RhXFvTns5EAzM=uJ} z!o$s@e-j(~nGzl#4~lu*n)>9ghNY`3SD|NWK_yj}pH~-!ZUYTS&ty{Yx1cP4szFs9 z&_zG%Z3f54X`9L%Q0KT5>Kc*fOQF(w%s4Eke7m?AcHm5s8VOakeQocsh)*8%c__6g z&@qDa;s{;8KH~A7%AB2Q$oxd5MJef)qZsyL^LMSx!d6k3e8oG{zj|0aRD9ojmO*Cc zXOY9@z<+e`HnP-VZkROGMtwZi3Qdh*IeqZP(sI+DN7@p;i^>{yXn@7qn};kli0ilZ zNgd#Wn(OFlcAoH*eH!zSfU9Cl0eh2JM5{>CFJ&qOD@yr4m+M8qK)iJrdbHM&7Pb6q zVI?azk`yEs@Y#~1$Ni-$#-6RXgzJ?607T#4Y5FzRPl8XU)R3Wm=eyfdyq3o`xntNS znL(HW$HIVP_q%$FR{PtJ^tRekGnEfv=Y4oRyDd>lBQVXgch0BI>}g%=JQ`O{LhYKZ z#HsZWE^&ZzQ7gUev(Dg&d~eLshIXUN)w9aDwvd=&&I++;yWdB5s?c$3f1^~?}a$I+kFFH%pCNW9s(*0-WK2BSchYjoG3)3{9kuJ7hR}?<@w3$ zEqKekcakuD+t_9PzMx4GP-U0ojf?W-9Z`#n^^Xz40Gw!@`wusL^|N2#7L($~>Au{g z4e>fMI9VRM${~}h8`z_2KTWD}6~KD&B@aXBp45UjI~^>Bz7M)4H|!Gf2*MY|=4zbR zZkQkskI`%uG@y;L`WM6|ehzh13Tzqu&n8}bsEFNF)3qy5^jld`pzxR9&yf^$3*OiM zx`H;SfV8-_7ZMzZHYeKWp>G>ws;-i>ZM&~mqprHFEH(hvWzL<47(jaFfS~TC@=h@OfsR*THP(+P`KF$I_FF66-__p2Vu?|GSlU**9`SA>E-YE$W1vFi@(XlY=j zbIxvcH75@K$}e?2e(q2rn)pCbN!#@j6m^m502d9crM{I6mZYk#Ad{M)ps9qeoSgOh znA@Rf=?}DHH+CWnKR*CQJ0GyZZ`$l7g6MoH4X(W^JI5uUNX0eTFMjja+VYXt51?gq z61v#D9&HrkA`W^U9_L7 zHsqydh`K0jj~5ykj1W+@=7!sGW&r|v;D-cf;RGG8#4+F}cHU?Ct@Rjx-_~iStH01WOv!b>-`U;6ZCL1HB-Kwy_fd*$uP-T#U4@x5Bv^6g+Fc zIdrih`%HLZ^(Ro->AI75?OLbJ;J|s1*?qR$o){=zZoHsd^@wzKkGdrW9OpKN$^3jy zTq--B`u0{WSPL`OE-x>Qkc8A#({-h*XyAb{`^iV%*IHZ6s_*q;j9Y!5G%G$%Cka0s zbaXa|l34K*hm_Z21a*jiU0qe~{Ui*FtBC*=0KyuZSi?(D#wjl&QaB+Q}#7;bw4I)++GP=Jg)4(2~V1m4s(N2)(-LQh4n z$EEEvWdZ@g5DhUjK&`pp6}+^tobh%fZ*MAEI(AsI)BBDw-8Ld8zow|Dq4U>SOze{< z8yB*eg1NKe)nLdA`krTKY){YJ(DcBlP80yrO-Px%xu*;L90AZ%USEp8X z&)rCeO_rgOGiAy{9j5v?!DRkN<*z1?QQ-%EZ5EZiPSYo#?u%}{pcTb{R&9P+RZ{aF zmnYix7geu+W+k%4apXEKyg~WxoMHQY!eT!GIsH9(vTkCR|iN0^e`R!IKr$9Uf8!bRc-;*N$vj$Cv-b z+gk<25q06Bjk~);aJS$Z+#P~zaCdit1oz-BL4!LC!JXjl65QR+{Qr?URrlrIm%E;( zx@vm5XYcO4_FA7r1}c+?825cjZhrY_ERl^+6gS0k#bSr7u&%IGc@wX>XBJ_}{uyUx z59sZp<593mv;I1^QYuzifGB@{?H0!oU#&%{BMR4T zPGsE1pAk2R$zK1rS?;vJ{;}RY^pY{J>^N%GHQBfH9-ivT%pRoDx_=|`5+z#Hy!I&K zNi-It$Xrd5txwEkP7K+fr?N)z!znQQsX>fSq4s>IYW^YkA(hEHwc zhrgF}L`O=Hl<`z(*nsO-1|$O6{*%1}iJ{nEs*icG^aXLb-~Tf&L)k%Km_(}g!HPFw zWO|m40B@Ub+j7QbP%JU+_omMzvNfl)B{>x*a`kuGM=89}k2*J^de>_8$I@2M(PyPh zo#t{zJ?(W{uNhS}5vc!lUnjBlFK%wF8d#kj?j;SX7?rDl2J+7c0weLR0JCke+VEYm zC#H=___o3PPG+C+A{gCUIBV=@r&XKE2)SK9Gt0J1QN1bR9~bRMky^Qexizu5V* zd`fOrVN7t){CbQwIfIdt{xla9um}PPHcomjhdKU=MJc-A3Sw+lG_jJ= zdh(iw=`3p-&-x(+NA7EXjk>Cy@cU!*1RRT&f#tK^&pDak1U=s!92k|I;bCD?cJ=?5 zuhXXjeQkN2HQ5z(I~YGRJrNKn_KttB0qB{z8|eX9K1Y~2hmmYj4i50<>WBb5pFqn8 zOJ;^_#4;Bi|AVND-zGiLu+0$<{l!E=(DV3>$&JX!$s1#1x~JXJ@(@a}n1{{D&m3(l zYdMA-^HA`4&f)iOHKzoZcun*e*^+|tLk@g&gY$(rm6=HIA@8eI#bFK!1$acEMY%?N z(bACboVcAjOj^x}eqqKHf*sS*q`^JT2Ggg!iG~-kPdp7CSGjEN=QEm~6L%c!DEjZc zsMI_c=VY$Wt1827n~j2E;Xq@?DmPg5W?R$!VE1Lx&rfr5$ytAIjp(BLqDEWUjLKQ( z_TE#nt#0bBJ;y3vO~%BGQWD6YSn|3F!He@$6!hP1LV56OxS3d%vlD(BkuGWx_VB{4 z5hd#{Pxn?U&mPxt-C{So4PoVLHR8>YBl=!f&}Eiax99jTb6lTff)5q=43^BVXtRyN zfn9OCuf;|Iy7|YEAR+$StRBRLT2GN{Vs4`TY9sIBVo)Zb-D)*Iv4=s_5*h%|(&#bMfgg}mL>;Tg$L>k|_)+k<4@6$RV zD=%J@76NVJio^-!S&K-}({pp6g!4L4PIp%B9bL&4*p!!1V2#wOlU!GVEyXC%?ifp0 zQL~FL;7N=ItjPPKVWYkwJApjR(9`V0fFH= zsj8ex;rEQ?bLmlq9sG;7djyNMrVMW?F*y(cFFH7;=047UFsY}&_OqjP2{u6SOCcPv zx{Lc@;u`I6O`B|2pwOEJ-9z35iU~7crY(59=Em32~2BQowc|6Aeq(R&^Ie70U z!7pV0u00*Y%%epiyz+k14YB-K_8z60=jJ-TkSCz}UhI<5-PG^wH>ER%R%vRnadR*k z%>||yQ7vHM3SO=#52;PPUys@cm-2Tng69haMV-t=_(0#9Iu{9?xu?Jj3Wc*TrHaZC ze9SLRl2v<&ok`Rnm7#DF#0rxSLm8QE2ZvfajyL_99Op`LH z{2TpzG*?c+;p)M8sDMoY#z4Hk@jWXpz-i+^H4=r^+l8}hF=ep`eFl-n<*)y1v1kYg zI6X3A1iJ$FukmkcwLrRVMB~0h1LZVFEhNh!UoKW|`=bNrFafHZMyEI^QU-de;}aQd zHMd8Vc3j}Mw`l&Z6|pT(t7`3S*!}$1ra;5|2}l5N1Upvjkop;+S(1Gbm5LrSdBc77c(Y^hdvq*pRBfD!mTs5W(CSUZ3F~N77q5uhGj`&P=)fgbb zd=83L^2kf>voOt!i&+45*YQim%E|n&3}n9JK{AC}V|7U^Bw)YMJ#&$p1GQl#LBx9D z^_EL=v8=$M}U~@dzz|7=!0!WR>*w>4(j5v6QH1xh@hQs<{_U+lXMs zwqMl{79{!!;vZw3I@6J$qW*dYx#%z5SqkdZd**ps2h}wRqORO3CCoSj>lR?;v{3=) zE`joI>j;+l=DBt72WwHtxA8W~+wkA1mCPiC~V2_+vkfj+^2+;fV< zE?Bx@3AV`vjk7G9k4Ga0Xyki&u)G)epp^I*84~%|NjIxkmmBKkQ2V!?|4D(#g2mqH zp!*LsPrIpKX?l)qQlBnF9ZBV$?@f4HmR*#XYnp$!EC|ptfyHOWkz$JqGCXXkkYFGd);78@?pR(`WpQ>etRyN=_iD>sj z2L5MO;M*cwSR1MQYQ*LZYwfjYr5JZM^W(yDw|G@uKgTdsx<4*Bl83U;voD;Y>b;wsC{7>+$DINUA92v zVpi3fniJT?Z{6}n^efu>`pO_eGd&(WzU<12eJgh_WsOR;c&TDrIw>JwdhTynsMwz` zy~7woOk1X*i4tLAX*XOYnVT-*+P=~*`U{n1F~vRX3UBi1U%lz80BBjTqBi}#R*s`4YxbBY=Z7Qp(ikjB0I-+5rrOyEcpRLn>dnfb`~G>p*L^7_2CIwG^Z zk%M4^7{rVxdS*rs=MiyTT$Jb{MoODt{3HYKPez<|rgAxS-v=*?lww3?6(ABu8e4}A zRh@RNoo8b(0DEDgyz>8*2;zsw*Jy9=SWG|w@a|3R%8+=g(298nzqWv&$GvP}znaEc zXCpnM6ocB?;Js|W(>?gG=cKCfdQ~~yU9TF-^F`&Y+8bS?xIVz_P>EG8Iu6rOnWX*3S?IG?+psus`^q>v;{xv8Sl?ozrWV?-;eyDFt|YrV;2YX^eD%Bt zX@X<8E7uP#{yehkY4LHQ>X`eW`?QitBEKO=cw5T5^7C=1;58z&)4S?-a~foMgtARJ zJ+Cr@g>y5$UEveoAy?o5+9T2N2|Y|0n~NKuA$a?;c_SeI55Es)$d>i9+soYNl<0am zfE;H}ETCmmlP|fU*BEO+GIyG^a=H?408BgO$&aMENUyyYWXihk4~L82eBLfu z2z&*7de|>CfPk2W&0OQ^lY}A!2!fWNso)#kVyshotNl zKJ8AhlcD3CT&phRdvYH)67?A`OU;m?wvl=`-nRSX1CiqQ+yK|xa$jNt(HjLyyP0=6 zJYXe1<82^YvV*Wq!2vCrg{f3VNE(jryBQ!Ih7X}KKhQt6(ku6O)C>-D{;vt9U6=7d zCs@^7Yq<%DNP4Xvln9ldnX*f3D{bj`vL)SR$PaiU6x*O$MvGb?ege+WZEC;ZTS?xX z(^G!E>6__s>#07UzKA$EVCEi5Ln70EzYm`3(6*c0orJ^FH3ifHzrAepdo;m;ah7a@ z#ET=3;)5QfELzvO+h3TPZhsOVIgUU8nyI)c$GZLE9JC@ll0z%J+#Yw%?C)8mD&t`F zh}g!wR#7<; zLc)lm^PMz&$Yz-TpsLyTNE0PwyWxv3#UCm=B?nOWj}Ui0u1&lAKiAt&GEk7zq z90oToaa?D_Do2c9sMw!R<(>aBasDqjAV#PLD?e$)M+v?T6?cWu_JlA~Q&$Xwm5YO` zMMY+1NMJ=PEmN&(l^R2y$^h1yDpBrPILcN9wf_x*9& z3%sq*1RLFRF3#ZF;?~s4i&d1z(+HahYvlu>?*X z;Lg%d=cuiC@{R*O)0S9rTSH|(q9bjkKBl>QDY1{R!r?$fvDbUxANxzKoU)PyFnJA? zwX{a^?avK$i!^Ci#vr9@;KG6#{MVC*^ z5K=Q_P2o5tP=>Ch4S+PHk}Q zV?}Rv!=`dvK^DviUeCw$GAoJR>^H8x_k{Q*c)26r(LVHsoD8Yk_BO!d5dUh_NMK3y zu&}X<t8*SM>dB3IIgwD~Ya$}U**2pP z6Xo(25qddaRwW7jPtmiNjqY+NL-*$=pkEe8s~NE}H?*;|oBYX5%|Ttn*C>mDQSVm< z#&IO3mgXE<7f-|l@f+l+uLUl7Mr^v#kbzMnMHf|>smcgUj;vqtM@)~$hcO-MQ{S)! z_o2)?4-25gB3{&3vC${ukTU=VE|L`3HUJVO0Flx^}WQX2;+Lkv5p~>~rzk{GdA! zbPS2a(jd=%;V1H1@Y`}K$91*Ma$2JSaW-iZA77Pz~f zjL0Qt@$q4rxEi8m1^b8zA61qfAEKKj{6g~IE|lyJ#Z9>L*1NEH#8}pfqP)JFKfiRd zPoR`D3SafPqIGuH%{M4(U*rQY5FpDE%XK^3UxNJHa#HX`Zt?#_J{9Uf6^qRea7CX7 z26)3dBG3cvjGG&Qd8^8sLi3xcO(>-NCw~iI(X`yQLivz-Itoul|0;}E4Ph851LVXS zy)g`}1D-bjqHx+33DO+9Oi5Kv>1=$Ik1zv^x^^|@<}3~IXJ3ca7i|B%O`*&S6q7l= z{F2>5YxH}l^b|Vlye=B~f|w!S50+Hpso-_pMQSiyqbPZil>x`vk6;nukG-1pCqvS6 zmPw_!du}a6K6&Vz_L|cAD&7xW3n`DbXBtjoBe#Pk0`ok0WxYAvViJ+8+73;Wd9MpL zd&b>bXR^z?ThKW)^M1o*eNCM~iO~Y*uO29<=@rhh6@IHumZv?wvpESqv%G{k`R1ei z1rW8u`_bRkg+O-G6%w;>Xn>I|ZA|l}}&=_~`laCK8}eh52Cl zGR|pEXUqSIg8H+qv7)P$SfiqSRda7loQyvt0gW#0ONVcDY^_Of?HU%tcq{gU`i9Ak zZ*}wMn&Uuu$3=(hX+pOUq$a9XOmlM~6)Pw6et$t%N3-K<7X8`}vm&j>UEAZI!?*A> zEFR>9x=D&t#5f-3c%w1yZo0~z0R@V2-(Uwh3%dLN1~07wgu3dXnKl|JGa-|V+kFo)L`#hQs{^`HO?OL*CWj2V*_r?RNepC06I0{kAUZ-@jWyyIy7w%}^mTWt8^EVID8UOZqMjW5DU~ zPi=#Y$Lr&)C7zHY-%-IUsI0OmCwoB?dtblHX$RDN$N2R^rqa%~)mS6<92uDY^O}|G zP`UB+XZWgPFb02(m4$|XTzUW0YQm;c-j$QJlz62rV1Kkn{fApxk`1!pnXlz2sCpK6 zvd3&LD3>BP4zZw__hzktnen5=ZU3s!VT-2OcVQN>r|Xvx){ulGx`^`5j!e~_G4!0~ z?2K4uA_K7iT`{hw!U@jzVbw+rr)6#~@X_ZP2O(_Q@cllTD9wBL{4zF1p3%ijOcageBwm_wze zDqdiu_;37WUPB#$#{6$s{JA3*8jXM{e;z(C7*N}Z_&=u&lV}k|eEsjUDDx8mkISN1 z1Wx7bin#-^r1k&$bqOAwN*S7j{{|Zpx7}^IF>3zGte)o{V$v5XDk`R!>|3Id)|SKX zT`E+kf(r9VN8qF2c<-TvdHn@Gf zl7+2}uAjMIV$ubKE}8Qxk{Q&+j#Dv75GgZ6#s1hWBCymAHGiNP2a?<8xvdU8wW(F_z4B_NB7W_;T+)L(a{7UJ83d5HnqnvXXsX9 zjjKV{`Drd`RPSeOq^G9@F|2Sw1kPkEJyr5G7Z#Fx#Gx;!|A-Dw&P~UxD-avhmC5-1 zx>cCH?Mn5gi^HcK_0{q_ny4tgXUcE$G2Z?AnuXF8V=wxe z;6-MeQfjx6qif&EOt;qO6JBv@UtOJw*cM|(AodGndu&_D@Z-jnqt*g%kx=Kib3hap zR+l#XzNP0G?^lz@`F?JA?izTs+}(pj<7bJ7^+#j%1lie=|{kikBBQ-)$SZVInSHJ zMB*am;2UdERHt8m;8aca*_!S`(Q{sz+4*Bzxp$*k)f?;P0*xTfqfkHkMzt@pp>ZUp{$W-9K2Xv4^o` z|5-6KvA;Mbz$VD>y`32JaLnFiOhGC}%HOiKxHWf9=mD zSg;AJcK^(t-4q#O;*Tvy_T8m8bS(OApLHL%%I0}RE<0rylmDU1^_;}t@%Bqw^5~%K zKHgu)+f!+yk@bfOdF7rCb_4sXk=0QVZi*FU)T4hwQF>E%*t0(Fc=6PWlkF2}z}AgY z&SXbPx?bbyzgjZlF5%$_5zglg2ja(MsVqJCCSltB=c?JQy%~o+unUDM&;_9*P%;T% z-PZNosF5ET>Hc?6m`hz3fx)2x@+5kStJ?4>tok_xG)4e@^!xZZ)+vqB?xx<&)3>rT z46aYE=X__?o0MG^N?z_p-}ehy`&Xo7`DNwe$Az}L@eKW4q(aia9N=ASZ;uwbLIv81 zuf^NQaj@VlG(9$`7;LbIeo}qDmyNU`T(&<^J$?1LJHa}ovyB+BRt)g*$cTd^uNog+ z`8%<`98Osk`*j>dWwDuiW8P`vof6B{%j@H#ZB$XwwgK8>P_}Ho5?@$AmTNEJIsUfa zIv3wCI{q#zE}(mCVK%nilr^RK#bS4l02>RBXpe~&v9>qfuZQpX?&#s2wM~mKfSRhG za*ru+&*9}ODanyudcDhtZ$vS9N>~_%4FHi3n}yB@fe0Ve$kXjxPx>1M77{PGmf97Z zF&34B-?@_cC4ZFVpQ4H)qti%NhKp;Tq z4{7<`D0@Vgqvj>*&vMXxQbGhkKFERl9VPM9t=wU2kD0G?DGgv|B5n#ENt2bzNEnE0 zo0kBXUI~#uWYKWbVj>{<(mkYCW@`*^*5v<4)Ma$B1c}=+YaAg*|@Oc(20fW_Zv!zbD5{d z+4RVk9j)bm^0i$^SVjrHX(M zn~3+J=xYQ&J31my=j#p`bNnt1w?{KH zz|3kZJ($Hyuk#qX>Br8ftz@Nny@TPuCCs@VDi|B&XKP0H-=LF9H`m4E|m+L4`=~LgpNM^jxCk0n|#5%K|Unjj# zytfLDWVmG)kWT=Iv^-DJ4{A zw%xu&Sxq(F=-8w}kK6g)d6P(u(7fD2@l4>-=@aMB=7PxR=6djK%D$nJaI5=W%jQRh z{tSd+=8Wf7zrf%o_irP+;=HVeu8>-KR%ZIqF&VHQf#-T{56QUwFZFFstHCuLbt$xe z+lLPFj7S_)WGnZFKghnGO>yITYCZR(5MXaI(v*Ik8a5VDPL1wr%HFPwZkSQJ*z7#+ zAbS@!qR^HbwIj;3Ls13iTt44!3V5EmMU-T_j)E^c7Jt?smU1#};xt~g_205`N)a_U zo%Ny;i28)Ffwz6`ja5O0a=0EBxb?cV4jGgP@!vv1BWv-TT`BIl6UIcL=N4zKF*CD1 zRjp8IsE)~ek@|y`0pXva;%I95{aG$EhbEhsj##$Deo3^Lg&kg$eG3u$I8Yt_QnU^s zV#ph^11hyU4rC6 zxLcjnE8$=zN02C*0)!Nh7=)sNnhmQ3MXSs59Hc1;AmXi%Wf&s( zTi8DkMj(g;2pmzG-)Kufio0kn_9C}LqqwWo-}_n}64@OY?gH8?4{8nw&4Jrd?`#7PUqCP`(j!-uOR_Tf`gm z2i_6}e&>--r=5?h4Sv;`^?T1dy$@pg_-p>9=ksS-9E-ASOvt7wnoawFW0@eH85C@m!;y4_sQbv z_ao)S17+?O)jd_6FLA_Nyc8_WmKxd#@uSOz^jJ1yKU`Sz);iqRf9waAU=vlcIIDef zMl|)2N&o>nXR_HOk!q+FU(5+6TFJ9{hx0}`W|-HdM&4cFth+7M82vtC&aM0-Zsp`Z zX=u)=v_fiZDH6Lxz7$JN(JW)Yn+xFfboVZq6UF3&l0d2GsxHKp#Ng8pUYrlGBLAk; zNN?InB&fBcKix`ArY8t=`JN4ER4z33uvOW*_23&3L4r0o`6=4%Zbm|~njG7t-SW`& zU{?wohNkdrO*Rk8=G)RI4d}lbb@)^_8e07{nTTUpoS#?M#z4=|m&%`a{HI9=Pkx!| z-G+lP8Rw9DUSDO$tZk{Bnmt|7nT_}e81Exy^wPJiLmKLJd=-D8C!D1bGABkdTx3_< zLCR=*u8f^RYadIkBjYy@yID!44mU`=BNhJWCHN8!l^h#wq>*H#F_ZFyq$R|6GQ#zh z8Rrv^c)IBx5u-F=qxr-1JC^uMe9uen1!>zuYEOeZ?o0`M?$c%}nGzCr=VL~bhtq?n z(?k3}POmV>gNjY%f&rDmRx07T+sea;7rL6Uk#$Jlc=%HxzrnSR^zp2hzuO#Rk{+oP z>bU;T_pcI~$^OrA=L>P?!o8|j;)RvXwY)!9?R=2)?yfv9CL(`#vFse+3H7u34Bx_$ z>b~t{Tc($BXGOI|ddmj}a1<|#4)S@04Q`SWiul}jR!3Vfzus3#7LV5#;M=;<8O8o2EcBLBDVJH>X`h>+3NMjOtx%jnxB0UzH?OWz)U7|!UzRscUDweJ9 zjy6@JUk|O4+`-6rK+wsB`!1$d22zy5H%hFf?Fe@xR=n#Nl)@di42;JPWIE*L;(35T z^m#&S4h_n)xwT#t!3$s)jjdDp1HHuuTG`?;5yfZ2dPHBE-nsb#f&*4R8DoHj)Ubk; zgXVFQY{+rFkS^Kue?US7Nf={ZLaJEv{pZrnyj?plaYTc9?FYiSH6U|Ax=8cs#9k=) z>l$A}aaqYphpnkEX>07=IG}=qVL#j2~|c+0agZ)j7e+ z!s`=zwi46LZ5Pbx2;#S9?wO-tpwH&L9yB$89v-&X2C7TFgVumh-{+clAULClLPl7;~LnG_V z=X8A=kevM3={N|e&8bvwtyK2<6XqSC_rCq>sn&kj>R>f8852%Ce0T(8*$$`1*=hHQh`^y9RzQV8V}D;u zl5e@PQ@`z0uy=X3@5l6U=NjUMcs_uQ$QRt+k)t}qLvSD)As1ER^KlQw#Ywx2Vg3rz zei|hS|Eq3ruzy=`%Y`>(*y+OD(^wyuzU(VS6HAJ_&p0%tH-TGB&YYp2E~_B3KUaTw)sVuQLFgVa>c{lgo%h?D-8(IU)@_*^gP3ekIS%l*RL zrW1w5;gt>an(3uwR7S%LRom5eBsm)I7(yXVR+~>2$-g&aSQi8Mdy^^i#S9FugNxEf z30f}Sp$at-O|gXEW<~73v)^dpvyyA3Ta=aEoD8Ojsg z&lv93QmxWcFNB{phnFufrjS0LpS5sv@w4~aPrtrIcxSquTjObWtD`^Ye|kDbDN}rsmGL^HFl~Eqt#E607+%~DXCRu;S#VVS~9VWs>#9pz<%n=`} zR8dD76|;s*MN`j{)kC%WRE&>jajvdkMF}s;^_emDU=cK#9QKS!5Nrwg5SDu0R~u&9 zt8V}yYgg4FE5#_g{Xn3T-8pL~3Tx5y#I*pT1-a*GLFq$Z1Ejyq$MbhE$b}?r*Sbg1dwzPWWFf36LdN3 zYjAK7aU|RZbgn~P5}rxyu4vzKQ8P#gK-vRNraLVr2~gQVgvRk-;LT`^cf4709G^T` z^#HuCB1T|Yltu+%4nj^81{x}zNyEtXPE~~22~uX!))__&LWF!m8$t3Prs^1OFeD5} zCkRqCh!zBRLb`(jvjVQs*G$T$d}?bc->n7jrP30r|ZC|wZFKNLC$Ut@L< zunH~(?G*Pni8~jS<70n0?L*QL0lU{VeHMzvUF=hm6nl;BqT|SK4O&PczaV6$E8%iS z*XH$M7b=P*L283@oqDs|@O|Zix`@_7{HO|rf`EriUNUqD5>0MF_?orBPd7J{Mtk1! z_3I6OMW%&8>32<)_T=B9h2$#FbvI-Kmhz8dcev97PYpI(3b*TO{s2kwfst;l^Nb-&JK-w# z>0Mw~h!3*hbb9Cpmt{G5lbqs#^y>P-NQm$P*6d4(^{N;0e#-b`e{V-qbs)q6yAV^_Y?c^1ar)D z&{x!Xin=r~gMB6PpW#2Q9Fk)cG1bgJfe)O4`#!en3B`PCRl;F)=7aHOaUWFpfp7HF zZ)1&&NwL|W{)B}xme~?`*`M?Hca?4Zfj20Db)8qNN`FuPz}O{l5&ODw!r7#s7tIkH zggp*66j3U2tfn%UY?|BD99>aOOOxR|BWVBqr`$oh?aEb23 z0|JzxXoCdJxcl&(&}*HE=B*QFzDY1>AZg;e|gpB8=^L|X6 zr?YmY@=tRmj~^4JrS6upL~Ucxl$6~kDaE*lI!})qgcFhL`(k4_T(RZ9%7-F#gH#cE z7#~}dq4o&n&$o+t7j|b#N!H)$u*so)p1=IW|1l zt!S2oexZ+n=oWBm{NAJ9;`4sn*Gb~F_Tvu64_-~vi`2YXRP9Zgu~_}n;msCSII_JxW-xDC=2jpdw&=F$`= z!&)kY=sb+Kd5FnYJdlD2Y2|I`z(uV^np=aKo7)_=u)m*%fDR1-eB+p`mvs5MGUe=& zxq3SEmwT=eSujphc>5?*!XeBkeqsH!T-aI7;?LnB*wzQs?%T>0uYKtkElFO@+jhG= zrEEn9;(a(G8rQ8NH+4UXdw*Rn9plk$Q}OXT3Xu*N-h%ja;k@~$V8P<#lSg;A63Wd| zcoRLdK#EG1D_75xPu>ap#}hp%lhxZVw2R!2o}%zwnX>_-TrUqv7Bsesy4i^3j1PVa zmu<#|S3by!F>U{kpUW5aozpuhnC_}d&dJLfq#c)0CQ8Vl!)kBS$&P1y6hLt@?muSc z{sjPAoH&`mw6w$MSj{o#rqJ6)t}Y_F`G;yKvBEKvy5Tg z$PX9~05}a6P-GNmzC=|iLsMST6+2b}q2z;FK-Z-i??)itAb<^oFRxw1d4!tALt-CI zZf%zActzxVXAZ>+0BTv`pc-}K(*#22_VzGraEg?z1O&`qD5XMhW(Ks%_4F-{lAGW8 zNC-6d@||oM9Pfh|pXXHJjN7T190U9_Hc$nex#NxDo0G!wXmAVrIBN4;0_yXS&%NF@+#URYFBUQwy|sITs`~UJng*@Jeemy=V??!X{sU zl0t5@UP(9D#p>e)+HaxYVxi}mnrimsl>!=^o&)c-;DKGiN zD)JB^xn}r*&GNn_1geCK1z?Sm5x8h0|Mvm{aWP`;%kLc@obD?EFA8$$lyOA|%4pvp z3j9vKjQt%Tk0j;_?0;!rJR=!GNvd`3mj>D8+#5nzQfS3}7UVxn+7&Q!6$1mo709g3A)?kt430lXa}{ zeQfUgNz!hL?cnnT=%5;2X0A=+;F^Rn1W}k^$VNe)78=2|LB`Kww#ruiUmT(Ucrfmm zx2>u&tsNGPDsSt6K#V|IiL|UyjlgcUx{}pseFf+5PBBwtd#RLk0eSz*!pdjLYn`FE zefXL7s?wi7M9p_e|(EP36|^wq~JG-U-Zip*U|8in(>duR1?Y4q!62mVq5 zZiz40CPE?F*=$E8vXyF|?CC}cb7WiU{CK=s*xxGEuTF-%8h{d7?yE)J1t~C0g^7gs zCpshMX=rkKM`4&h0S_!t?|DPdoR*ME``Bgn^Geuw?I&;Gdj%h@m1_G1)_ateY8hx&k0IAW9p5#*EQ1Fu01rK!bS^jbY{4cLzp zKewFov7KNFAtv*~K2`nAa3dSj!~J`wi8Ke{LQWjHV7cd>P;=ggXpBe>g$dF21wRwA zBZw*p0+!1jBu6erhM;({wR03?E}Gp<67Z{~fOqTz>3EDcxGPc!g0AKqmqq7am);0Y zK}@{^H0op+#MyLfDX+oZuRj~e9yaKaLQx2RmXQvQ3d^gYVc_L=V3YcYe$gLsnZBaP zPmG})o`nXds>!M-Lg?xlhPYhnq?wk>!&BYO#_wgbV2!Wn!?RmJ(^@h;?QPTo> z9WQy&G(4WpwnAt7WOyHffm>$1#CV^bT`oM8NoPHNrpO@PU%y1K7ik!;W$*?HQ+Cbz zn!`QXg}IYG=ecL~85%y${FuwiVVLw%%=PU+g1TJP@_+M`JrN3;Gg^OmpwTO-4vp?; zsqJZrPNF8yHd`8w5GE7!0Q;zt>Idl9cVpwB6Am9iT?`!FpDlSFyEwFE);*jiesTDO0y7c5D$;;F$E1a3KuZZ z_HZ-x53VBRAHS}dk^=U_kCfRlC(pL0%fetzt8UHk(+c&Ic{($b`4_sb5d|twl(;y= zhX<$n?MALta~Ogn2?Kcu^pe=7?@%>qGt}Qm1QU9PBAjF76=Kjj4iO#GYM$R17xZ&H z0)LM;Z#EF2p%^x~9q}->Ejog;#=b3EojiT;Ls;>W1GiL78B`oX9<3NdHHH7CS%-Z>xbCNE-Nb~ykmuih#ubB z<_>}>rb%HV4`KtLeYQjDaN}hrID17?(P^sI%klU zRALl{?i!G8knZjnlrBkW81B69y??{qAI_)q;hgh(&VJV3`&nxRsh?dqf4_7vN?*MF z95xI+bB~BeYkMh3QI{kT8M^&Rm1VCQy=58#8X|?-E(}l-ctA5_TI>EH)P(OCRW&6nTw<0FbDc%&3oM# zX(YG#2OjtQ3gI}M5gv~fO=IAOjU67Re%>dWpfq9byM_VS;ulq=Bi!UjUPZA>IQw3)e3}uLGYlHFh7X zEr*nZ`yCfOHHZu!XW`4^cn^YyW-ZG#tE#rm`}*j2Z!RzES>l4-Cm(o z=M7Ag+r?%aN5hSpI{Mmvf|o~2anmfmKS1aSpQXQ1|ae z9uIrKnBA^(2JoicxaYo0kWX&3d=Wm!Piy4%(14}vX=cR7#{qKc1--|}hu>k1`XBd2 z6*J#0)zD^sbaXTgnxEsKv!r=W>_&{Gh6ZNxnxpaCJl@sqY!_zLWYoXx+#N&uc4~cZ zd%T`w*Q-E;bj&K9SOz~(!-qFej=+~oqe26p0Mu14_S2ah>uOo$ zYmeog`5N$X!Y2mYndWdIsd62%&+5eGyzU+#f>R3e7f(tas43U;uA$3*m4A9T4}vDC z#m*CV{ifgydv*4}ZNK1~7(vkoj4*tGm3qO!l9Z^9aG9>W28rOVeumRG-7hm~ZVn~W z8W}bY%0r*fxVmtpu|8n20I5RNP%g~f(=9EyXi3-@Xav8P1y1#`Xs|%&u+WaKkjImI z0D*L9Sf-XN-5^>Ufbw(_8`*1!G}komk1~4`)h}9Df?{<-UcC^=qMb_g_<3+jjmHTu zFR1o_dwGG75lmjC+PAhNLp{E{AU=_Bo*CKi$`t>Oc>nwcB3%-Geyq8_r@o6gNL%;S zO@RIGYKqSi7_{4MNbl#F=#uBA%t^iXr71lLug^MGIiR3@FsMd^AUHk{{E0~>Q?@j- zj{PJwbI(_$pKko8t)*yd`BrXWoPPOcgu516`Dl|zyeoN7**D`misbCnMXzCe_NH$T zw}i!ZY}xa#`_Apb(Ts72MEmwaw*8~qSaEWY==;Sss6ANt>`;hGUKq+WKTp``fI}f_ zI7S>=rtx^zr%^;?_D=d&iGs!v_xfdGzwBn|;Eyu4&6^)CgeV~A7x*L7iTRp{*vCTJ znV-wfd*e??9ow7Bhi3fUi7YAK9hdVnYt*^pvxOGUKn*iaSC6ot$gPh4um^?|8?({2 zwA5fue$IAYEmnbEj9(r!Ew559Qx6YUf@QynuzpQ08XgG)0&?GW4pxh^cJDs6S+50N zGvE3K%~qj%O)W1+QfbOh`ROM7XgSaZ|B&*!X=A1yPjh0GCO>W;koq@%E@7Vl_Ybu5 ziq)QrPOYDwt+F@dH?BhJXqJ`3%lPZpNXq-C66fchgJYzf%bk}WdD_%Rn^P1D<(D;6 z1jUj;wztRUCV!92Gw)2~L7%!pEn7;$3CFT!*M{+R<6C&;KCryOXvC8TPZf_di0+Hp&fCQm1js3E*I;@O1VyD`wI_Se4Hf)Xkx?mD#+#=c$)qfw%ov&lJ|F0e7J%| zHFkbMZTYeI;k5LZhd8D$)i!_k4W*B!=6P@bUEnmUxWC7!`~!q|GPEmJ6L+$JFO-FT zHTLOygTZp^F)EE!Yi4YKxRJe5Ici0|{#TCfudyeW<;00*y@rjdidtHxF7%DQCZv+Z zv>;>=&=>8~HM8c(zopO+ZgPN?l-Hd|;`|CDwUCDv@eAqt;wJ-e1XZDPU#;7NE(@Ty z>?C{&5m#6cJ-W!~A$tYSr1AnhFD`MQSB+n^t2h(H^nd@kN*LeD-c8X$Z#cV~y-QmL zU=T%+Nj^OswH1n9jEN?DyX4x+rDI^Dt6W|?Gj98R)<)D&jxAmC6g&6dbWD#LS7R~Z zAKvaEk?A>ObB8tR{TJCzIW^aaUDp#V!0XA6mpXlO!YepZ(aAM5dS9o0(ExG}w2ZFe z)rS<`-Q2F^zY{^rJ?L(kkU}0;|0d6PTDg zTPW3fO_jwSu4gnNpCwA>7k|hQvmM?uAjbTNMG)w>58-{4opF2W1|9ArIeBWI%cM71!12-K6_UA zy-|mAR=ETUa%aanc>$#7x`ihW)XQ3Px2aWe&?35T^hBHUJVJBlzGpCyh&$pk< zTzo459fd*X0veS;=b02vVL4$RJ0Sp-FcRHe&-U<@P^j4AOVe|cwfXZ*6Z3_h58@D7 zX>y*I&vBc8dR;CSIH#|ZEJaP%m>g_KPMi%#utR0L(3Q}RAZ%TfdnnrjAs<6EMX080 z)_*X-+%PQ9RUkE0H?YB+-{yvfYnc?IWP-E-w4q_1YnwU=Pzl_4F*csjCt}QIGRNCu z^U2z?(7)xtGa}v`*O*3mqT|E5Uy(iFD{0e}#RD3bsXORyqH%I=p(vu8B0#w)Hj; zoHudfyh$RKd#16*x>=P|vnTgv<+=jpvYhAFwYJ|lIz2-B%2sGT<`wob8Kg{u=AC~& zzsJ|)lOx;r0Le|L|Fdj_zcrwWb4*#nhojO&+8AA6`?mk+Ra*O!2nY_>%ZmXr0yzMu zqD#Uc-|A>CZ{!f+h&ssNs>O5mJLW|D-C`37_50sj#NZAe$3<|${+fy8wGkJwRN7mn zfJk?0Eitb~rtHigJw3@lDmq$5mXiTp<*kGdvA)bXD z;TF+R8E5y5Ywuo`!z&is%9(J_VyqPv(*G^7Z+B;@?ufL!(?qpgX-I6A*Kh!MKspNm z{quE$9yCd;_4Qj5ZcCo7bl4Qj_)9fvm3-BSx=tpz;s=o9h_796{T7Wo(G9_Kw0CGX z=#pJzzv;qmzTURTFVqxT{2M^LsN4?t&20g+z$QQw0{(=gA`gg{4VnMVu9Pjl8!;|( z^;#G0n`x(|PI=*0lnw5w%K zo2Qvt>bC!F5h1sT5dBdv#Ik59RLS|sgfrO3W{_V&S)G=p{y(@yYIelgsT82;PTlHV zE$C8JO0B!iO5+|kwE3n&aIOaRw#w{pka^nW>iQ&~aiag98ykql zykS*i+TZYO<|Vyass(oOLHn7x`4UzaT$Iz9V|{E{Bth&3V2{gn9i)I$32$nO>@HI? zEmD~(gTe5C#{`?Cdv5X86r8de@n^5gw4FHw>3{H3jijg~0CJ4ti^h_Ev@2Q|C?z$9 zwFwHxJH>Jr!z5E({=K=CHIswxs#dXNt4L2ccV154{L{Z~5KhQN1d{Fzi$Qu|O$N%<=tqKcFsP{q8Ro^lvqSaG(Hp`~GQJe;(OVeCbWd z?uAO>fyu=@`p~n6XOia)03twk;D&s{Bx8$L;jR$Z5AmP_dsZhrCgS!(csOcqjO#z3 zVRHd!O2X9+U=?eiyLEn(uze0N=)~p6T29|v+|G31$X&0t%vG>6=CZosk)i}-TRZfq zdr9;yq4wn71_b42LRPm1pN3IRm)o6*!g(pExA6d%@lEsckvU~4cXCgbew7vwAZN9y z?E6mV^E5#)?yJD(v15F%*~-qY63g}XIg{n^fFk+68U6KdJ|q(ZPSMcff*Ej5(E#LL zroXFl!;#W9*v36chf~ZeSNKA8FEfNp7g0aPctw?-{aXtvckU#V%o!lSSO>ai)IctC zcM7s(uWuur1Ymr};prlQ0B5ljk=_D`JF>L>O3vl;G*{|1NA)2Gn08(u=}bOv9KQz( zKr@4_U_N?krKyQo)5yD;YtvjMFF$@XHEm8ene*W>^{SRrM^Q%P8xQ19OH3!D&13sk z->$hIa{DAP{XC_`lRZSVsEEO*aV+bo=k2or0#7UHL*l3U%J-{P*7E@sPhAB7N{Hqs z7Uql-P1c{BY#cBWK#HAx{ijxe_sKevs@KCr{v6ji0C6mcrrxxXE!luf;3-$#`xmJ0ZMh`+eO+AxN1ftZY{&tMm*9)2?5JE`LP$-v zGsc#-Ra~|Lw#vR+hRGfo0%ZN}{+JG&$8F;svei`S)H!j@3$M?G1qdRbBB6CuQK5#c0@+4*4FV)$;x05Lo*zz;Hrlffy?#c1b9h00V4_$J0CiO4ir0Lqt?mk!Z zYqOF6@y2NI+i?BDWEvy3@(}mIRv-qtuPjGM}Z<1lBX&&0!&y2IZ`gp`cM^U@uw4Y+dUQqF;02O&7cY?}9d;R_z|{S;hZe}zqi_6LC8WbofrJsLpbr)fSS zZd|%;@*BWIutzA5j#6l~$?+U7f77*g7i&fILcq=gg=ib5I0wbJ$O-Lr33S4i3LaY| zB3J@kC(%@-LD-m~@W*72_n3tY;f#_922s}{NP1;C^EmDii5tp*CH&b7+R|92%>vDL z>6Z+eV$yb#y1h5lnG)RQzC`>B$hOCb@H3(>;rDiZwxyA+JUN$&LN8J{ zLMl)V&$IEdfmvEsX0k&ZA0+^eG`r)cfbuzgGaw#GnqMhIEB0!b$dOu)*LNZT3e2f5 zPDG8g`JmV8aoS`Mz3g{E3J+QebUq7f=vx>$2erjq2Pg#nKCmHsnm}2T=Xi5BF4+E> zUX7Bi0sWZfqz6qWqvqPe@Qv*QsqusbSpRV6k4*nCbJO?seQ5xItWH^8M#o%>n2Hjh zyKB2$Kd%!rEzCFB!Amx}h!uXnf)G>m7mi0%6QXoBDxJ9;dRPQ5t|f&9^E%sC6zS;b zsUJUz%CD~GJv3}gzq)fkFLn$cnO(E^5hO0u{Sh`0iFHQ;9BXtjmqV|kV2s>y3WZ^Ow& z`9h~ud7^P`ICFo0m0KM2eZ!`MI(HyAxC21qzZWcZa`Sh4Xo`!I2uH68^X?_$TaFrX zr#7hI{)1Zg{Qo453%TeQC!qd)QAlp!yxX0XSvd&~PcLUw7(7F1NdFHi{h z$+Vf3GDf3x)V$-Y3}x7u_15OhW_3{mVn(C$-!lp=Tg-fQcDu@5ilYU-9S2eHfpY!u z0VV(+fw-eC>@GQowJNbjr^ks{`K5kQ0)P&E3oAPa?>QFAFNwRh{wQuq}(Xp--3_q7Gk9g6=+Q_&E< zJyuZ#`obl*_z4R&sTs}GaBsvU)n?I>)E}GzLMpJuSw2U955)iUOB=!vKu&EnWAn|M z__a^(x0ZC&X$^t6KrJc#td(gSICZZd9~m=(M;%f5LI}6R|}YfJ?*co z)u$zst%QH;=cB{&cBSvGB4rPG`yXi701U5vL^ka-*AgVvmfM=lScQzX zJyurz^8=fPjVo&I*PiBx6BS2ryLR1fTm#v;SC$}%cGz>ka-Ful+m&QEihX%Kj#lnEc z9&yGG9(5uj>iE;)b9dD*Ce%wAqeVeEBp7F|W15m><}i+B+5L%d^Rx6yb-N^WlC7aC z;`k4|E<4}l{VNS2Dm|07C1ITO^F%h-y|`e($uw5jZQ&|{g#r>zhGhuf3)q1?dm7Y zN8QXEcTLPI8lD1kh=i)NU@5ykt@F8x+}oSS+kt02;P21u`osn}AA;^-jeHX<#dc5~ z$LQ3s3=MZ18_3_ERGV+W)}d>#I)@&7;{M2oJ0))8yi?k zWl?`D1$nIHYBLQtf+J@fowFgdF zcb+k3tukov2-)lf*U0!zA8{BNVbX?9CzJ$5m&+Q|D>b&(m9M%5*c5UtXCH2299mp` zZTzu1BG8HDll39#%}aO(n^dW>{~qP?ZlHuhHO4766F`)QzKN;{Z42nsh3Ag`Ikcy% z7E3Dvm3gQE_^bGF*y8|p_J2OX zcm=nx1&ceeCKe1G4itpYoC5Fm8#js$ecdxkM;?qQWxjRz8FiuWl@ec`cip=l??@8C zFs&dA0BMR-jR74P`>CWRfeGL(32xJ2>onf)Jk$i+F4%h|7fNTC8+*RJ0sGa=>)X*4 zH%`ijpF^2b&3ugL_syNgvs@s3DVfB>$M>LYc)~90#8O#;Zp+Zflwh`1bn<8T+pVg0 zlM<#)$dR@i|Neem8&Mn@yd$nE{&dZ=W%H79x{sINJehDXSNGB)^%T$Q-Ct=O>5l;> zjd}YftXfozmbgbZJaIF*Jlcb!xfFtvng-$|>zXWsgap93sh%hderb7GK>RvI>h!jwVe1LLusLdN` zs@OP$%g1e-(aU&FJ6aN^fL`}P1x#ql$NuPp@?BkM#-up6;;bJ<7B9EV{KHTTrc46V z^C!liw##Ios=N1jaoLXt*xE;k@=?j`AV!I*0tNi$%nWeiqS-I5FOk~2H6dV+v+?b#3>pDE%zI`$SdF!2~_b##u!?3VsFJnJUQxqH4uP_L%UXIZc)_9%^4Epv+GXqo4KX1=n-A)u9}D_Rp~) zgQjwK@p$_S-A3N}$RH0yRPiilo`-REw!o|1nF&-8Z}C2Ql##*5UD_pC>7%9t1AZ*c zrh@8q2d`uIoUbI>T%~zujd$mjvACzfk|fp)2KW>&@ke>OiG`O(UVD%j5m}@p_rgbz>W2 zda^mko%fN(b;MhoT^dP0lbiV6F9cijKWlO2R-oUi}3}|?#V>e@HkRvr)lkXb;?TvfbLMS)Q;=Du*d7*M&tgCE~-XmQ@r z!?owZ2*mw~;bk=FZbap`sYT#Q55+0_X_h3F8@DFHl0p$6+*Mh6Ro|sGa;d_9Sf0U@ zf+rPHQEoU$c!kdBerjnI1VR?=967C>5Ur*-bdxqk^1vDY!kkpY1;IEP;}%CRc!XXT zyy1n}NUTAeDW~6C9I6L22`f|Pp~3&o1lN}JnXsx;DF#UZA*j8Izl?IfK}SxbV$yZE z>GFY4u2J~0ky}Xes)rU%0La~XT5i40DS?X<{a*JBjd*XMkLrEoD#+I6fbwq8HqraA z=adCltW{^`=au;~7mMtci@@I{`CjnH@Mj`PUjmaH!R`bIU4v%u# z{(HVm;X|6X*53H^U7<8~sHRS{Gy7>GOSIDyY=0tg4GUD?O)yBMXxdegRyz1`p>K!a z*%*A>5%zi7yXCX*QoR*lE$MX$YvTQgW!$!e-5#HxWzFsDm$O2v#zw%ITJ%ZUybG;Cd1ovc3o z_9#v-?t;6u^L^?~N!$Fe2GTN9kY9mHP_6t28D$wBS?Q0``rN`!RyPb!L0KHf%^ zDni}BUIS_WZ2NncW&{r`{7csDT;am{DU?B8d1CIkW&iZ;Ps}o|KlNWl@#`0J8Ybl| zIKGmjxX#I6Sa!Ot8P@T;3%A`O5t&W8*lO9x7Y|9VceOUs3i2x0*mHrij)0#sUp4nt z!ef$@kbRR?4mTc`2$RyDIyYy#o~kTFGqbB%8`lS)s|MrIqR)v5yAO(`G4!|8%X7(3 zqt|piC%3lq{e_WDZ&L@RRzSSwI3HU3lgzFER=Ej&zZxkf9xRe~?EA#J58~xlDbdwj zbvM(ks8o@QH$iqHud?sIz#iLHQrHSPzmi!;un>d=tK2g;=gAArv4cLCssGmKGDpo) znHcCM0eCzB6JQ4hp4+A7BTy6Qf~|)V1gWQei=~dH&!W&e9I6P3mlm@?F)w8x&-MTv z0KDK2lQ&fHhn_cGGhIR!=sZ->fOimzx7g!xV)O!l2bx9P0`%IB<(#|bM6G91=TDhP zHcTHhXGmbEh%|mUphue69rrEPI6w~AF4Vs`vYv$LN7+Qo1E>WMk`VkuACo3c!d~oL zl0UFz049YJ_g9X50Y0myQv!4Y#ZN^~xisnaDri)}Y9?7+qPv*Bj$cyJnO^MRRAS|l zMMjZF(a!rc59Q68(KIJ0zt9?QKZ2`&)8qI`wi)hIHu(VOfm0H+)P_vvziINC%9~w{eG@N6SDm`@9Lvu z%%(Z3)JfM?auwUM4y&ll9us3^Dnh95p)?3?(6D~Rq9bFS71$~G)-yFl#8|$BXG^oi zC}r8Hxq=^HxUX?+9^`RRwxO0GRH1I{g3_rBX%W&YB)IZ!G)GaAhbBfOt~}(P9IE&V zUfey$1*C8tx^~tci(QZ2ac0}tRT!mP!JgJ`UVL0WWoVq4pEB|Nd1PV+I*y`hl?Y|? ze#DfU>TqQr2Z3D{dZ?!z3Upl)%BXiaX=el?|Nf5X6!u;UaA~+Yay{_i+O|LJo8Q%m zGSj6MBWW|}iwy!N9QLc`DdCpE%wAu7G;Hn8VQqc3M-9M3-C$5lwZ|L+)L5gc>V8N e{=Z-Mh)%ij9(hGJdr&g=s8D{dE)SQr`20T(n{iP9 From 6ed7439d9c6c7b9b2bba07b8378a16c1cee6af43 Mon Sep 17 00:00:00 2001 From: Mitar Date: Sat, 14 Oct 2023 03:38:38 -0700 Subject: [PATCH 26/51] Do not colorize if not necessary. (#598) --- console.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/console.go b/console.go index 917d7492..921e4b33 100644 --- a/console.go +++ b/console.go @@ -319,10 +319,10 @@ func needsQuote(s string) bool { return false } -// colorize returns the string s wrapped in ANSI code c, unless disabled is true. +// colorize returns the string s wrapped in ANSI code c, unless disabled is true or c is 0. func colorize(s interface{}, c int, disabled bool) string { e := os.Getenv("NO_COLOR") - if e != "" { + if e != "" || c == 0 { disabled = true } From 2c1cbecf5258f200cb25e0ba7725acaa42177d9d Mon Sep 17 00:00:00 2001 From: Michikawa Masayoshi Date: Fri, 20 Oct 2023 18:59:49 +0900 Subject: [PATCH 27/51] hlog: add HostHandler (#604) --- hlog/hlog.go | 14 ++++++++++++++ hlog/hlog_test.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/hlog/hlog.go b/hlog/hlog.go index 37734008..e0dd512a 100644 --- a/hlog/hlog.go +++ b/hlog/hlog.go @@ -216,3 +216,17 @@ func AccessHandler(f func(r *http.Request, status, size int, duration time.Durat }) } } + +// HostHandler adds the request's host as a field to the context's logger +// using fieldKey as field key. +func HostHandler(fieldKey string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, r.Host) + }) + next.ServeHTTP(w, r) + }) + } +} diff --git a/hlog/hlog_test.go b/hlog/hlog_test.go index c584e98b..1f5a1bcd 100644 --- a/hlog/hlog_test.go +++ b/hlog/hlog_test.go @@ -292,3 +292,17 @@ func TestCtxWithID(t *testing.T) { t.Errorf("CtxWithID() = %v, want %v", got, want) } } + +func TestHostHandler(t *testing.T) { + out := &bytes.Buffer{} + r := &http.Request{Host: "example.com"} + h := HostHandler("host")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("") + })) + h = NewHandler(zerolog.New(out))(h) + h.ServeHTTP(nil, r) + if want, got := `{"host":"example.com"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} From 8834256667beb60ca0be26165f16da620e0f5210 Mon Sep 17 00:00:00 2001 From: Gabriel Estavaringo Ferreira Date: Fri, 20 Oct 2023 11:15:13 -0300 Subject: [PATCH 28/51] Add Println top level method (#533) Co-authored-by: estavaringo --- log.go | 8 ++++++++ log_example_test.go | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/log.go b/log.go index 834c7e60..c1866511 100644 --- a/log.go +++ b/log.go @@ -450,6 +450,14 @@ func (l *Logger) Printf(format string, v ...interface{}) { } } +// Println sends a log event using debug level and no extra field. +// Arguments are handled in the manner of fmt.Println. +func (l *Logger) Println(v ...interface{}) { + if e := l.Debug(); e.Enabled() { + e.CallerSkipFrame(1).Msg(fmt.Sprintln(v...)) + } +} + // Write implements the io.Writer interface. This is useful to set as a writer // for the standard library log. func (l Logger) Write(p []byte) (n int, err error) { diff --git a/log_example_test.go b/log_example_test.go index 70caa66a..81e2c204 100644 --- a/log_example_test.go +++ b/log_example_test.go @@ -95,6 +95,14 @@ func ExampleLogger_Printf() { // Output: {"level":"debug","message":"hello world"} } +func ExampleLogger_Println() { + log := zerolog.New(os.Stdout) + + log.Println("hello world") + + // Output: {"level":"debug","message":"hello world\n"} +} + func ExampleLogger_Trace() { log := zerolog.New(os.Stdout) From 507a426bf81a37ca51485b39c2e1b2c179cb07e7 Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 20 Oct 2023 07:17:01 -0700 Subject: [PATCH 29/51] Use map for formatted levels. (#599) --- console.go | 23 ++++++----------------- globals.go | 28 ++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/console.go b/console.go index 921e4b33..e8eeaa33 100644 --- a/console.go +++ b/console.go @@ -387,27 +387,16 @@ func consoleDefaultFormatLevel(noColor bool) Formatter { return func(i interface{}) string { var l string if ll, ok := i.(string); ok { - switch ll { - case LevelTraceValue: - l = colorize("TRC", LevelColors["TRC"], noColor) - case LevelDebugValue: - l = colorize("DBG", LevelColors["DBG"], noColor) - case LevelInfoValue: - l = colorize("INF", LevelColors["INF"], noColor) - case LevelWarnValue: - l = colorize("WRN", LevelColors["WRN"], noColor) - case LevelErrorValue: - l = colorize("ERR", LevelColors["ERR"], noColor) - case LevelFatalValue: - l = colorize("FTL", LevelColors["FTL"], noColor) - case LevelPanicValue: - l = colorize("PNC", LevelColors["PNC"], noColor) - default: + level, _ := ParseLevel(ll) + fl, ok := FormattedLevels[level] + if ok { + l = colorize(fl, LevelColors[level], noColor) + } else { l = strings.ToUpper(ll)[0:3] } } else { if i == nil { - l = colorize("???", colorBold, noColor) + l = "???" } else { l = strings.ToUpper(fmt.Sprintf("%s", i))[0:3] } diff --git a/globals.go b/globals.go index 7e5ca25f..bf9e3da9 100644 --- a/globals.go +++ b/globals.go @@ -111,14 +111,26 @@ var ( // LevelColors are used by ConsoleWriter's consoleDefaultFormatLevel to color // log levels. - LevelColors = map[string]int{ - "TRC": colorBlue, - "DBG": 0, - "INF": colorGreen, - "WRN": colorYellow, - "ERR": colorRed, - "FTL": colorRed, - "PNC": colorRed, + LevelColors = map[Level]int{ + TraceLevel: colorBlue, + DebugLevel: 0, + InfoLevel: colorGreen, + WarnLevel: colorYellow, + ErrorLevel: colorRed, + FatalLevel: colorRed, + PanicLevel: colorRed, + } + + // FormattedLevels are used by ConsoleWriter's consoleDefaultFormatLevel + // for a short level name. + FormattedLevels = map[Level]string{ + TraceLevel: "TRC", + DebugLevel: "DBG", + InfoLevel: "INF", + WarnLevel: "WRN", + ErrorLevel: "ERR", + FatalLevel: "FTL", + PanicLevel: "PNC", } ) From c4046fe2cb464d5dbf29db013c75025686af8596 Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 20 Oct 2023 19:20:52 -0700 Subject: [PATCH 30/51] Zero Logger behaves like Nop logger. (#606) --- log.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/log.go b/log.go index c1866511..804093f8 100644 --- a/log.go +++ b/log.go @@ -496,6 +496,9 @@ func (l *Logger) newEvent(level Level, done func(string)) *Event { // should returns true if the log event should be logged. func (l *Logger) should(lvl Level) bool { + if l.w == nil { + return false + } if lvl < l.level || lvl < GlobalLevel() { return false } From e7034c25722f2c3c7ef2f69bf1e3fb3f6c219ca0 Mon Sep 17 00:00:00 2001 From: guangwu Date: Tue, 24 Oct 2023 10:08:36 +0800 Subject: [PATCH 31/51] chore: use buf.String() instead of string(buf.Bytes()) (#608) --- syslog_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syslog_test.go b/syslog_test.go index c168ba6a..e889b01a 100644 --- a/syslog_test.go +++ b/syslog_test.go @@ -100,7 +100,7 @@ func TestSyslogWriter_WithCEE(t *testing.T) { sw := testCEEwriter{&buf} log := New(SyslogCEEWriter(sw)) log.Info().Str("key", "value").Msg("message string") - got := string(buf.Bytes()) + got := buf.String() want := "@cee:{" if !strings.HasPrefix(got, want) { t.Errorf("Bad CEE message start: want %v, got %v", want, got) From bb14b8b9de1133342fce9aff0158b354ec72f08c Mon Sep 17 00:00:00 2001 From: Mitar Date: Wed, 8 Nov 2023 12:04:17 -0800 Subject: [PATCH 32/51] Add additional hlog logging handlers (#607) * Add HTTPVersionHandler. * Add RemoteIPHandler. * Add trimPort to HostHandler. * Add EtagHandler. * Add ResponseHeaderHandler. * Add TestGetHost. * Call AccessHandler's f also on panic. --- hlog/hlog.go | 108 +++++++++++++++++++++++++++++++++++--- hlog/hlog_test.go | 129 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 229 insertions(+), 8 deletions(-) diff --git a/hlog/hlog.go b/hlog/hlog.go index e0dd512a..06ca4adf 100644 --- a/hlog/hlog.go +++ b/hlog/hlog.go @@ -3,7 +3,9 @@ package hlog import ( "context" + "net" "net/http" + "strings" "time" "github.com/rs/xid" @@ -89,6 +91,35 @@ func RemoteAddrHandler(fieldKey string) func(next http.Handler) http.Handler { } } +func getHost(hostPort string) string { + if hostPort == "" { + return "" + } + + host, _, err := net.SplitHostPort(hostPort) + if err != nil { + return hostPort + } + return host +} + +// RemoteIPHandler is similar to RemoteAddrHandler, but logs only +// an IP, not a port. +func RemoteIPHandler(fieldKey string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ip := getHost(r.RemoteAddr) + if ip != "" { + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, ip) + }) + } + next.ServeHTTP(w, r) + }) + } +} + // UserAgentHandler adds the request's user-agent as a field to the context's logger // using fieldKey as field key. func UserAgentHandler(fieldKey string) func(next http.Handler) http.Handler { @@ -135,6 +166,21 @@ func ProtoHandler(fieldKey string) func(next http.Handler) http.Handler { } } +// HTTPVersionHandler is similar to ProtoHandler, but it does not store the "HTTP/" +// prefix in the protocol name. +func HTTPVersionHandler(fieldKey string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + proto := strings.TrimPrefix(r.Proto, "HTTP/") + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, proto) + }) + next.ServeHTTP(w, r) + }) + } +} + type idKey struct{} // IDFromRequest returns the unique id associated to the request if any. @@ -205,27 +251,75 @@ func CustomHeaderHandler(fieldKey, header string) func(next http.Handler) http.H } } +// EtagHandler adds Etag header from response's header as a field to +// the context's logger using fieldKey as field key. +func EtagHandler(fieldKey string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defer func() { + etag := w.Header().Get("Etag") + if etag != "" { + etag = strings.ReplaceAll(etag, `"`, "") + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, etag) + }) + } + }() + next.ServeHTTP(w, r) + }) + } +} + +func ResponseHeaderHandler(fieldKey, headerName string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defer func() { + value := w.Header().Get(headerName) + if value != "" { + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, value) + }) + } + }() + next.ServeHTTP(w, r) + }) + } +} + // AccessHandler returns a handler that call f after each request. func AccessHandler(f func(r *http.Request, status, size int, duration time.Duration)) func(next http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { start := time.Now() lw := mutil.WrapWriter(w) + defer func() { + f(r, lw.Status(), lw.BytesWritten(), time.Since(start)) + }() next.ServeHTTP(lw, r) - f(r, lw.Status(), lw.BytesWritten(), time.Since(start)) }) } } // HostHandler adds the request's host as a field to the context's logger -// using fieldKey as field key. -func HostHandler(fieldKey string) func(next http.Handler) http.Handler { +// using fieldKey as field key. If trimPort is set to true, then port is +// removed from the host. +func HostHandler(fieldKey string, trimPort ...bool) func(next http.Handler) http.Handler { return func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - log := zerolog.Ctx(r.Context()) - log.UpdateContext(func(c zerolog.Context) zerolog.Context { - return c.Str(fieldKey, r.Host) - }) + var host string + if len(trimPort) > 0 && trimPort[0] { + host = getHost(r.Host) + } else { + host = r.Host + } + if host != "" { + log := zerolog.Ctx(r.Context()) + log.UpdateContext(func(c zerolog.Context) zerolog.Context { + return c.Str(fieldKey, host) + }) + } next.ServeHTTP(w, r) }) } diff --git a/hlog/hlog_test.go b/hlog/hlog_test.go index 1f5a1bcd..3dc7d317 100644 --- a/hlog/hlog_test.go +++ b/hlog/hlog_test.go @@ -122,6 +122,38 @@ func TestRemoteAddrHandlerIPv6(t *testing.T) { } } +func TestRemoteIPHandler(t *testing.T) { + out := &bytes.Buffer{} + r := &http.Request{ + RemoteAddr: "1.2.3.4:1234", + } + h := RemoteIPHandler("ip")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("") + })) + h = NewHandler(zerolog.New(out))(h) + h.ServeHTTP(nil, r) + if want, got := `{"ip":"1.2.3.4"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + +func TestRemoteIPHandlerIPv6(t *testing.T) { + out := &bytes.Buffer{} + r := &http.Request{ + RemoteAddr: "[2001:db8:a0b:12f0::1]:1234", + } + h := RemoteIPHandler("ip")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("") + })) + h = NewHandler(zerolog.New(out))(h) + h.ServeHTTP(nil, r) + if want, got := `{"ip":"2001:db8:a0b:12f0::1"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + func TestUserAgentHandler(t *testing.T) { out := &bytes.Buffer{} r := &http.Request{ @@ -201,6 +233,46 @@ func TestCustomHeaderHandler(t *testing.T) { } } +func TestEtagHandler(t *testing.T) { + out := &bytes.Buffer{} + w := httptest.NewRecorder() + r := &http.Request{} + h := EtagHandler("etag")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Etag", `"abcdef"`) + w.WriteHeader(http.StatusOK) + })) + h2 := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + l := FromRequest(r) + l.Log().Msg("") + }) + h3 := NewHandler(zerolog.New(out))(h2) + h3.ServeHTTP(w, r) + if want, got := `{"etag":"abcdef"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + +func TestResponseHeaderHandler(t *testing.T) { + out := &bytes.Buffer{} + w := httptest.NewRecorder() + r := &http.Request{} + h := ResponseHeaderHandler("encoding", "Content-Encoding")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Encoding", `gzip`) + w.WriteHeader(http.StatusOK) + })) + h2 := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + l := FromRequest(r) + l.Log().Msg("") + }) + h3 := NewHandler(zerolog.New(out))(h2) + h3.ServeHTTP(w, r) + if want, got := `{"encoding":"gzip"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + func TestProtoHandler(t *testing.T) { out := &bytes.Buffer{} r := &http.Request{ @@ -217,6 +289,22 @@ func TestProtoHandler(t *testing.T) { } } +func TestHTTPVersionHandler(t *testing.T) { + out := &bytes.Buffer{} + r := &http.Request{ + Proto: "HTTP/1.1", + } + h := HTTPVersionHandler("proto")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("") + })) + h = NewHandler(zerolog.New(out))(h) + h.ServeHTTP(nil, r) + if want, got := `{"proto":"1.1"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + func TestCombinedHandlers(t *testing.T) { out := &bytes.Buffer{} r := &http.Request{ @@ -295,14 +383,53 @@ func TestCtxWithID(t *testing.T) { func TestHostHandler(t *testing.T) { out := &bytes.Buffer{} - r := &http.Request{Host: "example.com"} + r := &http.Request{Host: "example.com:8080"} h := HostHandler("host")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { l := FromRequest(r) l.Log().Msg("") })) h = NewHandler(zerolog.New(out))(h) h.ServeHTTP(nil, r) + if want, got := `{"host":"example.com:8080"}`+"\n", decodeIfBinary(out); want != got { + t.Errorf("Invalid log output, got: %s, want: %s", got, want) + } +} + +func TestHostHandlerWithoutPort(t *testing.T) { + out := &bytes.Buffer{} + r := &http.Request{Host: "example.com:8080"} + h := HostHandler("host", true)(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + l.Log().Msg("") + })) + h = NewHandler(zerolog.New(out))(h) + h.ServeHTTP(nil, r) if want, got := `{"host":"example.com"}`+"\n", decodeIfBinary(out); want != got { t.Errorf("Invalid log output, got: %s, want: %s", got, want) } } + +func TestGetHost(t *testing.T) { + tests := []struct { + input string + expected string + }{ + {"", ""}, + {"example.com:8080", "example.com"}, + {"example.com", "example.com"}, + {"invalid", "invalid"}, + {"192.168.0.1:8080", "192.168.0.1"}, + {"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:8080", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"}, + {"こんにちは.com:8080", "こんにちは.com"}, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.input, func(t *testing.T) { + result := getHost(tt.input) + if tt.expected != result { + t.Errorf("Invalid log output, got: %s, want: %s", result, tt.expected) + } + }) + } +} From 83e03c75d923022dd5d22fd8baa469efcf0e9840 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 24 Nov 2023 21:16:01 +0000 Subject: [PATCH 33/51] stop using deprecated io/ioutils package (#620) (#620) --- benchmark_test.go | 20 ++++++++++---------- binary_test.go | 1 - console_test.go | 4 ++-- context.go | 6 +++--- ctx_test.go | 8 ++++---- diode/diode_test.go | 5 ++--- hlog/hlog_test.go | 9 ++++----- hook_test.go | 4 ++-- log.go | 3 +-- 9 files changed, 28 insertions(+), 32 deletions(-) diff --git a/benchmark_test.go b/benchmark_test.go index b2bb79a3..39a35da3 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -3,7 +3,7 @@ package zerolog import ( "context" "errors" - "io/ioutil" + "io" "net" "testing" "time" @@ -15,7 +15,7 @@ var ( ) func BenchmarkLogEmpty(b *testing.B) { - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { @@ -25,7 +25,7 @@ func BenchmarkLogEmpty(b *testing.B) { } func BenchmarkDisabled(b *testing.B) { - logger := New(ioutil.Discard).Level(Disabled) + logger := New(io.Discard).Level(Disabled) b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { @@ -35,7 +35,7 @@ func BenchmarkDisabled(b *testing.B) { } func BenchmarkInfo(b *testing.B) { - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { @@ -45,7 +45,7 @@ func BenchmarkInfo(b *testing.B) { } func BenchmarkContextFields(b *testing.B) { - logger := New(ioutil.Discard).With(). + logger := New(io.Discard).With(). Str("string", "four!"). Time("time", time.Time{}). Int("int", 123). @@ -60,7 +60,7 @@ func BenchmarkContextFields(b *testing.B) { } func BenchmarkContextAppend(b *testing.B) { - logger := New(ioutil.Discard).With(). + logger := New(io.Discard).With(). Str("foo", "bar"). Logger() b.ResetTimer() @@ -72,7 +72,7 @@ func BenchmarkContextAppend(b *testing.B) { } func BenchmarkLogFields(b *testing.B) { - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { @@ -102,7 +102,7 @@ func BenchmarkLogArrayObject(b *testing.B) { obj1 := obj{"a", "b", 2} obj2 := obj{"c", "d", 3} obj3 := obj{"e", "f", 4} - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() b.ReportAllocs() for i := 0; i < b.N; i++ { @@ -224,7 +224,7 @@ func BenchmarkLogFieldType(b *testing.B) { return e.Object("k", objects[0]) }, } - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() for name := range types { f := types[name] @@ -358,7 +358,7 @@ func BenchmarkContextFieldType(b *testing.B) { return c.Timestamp() }, } - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() for name := range types { f := types[name] diff --git a/binary_test.go b/binary_test.go index b4882d7b..6559735c 100644 --- a/binary_test.go +++ b/binary_test.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" - // "io/ioutil" stdlog "log" "time" ) diff --git a/console_test.go b/console_test.go index c3dbdb3f..acf1ccbf 100644 --- a/console_test.go +++ b/console_test.go @@ -3,7 +3,7 @@ package zerolog_test import ( "bytes" "fmt" - "io/ioutil" + "io" "os" "strings" "testing" @@ -474,7 +474,7 @@ func BenchmarkConsoleWriter(b *testing.B) { var msg = []byte(`{"level": "info", "foo": "bar", "message": "HELLO", "time": "1990-01-01"}`) - w := zerolog.ConsoleWriter{Out: ioutil.Discard, NoColor: false} + w := zerolog.ConsoleWriter{Out: io.Discard, NoColor: false} for i := 0; i < b.N; i++ { w.Write(msg) diff --git a/context.go b/context.go index ff48b1fe..48c1d5d3 100644 --- a/context.go +++ b/context.go @@ -3,7 +3,7 @@ package zerolog import ( "context" "fmt" - "io/ioutil" + "io" "math" "net" "time" @@ -57,7 +57,7 @@ func (c Context) Array(key string, arr LogArrayMarshaler) Context { // Object marshals an object that implement the LogObjectMarshaler interface. func (c Context) Object(key string, obj LogObjectMarshaler) Context { - e := newEvent(LevelWriterAdapter{ioutil.Discard}, 0) + e := newEvent(LevelWriterAdapter{io.Discard}, 0) e.Object(key, obj) c.l.context = enc.AppendObjectData(c.l.context, e.buf) putEvent(e) @@ -66,7 +66,7 @@ func (c Context) Object(key string, obj LogObjectMarshaler) Context { // EmbedObject marshals and Embeds an object that implement the LogObjectMarshaler interface. func (c Context) EmbedObject(obj LogObjectMarshaler) Context { - e := newEvent(LevelWriterAdapter{ioutil.Discard}, 0) + e := newEvent(LevelWriterAdapter{io.Discard}, 0) e.EmbedObject(obj) c.l.context = enc.AppendObjectData(c.l.context, e.buf) putEvent(e) diff --git a/ctx_test.go b/ctx_test.go index 5bc41e53..d024d54a 100644 --- a/ctx_test.go +++ b/ctx_test.go @@ -2,13 +2,13 @@ package zerolog import ( "context" - "io/ioutil" + "io" "reflect" "testing" ) func TestCtx(t *testing.T) { - log := New(ioutil.Discard) + log := New(io.Discard) ctx := log.WithContext(context.Background()) log2 := Ctx(ctx) if !reflect.DeepEqual(log, *log2) { @@ -37,13 +37,13 @@ func TestCtx(t *testing.T) { } func TestCtxDisabled(t *testing.T) { - dl := New(ioutil.Discard).Level(Disabled) + dl := New(io.Discard).Level(Disabled) ctx := dl.WithContext(context.Background()) if ctx != context.Background() { t.Error("WithContext stored a disabled logger") } - l := New(ioutil.Discard).With().Str("foo", "bar").Logger() + l := New(io.Discard).With().Str("foo", "bar").Logger() ctx = l.WithContext(ctx) if !reflect.DeepEqual(Ctx(ctx), &l) { t.Error("WithContext did not store logger") diff --git a/diode/diode_test.go b/diode/diode_test.go index d0d0afff..87f62bcd 100644 --- a/diode/diode_test.go +++ b/diode/diode_test.go @@ -3,7 +3,6 @@ package diode_test import ( "bytes" "fmt" - "io/ioutil" "log" "os" "testing" @@ -39,7 +38,7 @@ func TestClose(t *testing.T) { } func Benchmark(b *testing.B) { - log.SetOutput(ioutil.Discard) + log.SetOutput(io.Discard) defer log.SetOutput(os.Stderr) benchs := map[string]time.Duration{ "Waiter": 0, @@ -47,7 +46,7 @@ func Benchmark(b *testing.B) { } for name, interval := range benchs { b.Run(name, func(b *testing.B) { - w := diode.NewWriter(ioutil.Discard, 100000, interval, nil) + w := diode.NewWriter(io.Discard, 100000, interval, nil) log := zerolog.New(w) defer w.Close() diff --git a/hlog/hlog_test.go b/hlog/hlog_test.go index 3dc7d317..0d6b31ea 100644 --- a/hlog/hlog_test.go +++ b/hlog/hlog_test.go @@ -7,7 +7,6 @@ import ( "bytes" "context" "fmt" - "io/ioutil" "net/http" "net/http/httptest" "net/url" @@ -333,10 +332,10 @@ func BenchmarkHandlers(b *testing.B) { })) h2 := MethodHandler("method")(RequestHandler("request")(h1)) handlers := map[string]http.Handler{ - "Single": NewHandler(zerolog.New(ioutil.Discard))(h1), - "Combined": NewHandler(zerolog.New(ioutil.Discard))(h2), - "SingleDisabled": NewHandler(zerolog.New(ioutil.Discard).Level(zerolog.Disabled))(h1), - "CombinedDisabled": NewHandler(zerolog.New(ioutil.Discard).Level(zerolog.Disabled))(h2), + "Single": NewHandler(zerolog.New(io.Discard))(h1), + "Combined": NewHandler(zerolog.New(io.Discard))(h2), + "SingleDisabled": NewHandler(zerolog.New(io.Discard).Level(zerolog.Disabled))(h1), + "CombinedDisabled": NewHandler(zerolog.New(io.Discard).Level(zerolog.Disabled))(h2), } for name := range handlers { h := handlers[name] diff --git a/hook_test.go b/hook_test.go index e9f5b9ee..100b71e6 100644 --- a/hook_test.go +++ b/hook_test.go @@ -3,7 +3,7 @@ package zerolog import ( "bytes" "context" - "io/ioutil" + "io" "testing" ) @@ -172,7 +172,7 @@ func TestHook(t *testing.T) { } func BenchmarkHooks(b *testing.B) { - logger := New(ioutil.Discard) + logger := New(io.Discard) b.ResetTimer() b.Run("Nop/Single", func(b *testing.B) { log := logger.Hook(nopHook) diff --git a/log.go b/log.go index 804093f8..caa18455 100644 --- a/log.go +++ b/log.go @@ -118,7 +118,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "os" "strconv" "strings" @@ -246,7 +245,7 @@ type Logger struct { // you may consider using sync wrapper. func New(w io.Writer) Logger { if w == nil { - w = ioutil.Discard + w = io.Discard } lw, ok := w.(LevelWriter) if !ok { From 93fb5cb2158f94a351c82b4f712017f8c8d758b8 Mon Sep 17 00:00:00 2001 From: Mitar Date: Mon, 27 Nov 2023 19:20:40 -0800 Subject: [PATCH 34/51] Add TriggerLevelWriter. (#602) See: https://github.com/rs/zerolog/issues/583 --- globals.go | 4 ++ writer.go | 132 +++++++++++++++++++++++++++++++++++++++++++++++++ writer_test.go | 55 +++++++++++++++++++++ 3 files changed, 191 insertions(+) diff --git a/globals.go b/globals.go index bf9e3da9..b38a7fce 100644 --- a/globals.go +++ b/globals.go @@ -132,6 +132,10 @@ var ( FatalLevel: "FTL", PanicLevel: "PNC", } + + // TriggerLevelWriterBufferReuseLimit is a limit in bytes that a buffer is dropped + // from the TriggerLevelWriter buffer pool if the buffer grows above the limit. + TriggerLevelWriterBufferReuseLimit = 64 * 1024 ) var ( diff --git a/writer.go b/writer.go index 9b9ef88e..50d7653d 100644 --- a/writer.go +++ b/writer.go @@ -180,3 +180,135 @@ func (w *FilteredLevelWriter) WriteLevel(level Level, p []byte) (int, error) { } return len(p), nil } + +var triggerWriterPool = &sync.Pool{ + New: func() interface{} { + return bytes.NewBuffer(make([]byte, 0, 1024)) + }, +} + +// TriggerLevelWriter buffers log lines at the ConditionalLevel or below +// until a trigger level (or higher) line is emitted. Log lines with level +// higher than ConditionalLevel are always written out to the destination +// writer. If trigger never happens, buffered log lines are never written out. +// +// It can be used to configure "log level per request". +type TriggerLevelWriter struct { + // Destination writer. If LevelWriter is provided (usually), its WriteLevel is used + // instead of Write. + io.Writer + + // ConditionalLevel is the level (and below) at which lines are buffered until + // a trigger level (or higher) line is emitted. Usually this is set to DebugLevel. + ConditionalLevel Level + + // TriggerLevel is the lowest level that triggers the sending of the conditional + // level lines. Usually this is set to ErrorLevel. + TriggerLevel Level + + buf *bytes.Buffer + triggered bool + mu sync.Mutex +} + +func (w *TriggerLevelWriter) WriteLevel(l Level, p []byte) (n int, err error) { + w.mu.Lock() + defer w.mu.Unlock() + + // At first trigger level or above log line, we flush the buffer and change the + // trigger state to triggered. + if !w.triggered && l >= w.TriggerLevel { + err := w.trigger() + if err != nil { + return 0, err + } + } + + // Unless triggered, we buffer everything at and below ConditionalLevel. + if !w.triggered && l <= w.ConditionalLevel { + if w.buf == nil { + w.buf = triggerWriterPool.Get().(*bytes.Buffer) + } + + // We prefix each log line with a byte with the level. + // Hopefully we will never have a level value which equals a newline + // (which could interfere with reconstruction of log lines in the trigger method). + w.buf.WriteByte(byte(l)) + w.buf.Write(p) + return len(p), nil + } + + // Anything above ConditionalLevel is always passed through. + // Once triggered, everything is passed through. + if lw, ok := w.Writer.(LevelWriter); ok { + return lw.WriteLevel(l, p) + } + return w.Write(p) +} + +// trigger expects lock to be held. +func (w *TriggerLevelWriter) trigger() error { + if w.triggered { + return nil + } + w.triggered = true + + if w.buf == nil { + return nil + } + + p := w.buf.Bytes() + for len(p) > 0 { + // We do not use bufio.Scanner here because we already have full buffer + // in the memory and we do not want extra copying from the buffer to + // scanner's token slice, nor we want to hit scanner's token size limit, + // and we also want to preserve newlines. + i := bytes.IndexByte(p, '\n') + line := p[0 : i+1] + p = p[i+1:] + // We prefixed each log line with a byte with the level. + level := Level(line[0]) + line = line[1:] + var err error + if lw, ok := w.Writer.(LevelWriter); ok { + _, err = lw.WriteLevel(level, line) + } else { + _, err = w.Write(line) + } + if err != nil { + return err + } + } + + return nil +} + +// Trigger forces flushing the buffer and change the trigger state to +// triggered, if the writer has not already been triggered before. +func (w *TriggerLevelWriter) Trigger() error { + w.mu.Lock() + defer w.mu.Unlock() + + return w.trigger() +} + +// Close closes the writer and returns the buffer to the pool. +func (w *TriggerLevelWriter) Close() error { + w.mu.Lock() + defer w.mu.Unlock() + + if w.buf == nil { + return nil + } + + // We return the buffer only if it has not grown above the limit. + // This prevents accumulation of large buffers in the pool just + // because occasionally a large buffer might be needed. + if w.buf.Cap() <= TriggerLevelWriterBufferReuseLimit { + w.buf.Reset() + triggerWriterPool.Put(w.buf) + } + w.buf = nil + + return nil +} diff --git a/writer_test.go b/writer_test.go index 60595ba6..f2a61df9 100644 --- a/writer_test.go +++ b/writer_test.go @@ -195,3 +195,58 @@ func TestFilteredLevelWriter(t *testing.T) { t.Errorf("Expected %q, got %q.", want, p) } } + +type testWrite struct { + Level + Line []byte +} + +func TestTriggerLevelWriter(t *testing.T) { + tests := []struct { + write []testWrite + want []byte + all []byte + }{{ + []testWrite{ + {DebugLevel, []byte("no\n")}, + {InfoLevel, []byte("yes\n")}, + }, + []byte("yes\n"), + []byte("yes\nno\n"), + }, { + []testWrite{ + {DebugLevel, []byte("yes1\n")}, + {InfoLevel, []byte("yes2\n")}, + {ErrorLevel, []byte("yes3\n")}, + {DebugLevel, []byte("yes4\n")}, + }, + []byte("yes2\nyes1\nyes3\nyes4\n"), + []byte("yes2\nyes1\nyes3\nyes4\n"), + }} + + for k, tt := range tests { + t.Run(fmt.Sprintf("case=%d", k), func(t *testing.T) { + buf := bytes.Buffer{} + writer := TriggerLevelWriter{Writer: LevelWriterAdapter{&buf}, ConditionalLevel: DebugLevel, TriggerLevel: ErrorLevel} + t.Cleanup(func() { writer.Close() }) + for _, w := range tt.write { + _, err := writer.WriteLevel(w.Level, w.Line) + if err != nil { + t.Error(err) + } + } + p := buf.Bytes() + if want := tt.want; !bytes.Equal([]byte(want), p) { + t.Errorf("Expected %q, got %q.", want, p) + } + err := writer.Trigger() + if err != nil { + t.Error(err) + } + p = buf.Bytes() + if want := tt.all; !bytes.Equal([]byte(want), p) { + t.Errorf("Expected %q, got %q.", want, p) + } + }) + } +} From 7fa45a4dda359d9a657a2960078097415417ec73 Mon Sep 17 00:00:00 2001 From: Naveen Date: Wed, 29 Nov 2023 08:54:25 +0530 Subject: [PATCH 35/51] fixed documentation for tracing hook (#621) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 972b729f..afa61569 100644 --- a/README.md +++ b/README.md @@ -547,7 +547,7 @@ and facilitates the unification of logging and tracing in some systems: type TracingHook struct{} func (h TracingHook) Run(e *zerolog.Event, level zerolog.Level, msg string) { - ctx := e.Ctx() + ctx := e.GetCtx() spanId := getSpanIdFromContext(ctx) // as per your tracing framework e.Str("span-id", spanId) } From 3e8ae07aba942a31de38f7e36d1f2ab79d22d82b Mon Sep 17 00:00:00 2001 From: Halimao <1065621723@qq.com> Date: Sun, 24 Dec 2023 21:05:00 +0800 Subject: [PATCH 36/51] Refactor: change Hook(h Hook) to Hook(hooks ...Hook) (#629) --- log.go | 9 ++++++--- log_example_test.go | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/log.go b/log.go index caa18455..c6baa3ab 100644 --- a/log.go +++ b/log.go @@ -325,10 +325,13 @@ func (l Logger) Sample(s Sampler) Logger { } // Hook returns a logger with the h Hook. -func (l Logger) Hook(h Hook) Logger { - newHooks := make([]Hook, len(l.hooks), len(l.hooks)+1) +func (l Logger) Hook(hooks ...Hook) Logger { + if len(hooks) == 0 { + return l + } + newHooks := make([]Hook, len(l.hooks), len(l.hooks)+len(hooks)) copy(newHooks, l.hooks) - l.hooks = append(newHooks, h) + l.hooks = append(newHooks, hooks...) return l } diff --git a/log_example_test.go b/log_example_test.go index 81e2c204..c48a1e31 100644 --- a/log_example_test.go +++ b/log_example_test.go @@ -72,7 +72,7 @@ func ExampleLogger_Hook() { var levelNameHook LevelNameHook var messageHook MessageHook = "The message" - log := zerolog.New(os.Stdout).Hook(levelNameHook).Hook(messageHook) + log := zerolog.New(os.Stdout).Hook(levelNameHook, messageHook) log.Info().Msg("hello world") From a9ec232b3e0c4cb1f9c7195359ab3f410d75d803 Mon Sep 17 00:00:00 2001 From: Vitalii Solodilov Date: Wed, 3 Jan 2024 07:40:23 +0300 Subject: [PATCH 37/51] Add stacktrace to Context (#630) --- context.go | 16 ++++++++++++++++ diode/diode_test.go | 1 + hlog/hlog_test.go | 1 + pkgerrors/stacktrace_test.go | 16 ++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/context.go b/context.go index 48c1d5d3..0e4f44bb 100644 --- a/context.go +++ b/context.go @@ -163,6 +163,22 @@ func (c Context) Errs(key string, errs []error) Context { // Err adds the field "error" with serialized err to the logger context. func (c Context) Err(err error) Context { + if c.l.stack && ErrorStackMarshaler != nil { + switch m := ErrorStackMarshaler(err).(type) { + case nil: + case LogObjectMarshaler: + c = c.Object(ErrorStackFieldName, m) + case error: + if m != nil && !isNilValue(m) { + c = c.Str(ErrorStackFieldName, m.Error()) + } + case string: + c = c.Str(ErrorStackFieldName, m) + default: + c = c.Interface(ErrorStackFieldName, m) + } + } + return c.AnErr(ErrorFieldName, err) } diff --git a/diode/diode_test.go b/diode/diode_test.go index 87f62bcd..29b3f867 100644 --- a/diode/diode_test.go +++ b/diode/diode_test.go @@ -3,6 +3,7 @@ package diode_test import ( "bytes" "fmt" + "io" "log" "os" "testing" diff --git a/hlog/hlog_test.go b/hlog/hlog_test.go index 0d6b31ea..445d6b6f 100644 --- a/hlog/hlog_test.go +++ b/hlog/hlog_test.go @@ -7,6 +7,7 @@ import ( "bytes" "context" "fmt" + "io" "net/http" "net/http/httptest" "net/url" diff --git a/pkgerrors/stacktrace_test.go b/pkgerrors/stacktrace_test.go index a09b986f..787a0961 100644 --- a/pkgerrors/stacktrace_test.go +++ b/pkgerrors/stacktrace_test.go @@ -60,6 +60,22 @@ func TestLogStackFromContext(t *testing.T) { } } +func TestLogStackFromContextWith(t *testing.T) { + zerolog.ErrorStackMarshaler = MarshalStack + + err := fmt.Errorf("from error: %w", errors.New("error message")) + out := &bytes.Buffer{} + log := zerolog.New(out).With().Stack().Err(err).Logger() // calling Stack() on log context instead of event + + log.Error().Msg("") + + got := out.String() + want := `\{"level":"error","stack":\[\{"func":"TestLogStackFromContextWith","line":"66","source":"stacktrace_test.go"\},.*\],"error":"from error: error message"\}\n` + if ok, _ := regexp.MatchString(want, got); !ok { + t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) + } +} + func BenchmarkLogStack(b *testing.B) { zerolog.ErrorStackMarshaler = MarshalStack out := &bytes.Buffer{} From 602e90aeea83612a96a15d50729b401facc27395 Mon Sep 17 00:00:00 2001 From: Naveen Date: Thu, 4 Jan 2024 19:11:14 +0530 Subject: [PATCH 38/51] Fixed failing tests (#626) From 417580d1ceea7b20325a9b8db31cd65640a7eaa2 Mon Sep 17 00:00:00 2001 From: Hyuga <30320033+Hyuga-Tsukui@users.noreply.github.com> Date: Thu, 4 Jan 2024 22:45:09 +0900 Subject: [PATCH 39/51] add: ContextLogger Interface LogObjectMarshaler (#623) --- context.go | 3 +++ ctx_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/context.go b/context.go index 0e4f44bb..df352eb6 100644 --- a/context.go +++ b/context.go @@ -391,6 +391,9 @@ func (c Context) Durs(key string, d []time.Duration) Context { // Interface adds the field key with obj marshaled using reflection. func (c Context) Interface(key string, i interface{}) Context { + if obj, ok := i.(LogObjectMarshaler); ok { + return c.Object(key, obj) + } c.l.context = enc.AppendInterface(enc.AppendKey(c.l.context, key), i) return c } diff --git a/ctx_test.go b/ctx_test.go index d024d54a..397e966c 100644 --- a/ctx_test.go +++ b/ctx_test.go @@ -1,6 +1,7 @@ package zerolog import ( + "bytes" "context" "io" "reflect" @@ -68,3 +69,31 @@ func TestCtxDisabled(t *testing.T) { t.Error("WithContext did not override logger with a disabled logger") } } + +type logObjectMarshalerImpl struct { + name string + age int +} + +func (t logObjectMarshalerImpl) MarshalZerologObject(e *Event) { + e.Str("name", "custom_value").Int("age", t.age) +} + +func Test_InterfaceLogObjectMarshaler(t *testing.T) { + var buf bytes.Buffer + log := New(&buf) + ctx := log.WithContext(context.Background()) + + log2 := Ctx(ctx) + + withLog := log2.With().Interface("obj", &logObjectMarshalerImpl{ + name: "foo", + age: 29, + }).Logger() + + withLog.Info().Msg("test") + + if got, want := buf.String(), `{"level":"info","obj":{"name":"custom_value","age":29},"message":"test"}`+"\n"; got != want { + t.Errorf("got %q, want %q", got, want) + } +} From c1ab4ed9bfdd5d1fb1b849c5223d8c43e6c189fc Mon Sep 17 00:00:00 2001 From: Garret Buell Date: Sat, 13 Jan 2024 01:25:59 -0800 Subject: [PATCH 40/51] Make Log.Fatal() call Close on the writer before os.Exit(1) (#634) --- diode/diode_test.go | 38 ++++++++++++++++++++++++++++++++++++++ log.go | 9 ++++++++- writer.go | 27 +++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) diff --git a/diode/diode_test.go b/diode/diode_test.go index 29b3f867..a8d25076 100644 --- a/diode/diode_test.go +++ b/diode/diode_test.go @@ -6,6 +6,7 @@ import ( "io" "log" "os" + "os/exec" "testing" "time" @@ -38,6 +39,43 @@ func TestClose(t *testing.T) { w.Close() } +func TestFatal(t *testing.T) { + if os.Getenv("TEST_FATAL") == "1" { + w := diode.NewWriter(os.Stderr, 1000, 0, func(missed int) { + fmt.Printf("Dropped %d messages\n", missed) + }) + defer w.Close() + log := zerolog.New(w) + log.Fatal().Msg("test") + return + } + + cmd := exec.Command(os.Args[0], "-test.run=TestFatal") + cmd.Env = append(os.Environ(), "TEST_FATAL=1") + stderr, err := cmd.StderrPipe() + if err != nil { + t.Fatal(err) + } + err = cmd.Start() + if err != nil { + t.Fatal(err) + } + slurp, err := io.ReadAll(stderr) + if err != nil { + t.Fatal(err) + } + err = cmd.Wait() + if err == nil { + t.Error("Expected log.Fatal to exit with non-zero status") + } + + want := "{\"level\":\"fatal\",\"message\":\"test\"}\n" + got := string(slurp) + if got != want { + t.Errorf("Diode Fatal Test failed. got:%s, want:%s!", got, want) + } +} + func Benchmark(b *testing.B) { log.SetOutput(io.Discard) defer log.SetOutput(os.Stderr) diff --git a/log.go b/log.go index c6baa3ab..9fec7cc3 100644 --- a/log.go +++ b/log.go @@ -387,7 +387,14 @@ func (l *Logger) Err(err error) *Event { // // You must call Msg on the returned event in order to send the event. func (l *Logger) Fatal() *Event { - return l.newEvent(FatalLevel, func(msg string) { os.Exit(1) }) + return l.newEvent(FatalLevel, func(msg string) { + if closer, ok := l.w.(io.Closer); ok { + // Close the writer to flush any buffered message. Otherwise the message + // will be lost as os.Exit() terminates the program immediately. + closer.Close() + } + os.Exit(1) + }) } // Panic starts a new message with panic level. The panic() function diff --git a/writer.go b/writer.go index 50d7653d..138a612e 100644 --- a/writer.go +++ b/writer.go @@ -27,6 +27,13 @@ func (lw LevelWriterAdapter) WriteLevel(l Level, p []byte) (n int, err error) { return lw.Write(p) } +func (lw LevelWriterAdapter) Close() error { + if closer, ok := lw.Writer.(io.Closer); ok { + return closer.Close() + } + return nil +} + type syncWriter struct { mu sync.Mutex lw LevelWriter @@ -57,6 +64,15 @@ func (s *syncWriter) WriteLevel(l Level, p []byte) (n int, err error) { return s.lw.WriteLevel(l, p) } +func (s *syncWriter) Close() error { + s.mu.Lock() + defer s.mu.Unlock() + if closer, ok := s.lw.(io.Closer); ok { + return closer.Close() + } + return nil +} + type multiLevelWriter struct { writers []LevelWriter } @@ -89,6 +105,17 @@ func (t multiLevelWriter) WriteLevel(l Level, p []byte) (n int, err error) { return n, err } +func (t multiLevelWriter) Close() error { + for _, w := range t.writers { + if closer, ok := w.(io.Closer); ok { + if err := closer.Close(); err != nil { + return err + } + } + } + return nil +} + // MultiLevelWriter creates a writer that duplicates its writes to all the // provided writers, similar to the Unix tee(1) command. If some writers // implement LevelWriter, their WriteLevel method will be used instead of Write. From 4d78dc5ffa901e1c2c5905300ea701c9275f8c52 Mon Sep 17 00:00:00 2001 From: Garret Buell Date: Sat, 13 Jan 2024 10:08:26 -0800 Subject: [PATCH 41/51] Add forwarding close methods to several writer implementations (#636) --- console.go | 9 +++++++++ ctx_test.go | 4 +++- diode/diode_test.go | 2 +- syslog.go | 9 +++++++++ writer.go | 5 +++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/console.go b/console.go index e8eeaa33..cc6d623e 100644 --- a/console.go +++ b/console.go @@ -155,6 +155,15 @@ func (w ConsoleWriter) Write(p []byte) (n int, err error) { return len(p), err } +// Call the underlying writer's Close method if it is an io.Closer. Otherwise +// does nothing. +func (w ConsoleWriter) Close() error { + if closer, ok := w.Out.(io.Closer); ok { + return closer.Close() + } + return nil +} + // writeFields appends formatted key-value pairs to buf. func (w ConsoleWriter) writeFields(evt map[string]interface{}, buf *bytes.Buffer) { var fields = make([]string, 0, len(evt)) diff --git a/ctx_test.go b/ctx_test.go index 397e966c..6315cf7a 100644 --- a/ctx_test.go +++ b/ctx_test.go @@ -6,6 +6,8 @@ import ( "io" "reflect" "testing" + + "github.com/rs/zerolog/internal/cbor" ) func TestCtx(t *testing.T) { @@ -93,7 +95,7 @@ func Test_InterfaceLogObjectMarshaler(t *testing.T) { withLog.Info().Msg("test") - if got, want := buf.String(), `{"level":"info","obj":{"name":"custom_value","age":29},"message":"test"}`+"\n"; got != want { + if got, want := cbor.DecodeIfBinaryToString(buf.Bytes()), `{"level":"info","obj":{"name":"custom_value","age":29},"message":"test"}`+"\n"; got != want { t.Errorf("got %q, want %q", got, want) } } diff --git a/diode/diode_test.go b/diode/diode_test.go index a8d25076..ab6b55e3 100644 --- a/diode/diode_test.go +++ b/diode/diode_test.go @@ -70,7 +70,7 @@ func TestFatal(t *testing.T) { } want := "{\"level\":\"fatal\",\"message\":\"test\"}\n" - got := string(slurp) + got := cbor.DecodeIfBinaryToString(slurp) if got != want { t.Errorf("Diode Fatal Test failed. got:%s, want:%s!", got, want) } diff --git a/syslog.go b/syslog.go index c4082830..a2b7285d 100644 --- a/syslog.go +++ b/syslog.go @@ -78,3 +78,12 @@ func (sw syslogWriter) WriteLevel(level Level, p []byte) (n int, err error) { n = len(p) return } + +// Call the underlying writer's Close method if it is an io.Closer. Otherwise +// does nothing. +func (sw syslogWriter) Close() error { + if c, ok := sw.w.(io.Closer); ok { + return c.Close() + } + return nil +} diff --git a/writer.go b/writer.go index 138a612e..41b394d7 100644 --- a/writer.go +++ b/writer.go @@ -27,6 +27,8 @@ func (lw LevelWriterAdapter) WriteLevel(l Level, p []byte) (n int, err error) { return lw.Write(p) } +// Call the underlying writer's Close method if it is an io.Closer. Otherwise +// does nothing. func (lw LevelWriterAdapter) Close() error { if closer, ok := lw.Writer.(io.Closer); ok { return closer.Close() @@ -105,6 +107,9 @@ func (t multiLevelWriter) WriteLevel(l Level, p []byte) (n int, err error) { return n, err } +// Calls close on all the underlying writers that are io.Closers. If any of the +// Close methods return an error, the remainder of the closers are not closed +// and the error is returned. func (t multiLevelWriter) Close() error { for _, w := range t.writers { if closer, ok := w.(io.Closer); ok { From 147ae653507db96d498366e368f715f4da23bf25 Mon Sep 17 00:00:00 2001 From: Sergey <83376337+freak12techno@users.noreply.github.com> Date: Thu, 1 Feb 2024 03:56:59 +0300 Subject: [PATCH 42/51] Fix prettylog piping (#644) --- cmd/prettylog/prettylog.go | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/cmd/prettylog/prettylog.go b/cmd/prettylog/prettylog.go index 9b8b43c6..d68a1bbe 100644 --- a/cmd/prettylog/prettylog.go +++ b/cmd/prettylog/prettylog.go @@ -15,31 +15,39 @@ func isInputFromPipe() bool { return fileInfo.Mode()&os.ModeCharDevice == 0 } -func main() { +func processInput(reader io.Reader) error { writer := zerolog.NewConsoleWriter() + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + bytesToWrite := scanner.Bytes() + _, err := writer.Write(bytesToWrite) + if err != nil { + if errors.Is(err, io.EOF) { + break + } + + fmt.Printf("%s\n", bytesToWrite) + } + } + + return scanner.Err() +} + +func main() { + if isInputFromPipe() { - _, _ = io.Copy(writer, os.Stdin) + _ = processInput(os.Stdin) } else if len(os.Args) > 1 { for _, filename := range os.Args[1:] { // Scan each line from filename and write it into writer - r, err := os.Open(filename) + reader, err := os.Open(filename) if err != nil { fmt.Printf("%s open: %v", filename, err) os.Exit(1) } - scanner := bufio.NewScanner(r) - for scanner.Scan() { - _, err = writer.Write(scanner.Bytes()) - if err != nil { - if errors.Is(err, io.EOF) { - break - } - fmt.Printf("%s write: %v", filename, err) - os.Exit(1) - } - } - if err := scanner.Err(); err != nil { + + if err := processInput(reader); err != nil { fmt.Printf("%s scan: %v", filename, err) os.Exit(1) } From 9e60b1cb8eb0a4427e3b320fa9fa39d41a6c471c Mon Sep 17 00:00:00 2001 From: Sergey <83376337+freak12techno@users.noreply.github.com> Date: Sun, 4 Feb 2024 17:48:38 +0300 Subject: [PATCH 43/51] Add prettylog time format (#645) --- cmd/prettylog/prettylog.go | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/cmd/prettylog/prettylog.go b/cmd/prettylog/prettylog.go index d68a1bbe..10d77994 100644 --- a/cmd/prettylog/prettylog.go +++ b/cmd/prettylog/prettylog.go @@ -3,9 +3,11 @@ package main import ( "bufio" "errors" + "flag" "fmt" "io" "os" + "time" "github.com/rs/zerolog" ) @@ -15,9 +17,7 @@ func isInputFromPipe() bool { return fileInfo.Mode()&os.ModeCharDevice == 0 } -func processInput(reader io.Reader) error { - writer := zerolog.NewConsoleWriter() - +func processInput(reader io.Reader, writer io.Writer) error { scanner := bufio.NewScanner(reader) for scanner.Scan() { bytesToWrite := scanner.Bytes() @@ -35,11 +35,31 @@ func processInput(reader io.Reader) error { } func main() { + timeFormats := map[string]string{ + "default": time.Kitchen, + "full": time.RFC1123, + } + + timeFormatFlag := flag.String( + "time-format", + "default", + "Time format, either 'default' or 'full'", + ) + + flag.Parse() + + timeFormat, ok := timeFormats[*timeFormatFlag] + if !ok { + panic("Invalid time-format provided") + } + + writer := zerolog.NewConsoleWriter() + writer.TimeFormat = timeFormat if isInputFromPipe() { - _ = processInput(os.Stdin) - } else if len(os.Args) > 1 { - for _, filename := range os.Args[1:] { + _ = processInput(os.Stdin, writer) + } else if flag.NArg() >= 1 { + for _, filename := range flag.Args() { // Scan each line from filename and write it into writer reader, err := os.Open(filename) if err != nil { @@ -47,7 +67,7 @@ func main() { os.Exit(1) } - if err := processInput(reader); err != nil { + if err := processInput(reader, writer); err != nil { fmt.Printf("%s scan: %v", filename, err) os.Exit(1) } From af58707cd94c7405150311814231e67e226ed415 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 15:49:00 +0100 Subject: [PATCH 44/51] Bump actions/cache from 3 to 4 (#638) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 93c07565..98ead3cf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: go-version: ${{ matrix.go-version }} - name: Checkout code uses: actions/checkout@v4 - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} From bd2896587dac510be79dcea54aaa94f14c4c5822 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 15:50:57 +0100 Subject: [PATCH 45/51] Bump actions/setup-go from 4 to 5 (#625) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 98ead3cf..a9725b3d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,7 +9,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Install Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - name: Checkout code From 159cb37bb984a977c1d9e35e9425aef65b9b3a94 Mon Sep 17 00:00:00 2001 From: "Anuraag (Rag) Agrawal" Date: Sat, 2 Mar 2024 09:30:20 +0900 Subject: [PATCH 46/51] Fix context retrieval in hook example (#603) From dfd022fdfdd917aa28d273e1b87f8f53fd8ce9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=A3=AB=E6=9D=B0?= <53214666+ShiJieCloud@users.noreply.github.com> Date: Sat, 2 Mar 2024 08:30:48 +0800 Subject: [PATCH 47/51] Update README.md (#593) default log level is trace , not debug --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index afa61569..dc54997c 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ func main() { // Output: {"time":1516134303,"level":"debug","message":"hello world"} ``` > Note: By default log writes to `os.Stderr` -> Note: The default log level for `log.Print` is *debug* +> Note: The default log level for `log.Print` is *trace* ### Contextual Logging From 0d16f63a8afe56183a4416bd96409db0c477acaa Mon Sep 17 00:00:00 2001 From: Mitar Date: Fri, 1 Mar 2024 16:33:56 -0800 Subject: [PATCH 48/51] Disable HTML escaping in InterfaceMarshalFunc. (#568) --- globals.go | 19 +++++++++++++++++-- log_test.go | 9 +++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/globals.go b/globals.go index b38a7fce..ac1d9c48 100644 --- a/globals.go +++ b/globals.go @@ -1,6 +1,7 @@ package zerolog import ( + "bytes" "encoding/json" "strconv" "sync/atomic" @@ -81,8 +82,22 @@ var ( } // InterfaceMarshalFunc allows customization of interface marshaling. - // Default: "encoding/json.Marshal" - InterfaceMarshalFunc = json.Marshal + // Default: "encoding/json.Marshal" with disabled HTML escaping + InterfaceMarshalFunc = func(v interface{}) ([]byte, error) { + var buf bytes.Buffer + encoder := json.NewEncoder(&buf) + encoder.SetEscapeHTML(false) + err := encoder.Encode(v) + if err != nil { + return nil, err + } + b := buf.Bytes() + if len(b) > 0 { + // Remove trailing \n which is added by Encode. + return b[:len(b)-1], nil + } + return b, nil + } // TimeFieldFormat defines the time format of the Time field type. If set to // TimeFormatUnix, TimeFormatUnixMs, TimeFormatUnixMicro or TimeFormatUnixNano, the time is formatted as a UNIX diff --git a/log_test.go b/log_test.go index 4d0d93b1..e51eb8fb 100644 --- a/log_test.go +++ b/log_test.go @@ -1013,3 +1013,12 @@ func TestUnmarshalTextLevel(t *testing.T) { }) } } + +func TestHTMLNoEscaping(t *testing.T) { + out := &bytes.Buffer{} + log := New(out) + log.Log().Interface("head", "").Send() + if got, want := decodeIfBinaryToString(out.Bytes()), `{"head":""}`+"\n"; got != want { + t.Errorf("invalid log output:\ngot: %v\nwant: %v", got, want) + } +} From bda298df4a4bf5c42292968b3cf3f6c68fd66766 Mon Sep 17 00:00:00 2001 From: Joseph Cumines Date: Sat, 2 Mar 2024 10:49:38 +1000 Subject: [PATCH 49/51] Fix JSON encoding of float exponents to be like json.Marshal / ES6 (#537) * Fix JSON encoding of float exponents to be like json.Marshal / ES6 * Add test cases for the *e-9 JSON number encoding edge case --- internal/json/types.go | 20 ++- internal/json/types_test.go | 343 +++++++++++++++++++++++++++++++++++- 2 files changed, 360 insertions(+), 3 deletions(-) diff --git a/internal/json/types.go b/internal/json/types.go index ef3a2a7a..43feaaa8 100644 --- a/internal/json/types.go +++ b/internal/json/types.go @@ -311,7 +311,25 @@ func appendFloat(dst []byte, val float64, bitSize int) []byte { case math.IsInf(val, -1): return append(dst, `"-Inf"`...) } - return strconv.AppendFloat(dst, val, 'f', -1, bitSize) + // convert as if by es6 number to string conversion + // see also https://cs.opensource.google/go/go/+/refs/tags/go1.20.3:src/encoding/json/encode.go;l=573 + strFmt := byte('f') + // Use float32 comparisons for underlying float32 value to get precise cutoffs right. + if abs := math.Abs(val); abs != 0 { + if bitSize == 64 && (abs < 1e-6 || abs >= 1e21) || bitSize == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) { + strFmt = 'e' + } + } + dst = strconv.AppendFloat(dst, val, strFmt, -1, bitSize) + if strFmt == 'e' { + // Clean up e-09 to e-9 + n := len(dst) + if n >= 4 && dst[n-4] == 'e' && dst[n-3] == '-' && dst[n-2] == '0' { + dst[n-2] = dst[n-1] + dst = dst[:n-1] + } + } + return dst } // AppendFloat32 converts the input float32 to a string and diff --git a/internal/json/types_test.go b/internal/json/types_test.go index 26dc3e80..350affef 100644 --- a/internal/json/types_test.go +++ b/internal/json/types_test.go @@ -1,7 +1,9 @@ package json import ( + "encoding/json" "math" + "math/rand" "net" "reflect" "testing" @@ -44,7 +46,7 @@ func TestAppendType(t *testing.T) { {"AppendFloat32(0)", "AppendFloat32", float32(0), []byte(`0`)}, {"AppendFloat32(-1.1)", "AppendFloat32", float32(-1.1), []byte(`-1.1`)}, {"AppendFloat32(1e20)", "AppendFloat32", float32(1e20), []byte(`100000000000000000000`)}, - {"AppendFloat32(1e21)", "AppendFloat32", float32(1e21), []byte(`1000000000000000000000`)}, + {"AppendFloat32(1e21)", "AppendFloat32", float32(1e21), []byte(`1e+21`)}, {"AppendFloat64(-Inf)", "AppendFloat64", float64(math.Inf(-1)), []byte(`"-Inf"`)}, {"AppendFloat64(+Inf)", "AppendFloat64", float64(math.Inf(1)), []byte(`"+Inf"`)}, @@ -52,7 +54,7 @@ func TestAppendType(t *testing.T) { {"AppendFloat64(0)", "AppendFloat64", float64(0), []byte(`0`)}, {"AppendFloat64(-1.1)", "AppendFloat64", float64(-1.1), []byte(`-1.1`)}, {"AppendFloat64(1e20)", "AppendFloat64", float64(1e20), []byte(`100000000000000000000`)}, - {"AppendFloat64(1e21)", "AppendFloat64", float64(1e21), []byte(`1000000000000000000000`)}, + {"AppendFloat64(1e21)", "AppendFloat64", float64(1e21), []byte(`1e+21`)}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -207,3 +209,340 @@ func Test_appendObjectData(t *testing.T) { }) } } + +var float64Tests = []struct { + Name string + Val float64 + Want string +}{ + { + Name: "Positive integer", + Val: 1234.0, + Want: "1234", + }, + { + Name: "Negative integer", + Val: -5678.0, + Want: "-5678", + }, + { + Name: "Positive decimal", + Val: 12.3456, + Want: "12.3456", + }, + { + Name: "Negative decimal", + Val: -78.9012, + Want: "-78.9012", + }, + { + Name: "Large positive number", + Val: 123456789.0, + Want: "123456789", + }, + { + Name: "Large negative number", + Val: -987654321.0, + Want: "-987654321", + }, + { + Name: "Zero", + Val: 0.0, + Want: "0", + }, + { + Name: "Smallest positive value", + Val: math.SmallestNonzeroFloat64, + Want: "5e-324", + }, + { + Name: "Largest positive value", + Val: math.MaxFloat64, + Want: "1.7976931348623157e+308", + }, + { + Name: "Smallest negative value", + Val: -math.SmallestNonzeroFloat64, + Want: "-5e-324", + }, + { + Name: "Largest negative value", + Val: -math.MaxFloat64, + Want: "-1.7976931348623157e+308", + }, + { + Name: "NaN", + Val: math.NaN(), + Want: `"NaN"`, + }, + { + Name: "+Inf", + Val: math.Inf(1), + Want: `"+Inf"`, + }, + { + Name: "-Inf", + Val: math.Inf(-1), + Want: `"-Inf"`, + }, + { + Name: "Clean up e-09 to e-9 case 1", + Val: 1e-9, + Want: "1e-9", + }, + { + Name: "Clean up e-09 to e-9 case 2", + Val: -2.236734e-9, + Want: "-2.236734e-9", + }, +} + +func TestEncoder_AppendFloat64(t *testing.T) { + for _, tc := range float64Tests { + t.Run(tc.Name, func(t *testing.T) { + var b []byte + b = (Encoder{}).AppendFloat64(b, tc.Val) + if s := string(b); tc.Want != s { + t.Errorf("%q", s) + } + }) + } +} + +func FuzzEncoder_AppendFloat64(f *testing.F) { + for _, tc := range float64Tests { + f.Add(tc.Val) + } + f.Fuzz(func(t *testing.T, val float64) { + actual := (Encoder{}).AppendFloat64(nil, val) + if len(actual) == 0 { + t.Fatal("empty buffer") + } + + if actual[0] == '"' { + switch string(actual) { + case `"NaN"`: + if !math.IsNaN(val) { + t.Fatalf("expected %v got NaN", val) + } + case `"+Inf"`: + if !math.IsInf(val, 1) { + t.Fatalf("expected %v got +Inf", val) + } + case `"-Inf"`: + if !math.IsInf(val, -1) { + t.Fatalf("expected %v got -Inf", val) + } + default: + t.Fatalf("unexpected string: %s", actual) + } + return + } + + if expected, err := json.Marshal(val); err != nil { + t.Error(err) + } else if string(actual) != string(expected) { + t.Errorf("expected %s, got %s", expected, actual) + } + + var parsed float64 + if err := json.Unmarshal(actual, &parsed); err != nil { + t.Fatal(err) + } + + if parsed != val { + t.Fatalf("expected %v, got %v", val, parsed) + } + }) +} + +var float32Tests = []struct { + Name string + Val float32 + Want string +}{ + { + Name: "Positive integer", + Val: 1234.0, + Want: "1234", + }, + { + Name: "Negative integer", + Val: -5678.0, + Want: "-5678", + }, + { + Name: "Positive decimal", + Val: 12.3456, + Want: "12.3456", + }, + { + Name: "Negative decimal", + Val: -78.9012, + Want: "-78.9012", + }, + { + Name: "Large positive number", + Val: 123456789.0, + Want: "123456790", + }, + { + Name: "Large negative number", + Val: -987654321.0, + Want: "-987654340", + }, + { + Name: "Zero", + Val: 0.0, + Want: "0", + }, + { + Name: "Smallest positive value", + Val: math.SmallestNonzeroFloat32, + Want: "1e-45", + }, + { + Name: "Largest positive value", + Val: math.MaxFloat32, + Want: "3.4028235e+38", + }, + { + Name: "Smallest negative value", + Val: -math.SmallestNonzeroFloat32, + Want: "-1e-45", + }, + { + Name: "Largest negative value", + Val: -math.MaxFloat32, + Want: "-3.4028235e+38", + }, + { + Name: "NaN", + Val: float32(math.NaN()), + Want: `"NaN"`, + }, + { + Name: "+Inf", + Val: float32(math.Inf(1)), + Want: `"+Inf"`, + }, + { + Name: "-Inf", + Val: float32(math.Inf(-1)), + Want: `"-Inf"`, + }, + { + Name: "Clean up e-09 to e-9 case 1", + Val: 1e-9, + Want: "1e-9", + }, + { + Name: "Clean up e-09 to e-9 case 2", + Val: -2.236734e-9, + Want: "-2.236734e-9", + }, +} + +func TestEncoder_AppendFloat32(t *testing.T) { + for _, tc := range float32Tests { + t.Run(tc.Name, func(t *testing.T) { + var b []byte + b = (Encoder{}).AppendFloat32(b, tc.Val) + if s := string(b); tc.Want != s { + t.Errorf("%q", s) + } + }) + } +} + +func FuzzEncoder_AppendFloat32(f *testing.F) { + for _, tc := range float32Tests { + f.Add(tc.Val) + } + f.Fuzz(func(t *testing.T, val float32) { + actual := (Encoder{}).AppendFloat32(nil, val) + if len(actual) == 0 { + t.Fatal("empty buffer") + } + + if actual[0] == '"' { + val := float64(val) + switch string(actual) { + case `"NaN"`: + if !math.IsNaN(val) { + t.Fatalf("expected %v got NaN", val) + } + case `"+Inf"`: + if !math.IsInf(val, 1) { + t.Fatalf("expected %v got +Inf", val) + } + case `"-Inf"`: + if !math.IsInf(val, -1) { + t.Fatalf("expected %v got -Inf", val) + } + default: + t.Fatalf("unexpected string: %s", actual) + } + return + } + + if expected, err := json.Marshal(val); err != nil { + t.Error(err) + } else if string(actual) != string(expected) { + t.Errorf("expected %s, got %s", expected, actual) + } + + var parsed float32 + if err := json.Unmarshal(actual, &parsed); err != nil { + t.Fatal(err) + } + + if parsed != val { + t.Fatalf("expected %v, got %v", val, parsed) + } + }) +} + +func generateFloat32s(n int) []float32 { + floats := make([]float32, n) + for i := 0; i < n; i++ { + floats[i] = rand.Float32() + } + return floats +} + +func generateFloat64s(n int) []float64 { + floats := make([]float64, n) + for i := 0; i < n; i++ { + floats[i] = rand.Float64() + } + return floats +} + +// this is really just for the memory allocation characteristics +func BenchmarkEncoder_AppendFloat32(b *testing.B) { + floats := append(generateFloat32s(5000), float32(math.NaN()), float32(math.Inf(1)), float32(math.Inf(-1))) + dst := make([]byte, 0, 128) + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + for _, f := range floats { + dst = (Encoder{}).AppendFloat32(dst[:0], f) + } + } +} + +// this is really just for the memory allocation characteristics +func BenchmarkEncoder_AppendFloat64(b *testing.B) { + floats := append(generateFloat64s(5000), math.NaN(), math.Inf(1), math.Inf(-1)) + dst := make([]byte, 0, 128) + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + for _, f := range floats { + dst = (Encoder{}).AppendFloat64(dst[:0], f) + } + } +} From 54ebf468e54c27f79cac47f58e93d6501057507b Mon Sep 17 00:00:00 2001 From: Youming Lin Date: Fri, 1 Mar 2024 18:50:13 -0600 Subject: [PATCH 50/51] doc: update readme to use os-specific path separator (#534) * update readme to use os-specific path separator * shorten getShortLineNo example to one liner --- README.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/README.md b/README.md index dc54997c..5b1ab730 100644 --- a/README.md +++ b/README.md @@ -412,15 +412,7 @@ Equivalent of `Lshortfile`: ```go zerolog.CallerMarshalFunc = func(pc uintptr, file string, line int) string { - short := file - for i := len(file) - 1; i > 0; i-- { - if file[i] == '/' { - short = file[i+1:] - break - } - } - file = short - return file + ":" + strconv.Itoa(line) + return filepath.Base(file) + ":" + strconv.Itoa(line) } log.Logger = log.With().Caller().Logger() log.Info().Msg("hello world") From 582007f21da46f136517edb419ed44931ae72b73 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Fri, 1 Mar 2024 19:52:31 -0500 Subject: [PATCH 51/51] Add a time.Location to ConsoleWriter. (This allows UTC timestamps.) (#531) * Add a time.Location to ConsoleWriter. (This allows UTC timestamps.) * add test --- console.go | 24 ++++++++++++++++-------- console_test.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/console.go b/console.go index cc6d623e..10c1a1c9 100644 --- a/console.go +++ b/console.go @@ -57,6 +57,10 @@ type ConsoleWriter struct { // TimeFormat specifies the format for timestamp in output. TimeFormat string + // TimeLocation tells ConsoleWriter’s default FormatTimestamp + // how to localize the time. + TimeLocation *time.Location + // PartsOrder defines the order of parts in output. PartsOrder []string @@ -83,9 +87,9 @@ type ConsoleWriter struct { // NewConsoleWriter creates and initializes a new ConsoleWriter. func NewConsoleWriter(options ...func(w *ConsoleWriter)) ConsoleWriter { w := ConsoleWriter{ - Out: os.Stdout, - TimeFormat: consoleDefaultTimeFormat, - PartsOrder: consoleDefaultPartsOrder(), + Out: os.Stdout, + TimeFormat: consoleDefaultTimeFormat, + PartsOrder: consoleDefaultPartsOrder(), } for _, opt := range options { @@ -284,7 +288,7 @@ func (w ConsoleWriter) writePart(buf *bytes.Buffer, evt map[string]interface{}, } case TimestampFieldName: if w.FormatTimestamp == nil { - f = consoleDefaultFormatTimestamp(w.TimeFormat, w.NoColor) + f = consoleDefaultFormatTimestamp(w.TimeFormat, w.TimeLocation, w.NoColor) } else { f = w.FormatTimestamp } @@ -352,19 +356,23 @@ func consoleDefaultPartsOrder() []string { } } -func consoleDefaultFormatTimestamp(timeFormat string, noColor bool) Formatter { +func consoleDefaultFormatTimestamp(timeFormat string, location *time.Location, noColor bool) Formatter { if timeFormat == "" { timeFormat = consoleDefaultTimeFormat } + if location == nil { + location = time.Local + } + return func(i interface{}) string { t := "" switch tt := i.(type) { case string: - ts, err := time.ParseInLocation(TimeFieldFormat, tt, time.Local) + ts, err := time.ParseInLocation(TimeFieldFormat, tt, location) if err != nil { t = tt } else { - t = ts.Local().Format(timeFormat) + t = ts.In(location).Format(timeFormat) } case json.Number: i, err := tt.Int64() @@ -385,7 +393,7 @@ func consoleDefaultFormatTimestamp(timeFormat string, noColor bool) Formatter { } ts := time.Unix(sec, nsec) - t = ts.Format(timeFormat) + t = ts.In(location).Format(timeFormat) } } return colorize(t, colorDarkGray, noColor) diff --git a/console_test.go b/console_test.go index acf1ccbf..08121d06 100644 --- a/console_test.go +++ b/console_test.go @@ -343,6 +343,35 @@ func TestConsoleWriterConfiguration(t *testing.T) { } }) + t.Run("Sets TimeFormat and TimeLocation", func(t *testing.T) { + locs := []*time.Location{ time.Local, time.UTC } + + for _, location := range locs { + buf := &bytes.Buffer{} + w := zerolog.ConsoleWriter{ + Out: buf, + NoColor: true, + TimeFormat: time.RFC3339, + TimeLocation: location, + } + + ts := time.Unix(0, 0) + d := ts.UTC().Format(time.RFC3339) + evt := `{"time": "` + d + `", "level": "info", "message": "Foobar"}` + + _, err := w.Write([]byte(evt)) + if err != nil { + t.Errorf("Unexpected error when writing output: %s", err) + } + + expectedOutput := ts.In(location).Format(time.RFC3339) + " INF Foobar\n" + actualOutput := buf.String() + if actualOutput != expectedOutput { + t.Errorf("Unexpected output %q, want: %q (location=%s)", actualOutput, expectedOutput, location) + } + } + }) + t.Run("Sets PartsOrder", func(t *testing.T) { buf := &bytes.Buffer{} w := zerolog.ConsoleWriter{Out: buf, NoColor: true, PartsOrder: []string{"message", "level"}}