From 2f6e0b0a396c689360e12db6f5aaa1b0df4f0884 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 10 Mar 2022 16:15:56 -0500 Subject: [PATCH 01/97] Cleanup some SQL variables --- core/hooks/commit_field_changes.go | 40 ++++++------------ core/hooks/commit_language_changes.go | 19 +++------ core/hooks/commit_name_changes.go | 19 +++------ core/models/campaigns.go | 58 +++++++++------------------ core/models/resthooks.go | 32 +++++---------- core/models/webhook_event.go | 11 +++-- testsuite/testsuite.go | 4 +- 7 files changed, 62 insertions(+), 121 deletions(-) diff --git a/core/hooks/commit_field_changes.go b/core/hooks/commit_field_changes.go index 8bb345fef..22cbea049 100644 --- a/core/hooks/commit_field_changes.go +++ b/core/hooks/commit_field_changes.go @@ -68,7 +68,7 @@ func (h *commitFieldChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, // first apply our deletes // in pg9.6 we need to do this as one query per field type, in pg10 we can rewrite this to be a single query for _, fds := range fieldDeletes { - err := models.BulkQuery(ctx, "deleting contact field values", tx, deleteContactFieldsSQL, fds) + err := models.BulkQuery(ctx, "deleting contact field values", tx, sqlDeleteContactFields, fds) if err != nil { return errors.Wrapf(err, "error deleting contact fields") } @@ -76,7 +76,7 @@ func (h *commitFieldChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, // then our updates if len(fieldUpdates) > 0 { - err := models.BulkQuery(ctx, "updating contact field values", tx, updateContactFieldsSQL, fieldUpdates) + err := models.BulkQuery(ctx, "updating contact field values", tx, sqpUpdateContactFields, fieldUpdates) if err != nil { return errors.Wrapf(err, "error updating contact fields") } @@ -99,28 +99,14 @@ type FieldValue struct { Text string `json:"text"` } -const updateContactFieldsSQL = ` -UPDATE - contacts_contact c -SET - fields = COALESCE(fields,'{}'::jsonb) || r.updates::jsonb -FROM ( - VALUES(:contact_id, :updates) -) AS - r(contact_id, updates) -WHERE - c.id = r.contact_id::int -` - -const deleteContactFieldsSQL = ` -UPDATE - contacts_contact c -SET - fields = fields - r.field_uuid -FROM ( - VALUES(:contact_id, :field_uuid) -) AS - r(contact_id, field_uuid) -WHERE - c.id = r.contact_id::int -` +const sqpUpdateContactFields = ` +UPDATE contacts_contact c + SET fields = COALESCE(fields,'{}'::jsonb) || r.updates::jsonb + FROM (VALUES(:contact_id, :updates)) AS r(contact_id, updates) + WHERE c.id = r.contact_id::int` + +const sqlDeleteContactFields = ` +UPDATE contacts_contact c + SET fields = fields - r.field_uuid + FROM (VALUES(:contact_id, :field_uuid)) AS r(contact_id, field_uuid) + WHERE c.id = r.contact_id::int` diff --git a/core/hooks/commit_language_changes.go b/core/hooks/commit_language_changes.go index bfd43b263..d73aead30 100644 --- a/core/hooks/commit_language_changes.go +++ b/core/hooks/commit_language_changes.go @@ -26,7 +26,7 @@ func (h *commitLanguageChangesHook) Apply(ctx context.Context, rt *runtime.Runti } // do our update - return models.BulkQuery(ctx, "updating contact language", tx, updateContactLanguageSQL, updates) + return models.BulkQuery(ctx, "updating contact language", tx, sqlUpdateContactLanguage, updates) } // struct used for our bulk update @@ -35,15 +35,8 @@ type languageUpdate struct { Language null.String `db:"language"` } -const updateContactLanguageSQL = ` - UPDATE - contacts_contact c - SET - language = r.language - FROM ( - VALUES(:id, :language) - ) AS - r(id, language) - WHERE - c.id = r.id::int -` +const sqlUpdateContactLanguage = ` +UPDATE contacts_contact c + SET language = r.language + FROM (VALUES(:id, :language)) AS r(id, language) + WHERE c.id = r.id::int` diff --git a/core/hooks/commit_name_changes.go b/core/hooks/commit_name_changes.go index d627f8c92..2804bf6b2 100644 --- a/core/hooks/commit_name_changes.go +++ b/core/hooks/commit_name_changes.go @@ -27,7 +27,7 @@ func (h *commitNameChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, } // do our update - return models.BulkQuery(ctx, "updating contact name", tx, updateContactNameSQL, updates) + return models.BulkQuery(ctx, "updating contact name", tx, sqlUpdateContactName, updates) } // struct used for our bulk insert @@ -36,15 +36,8 @@ type nameUpdate struct { Name null.String `db:"name"` } -const updateContactNameSQL = ` - UPDATE - contacts_contact c - SET - name = r.name - FROM ( - VALUES(:id, :name) - ) AS - r(id, name) - WHERE - c.id = r.id::int -` +const sqlUpdateContactName = ` +UPDATE contacts_contact c + SET name = r.name + FROM (VALUES(:id, :name)) AS r(id, name) + WHERE c.id = r.id::int` diff --git a/core/models/campaigns.go b/core/models/campaigns.go index 117bf912c..0e6e9a4a3 100644 --- a/core/models/campaigns.go +++ b/core/models/campaigns.go @@ -626,41 +626,23 @@ type eligibleContact struct { RelToValue *time.Time `db:"rel_to_value"` } -const eligibleContactsForCreatedOnSQL = ` -SELECT - c.id AS contact_id, - c.created_on AS rel_to_value -FROM - contacts_contact c -INNER JOIN - contacts_contactgroup_contacts gc ON gc.contact_id = c.id -WHERE - gc.contactgroup_id = $1 AND c.is_active = TRUE -` - -const eligibleContactsForLastSeenOnSQL = ` -SELECT - c.id AS contact_id, - c.last_seen_on AS rel_to_value -FROM - contacts_contact c -INNER JOIN - contacts_contactgroup_contacts gc ON gc.contact_id = c.id -WHERE - gc.contactgroup_id = $1 AND c.is_active = TRUE AND c.last_seen_on IS NOT NULL -` - -const eligibleContactsForFieldSQL = ` -SELECT - c.id AS contact_id, - (c.fields->$2->>'datetime')::timestamptz AS rel_to_value -FROM - contacts_contact c -INNER JOIN - contacts_contactgroup_contacts gc ON gc.contact_id = c.id -WHERE - gc.contactgroup_id = $1 AND c.is_active = TRUE AND ARRAY[$2]::text[] <@ (extract_jsonb_keys(c.fields)) IS NOT NULL -` +const sqlEligibleContactsForCreatedOn = ` + SELECT c.id AS contact_id, c.created_on AS rel_to_value + FROM contacts_contact c +INNER JOIN contacts_contactgroup_contacts gc ON gc.contact_id = c.id + WHERE gc.contactgroup_id = $1 AND c.is_active = TRUE` + +const sqlEligibleContactsForLastSeenOn = ` + SELECT c.id AS contact_id, c.last_seen_on AS rel_to_value + FROM contacts_contact c +INNER JOIN contacts_contactgroup_contacts gc ON gc.contact_id = c.id + WHERE gc.contactgroup_id = $1 AND c.is_active = TRUE AND c.last_seen_on IS NOT NULL` + +const sqlEligibleContactsForField = ` + SELECT c.id AS contact_id, (c.fields->$2->>'datetime')::timestamptz AS rel_to_value + FROM contacts_contact c +INNER JOIN contacts_contactgroup_contacts gc ON gc.contact_id = c.id + WHERE gc.contactgroup_id = $1 AND c.is_active = TRUE AND ARRAY[$2]::text[] <@ (extract_jsonb_keys(c.fields)) IS NOT NULL` func campaignEventEligibleContacts(ctx context.Context, db Queryer, groupID GroupID, field *Field) ([]*eligibleContact, error) { var query string @@ -668,13 +650,13 @@ func campaignEventEligibleContacts(ctx context.Context, db Queryer, groupID Grou switch field.Key() { case CreatedOnKey: - query = eligibleContactsForCreatedOnSQL + query = sqlEligibleContactsForCreatedOn params = []interface{}{groupID} case LastSeenOnKey: - query = eligibleContactsForLastSeenOnSQL + query = sqlEligibleContactsForLastSeenOn params = []interface{}{groupID} default: - query = eligibleContactsForFieldSQL + query = sqlEligibleContactsForField params = []interface{}{groupID, field.UUID()} } diff --git a/core/models/resthooks.go b/core/models/resthooks.go index 970c05a76..377b756e6 100644 --- a/core/models/resthooks.go +++ b/core/models/resthooks.go @@ -91,7 +91,7 @@ func UnsubscribeResthooks(ctx context.Context, tx *sqlx.Tx, unsubs []*ResthookUn is[i] = unsubs[i] } - err := BulkQuery(ctx, "unsubscribing resthooks", tx, unsubscribeResthooksSQL, is) + err := BulkQuery(ctx, "unsubscribing resthooks", tx, sqlUnsubscribeResthooks, is) if err != nil { return errors.Wrapf(err, "error unsubscribing from resthooks") } @@ -105,24 +105,12 @@ type ResthookUnsubscribe struct { URL string `db:"url"` } -const unsubscribeResthooksSQL = ` -UPDATE - api_resthooksubscriber -SET - is_active = FALSE, - modified_on = NOW() -WHERE - id = ANY( - SELECT - s.id - FROM - api_resthooksubscriber s - JOIN api_resthook r ON s.resthook_id = r.id, - (VALUES(:org_id, :slug, :url)) AS u(org_id, slug, url) - WHERE - s.is_active = TRUE AND - r.org_id = u.org_id::int AND - r.slug = u.slug AND - s.target_url = u.url - ) -` +const sqlUnsubscribeResthooks = ` +UPDATE api_resthooksubscriber + SET is_active = FALSE, modified_on = NOW() + WHERE id = ANY( + SELECT s.id + FROM api_resthooksubscriber s + JOIN api_resthook r ON s.resthook_id = r.id, (VALUES(:org_id, :slug, :url)) AS u(org_id, slug, url) + WHERE s.is_active = TRUE AND r.org_id = u.org_id::int AND r.slug = u.slug AND s.target_url = u.url +)` diff --git a/core/models/webhook_event.go b/core/models/webhook_event.go index e11ded7ad..7fa776c56 100644 --- a/core/models/webhook_event.go +++ b/core/models/webhook_event.go @@ -33,11 +33,10 @@ func NewWebhookEvent(orgID OrgID, resthookID ResthookID, data string, createdOn return event } -const insertWebhookEventsSQL = ` -INSERT INTO api_webhookevent(data, resthook_id, org_id, created_on, action) - VALUES(:data, :resthook_id, :org_id, :created_on, 'POST') -RETURNING id -` +const sqlInsertWebhookEvents = ` +INSERT INTO api_webhookevent(data, resthook_id, org_id, created_on, action) + VALUES (:data, :resthook_id, :org_id, :created_on, 'POST') + RETURNING id` // InsertWebhookEvents inserts the passed in webhook events, assigning them ids func InsertWebhookEvents(ctx context.Context, db Queryer, events []*WebhookEvent) error { @@ -50,5 +49,5 @@ func InsertWebhookEvents(ctx context.Context, db Queryer, events []*WebhookEvent is[i] = &events[i].e } - return BulkQuery(ctx, "inserted webhook events", db, insertWebhookEventsSQL, is) + return BulkQuery(ctx, "inserted webhook events", db, sqlInsertWebhookEvents, is) } diff --git a/testsuite/testsuite.go b/testsuite/testsuite.go index 18d7f9053..b68055c84 100644 --- a/testsuite/testsuite.go +++ b/testsuite/testsuite.go @@ -178,7 +178,7 @@ func resetStorage() { must(os.RemoveAll(SessionStorageDir)) } -var resetDataSQL = ` +var sqlResetTestData = ` UPDATE contacts_contact SET current_flow_id = NULL; DELETE FROM notifications_notification; @@ -226,7 +226,7 @@ ALTER SEQUENCE campaigns_campaignevent_id_seq RESTART WITH 30000;` // undo changes made to the contact data in the test database dump. func resetData() { db := getDB() - db.MustExec(resetDataSQL) + db.MustExec(sqlResetTestData) // because groups have changed models.FlushCache() From 58c901a638afb850a1042f096f501da4aaaac74f Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 10 Mar 2022 16:46:56 -0500 Subject: [PATCH 02/97] More cleanup --- core/hooks/commit_field_changes.go | 4 +-- core/models/channel_connection.go | 13 +++------- core/models/channel_event.go | 13 ++++------ core/models/channel_logs.go | 15 +++++------- core/models/imports.go | 39 +++++++++--------------------- core/models/incident.go | 18 ++++++++------ core/models/webhook_event.go | 4 +-- 7 files changed, 41 insertions(+), 65 deletions(-) diff --git a/core/hooks/commit_field_changes.go b/core/hooks/commit_field_changes.go index 22cbea049..732345c14 100644 --- a/core/hooks/commit_field_changes.go +++ b/core/hooks/commit_field_changes.go @@ -76,7 +76,7 @@ func (h *commitFieldChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, // then our updates if len(fieldUpdates) > 0 { - err := models.BulkQuery(ctx, "updating contact field values", tx, sqpUpdateContactFields, fieldUpdates) + err := models.BulkQuery(ctx, "updating contact field values", tx, sqlUpdateContactFields, fieldUpdates) if err != nil { return errors.Wrapf(err, "error updating contact fields") } @@ -99,7 +99,7 @@ type FieldValue struct { Text string `json:"text"` } -const sqpUpdateContactFields = ` +const sqlUpdateContactFields = ` UPDATE contacts_contact c SET fields = COALESCE(fields,'{}'::jsonb) || r.updates::jsonb FROM (VALUES(:contact_id, :updates)) AS r(contact_id, updates) diff --git a/core/models/channel_connection.go b/core/models/channel_connection.go index d02beb1f2..2d6d97037 100644 --- a/core/models/channel_connection.go +++ b/core/models/channel_connection.go @@ -105,9 +105,8 @@ func (c *ChannelConnection) ErrorReason() ConnectionError { return ConnectionErr func (c *ChannelConnection) ErrorCount() int { return c.c.ErrorCount } func (c *ChannelConnection) NextAttempt() *time.Time { return c.c.NextAttempt } -const insertConnectionSQL = ` -INSERT INTO - channels_channelconnection +const sqlInsertConnection = ` +INSERT INTO channels_channelconnection ( created_on, modified_on, @@ -122,7 +121,6 @@ INSERT INTO contact_urn_id, error_count ) - VALUES( NOW(), NOW(), @@ -137,10 +135,7 @@ VALUES( :contact_urn_id, 0 ) -RETURNING - id, - NOW(); -` +RETURNING id, NOW();` // InsertIVRConnection creates a new IVR session for the passed in org, channel and contact, inserting it func InsertIVRConnection(ctx context.Context, db *sqlx.DB, orgID OrgID, channelID ChannelID, startID StartID, contactID ContactID, urnID URNID, @@ -159,7 +154,7 @@ func InsertIVRConnection(ctx context.Context, db *sqlx.DB, orgID OrgID, channelI c.ExternalID = externalID c.StartID = startID - rows, err := db.NamedQueryContext(ctx, insertConnectionSQL, c) + rows, err := db.NamedQueryContext(ctx, sqlInsertConnection, c) if err != nil { return nil, errors.Wrapf(err, "error inserting new channel connection") } diff --git a/core/models/channel_event.go b/core/models/channel_event.go index 12164dd9f..2c1281266 100644 --- a/core/models/channel_event.go +++ b/core/models/channel_event.go @@ -78,18 +78,15 @@ func (e *ChannelEvent) UnmarshalJSON(b []byte) error { return json.Unmarshal(b, &e.e) } -const insertChannelEventSQL = ` -INSERT INTO - channels_channelevent(event_type, extra, occurred_on, created_on, channel_id, contact_id, contact_urn_id, org_id) - VALUES(:event_type, :extra, :occurred_on, :created_on, :channel_id, :contact_id, :contact_urn_id, :org_id) -RETURNING - id -` +const sqlInsertChannelEvent = ` +INSERT INTO channels_channelevent(event_type, extra, occurred_on, created_on, channel_id, contact_id, contact_urn_id, org_id) + VALUES(:event_type, :extra, :occurred_on, :created_on, :channel_id, :contact_id, :contact_urn_id, :org_id) + RETURNING id` // Insert inserts this channel event to our DB. The ID of the channel event will be // set if no error is returned func (e *ChannelEvent) Insert(ctx context.Context, db Queryer) error { - return BulkQuery(ctx, "insert channel event", db, insertChannelEventSQL, []interface{}{&e.e}) + return BulkQuery(ctx, "insert channel event", db, sqlInsertChannelEvent, []interface{}{&e.e}) } // NewChannelEvent creates a new channel event for the passed in parameters, returning it diff --git a/core/models/channel_logs.go b/core/models/channel_logs.go index a0ff14b9c..385992d6c 100644 --- a/core/models/channel_logs.go +++ b/core/models/channel_logs.go @@ -35,13 +35,10 @@ type ChannelLog struct { // ID returns the id of this channel log func (l *ChannelLog) ID() ChannelLogID { return l.l.ID } -const insertChannelLogSQL = ` -INSERT INTO - channels_channellog( description, is_error, url, method, request, response, response_status, created_on, request_time, channel_id, connection_id) - VALUES(:description, :is_error, :url, :method, :request, :response, :response_status, :created_on, :request_time, :channel_id, :connection_id) -RETURNING - id as id -` +const sqlInsertChannelLog = ` +INSERT INTO channels_channellog( description, is_error, url, method, request, response, response_status, created_on, request_time, channel_id, connection_id) + VALUES(:description, :is_error, :url, :method, :request, :response, :response_status, :created_on, :request_time, :channel_id, :connection_id) + RETURNING id as id` // NewChannelLog creates a new channel log func NewChannelLog(trace *httpx.Trace, isError bool, desc string, channel *Channel, conn *ChannelConnection) *ChannelLog { @@ -87,7 +84,7 @@ func InsertChannelLogs(ctx context.Context, db Queryer, logs []*ChannelLog) erro ls[i] = &logs[i].l } - err := BulkQuery(ctx, "insert channel log", db, insertChannelLogSQL, ls) + err := BulkQuery(ctx, "insert channel log", db, sqlInsertChannelLog, ls) if err != nil { return errors.Wrapf(err, "error inserting channel log") } @@ -117,7 +114,7 @@ func InsertChannelLog(ctx context.Context, db Queryer, l.ConnectionID = conn.ID() } - err := BulkQuery(ctx, "insert channel log", db, insertChannelLogSQL, []interface{}{l}) + err := BulkQuery(ctx, "insert channel log", db, sqlInsertChannelLog, []interface{}{l}) if err != nil { return nil, errors.Wrapf(err, "error inserting channel log") } diff --git a/core/models/imports.go b/core/models/imports.go index 51785416c..bd2ada923 100644 --- a/core/models/imports.go +++ b/core/models/imports.go @@ -53,49 +53,34 @@ type ContactImport struct { BatchStatuses string `db:"batch_statuses"` } -var loadContactImportSQL = ` -SELECT - i.id AS "id", - i.org_id AS "org_id", - i.status AS "status", - i.created_by_id AS "created_by_id", - i.finished_on AS "finished_on", - array_to_string(array_agg(DISTINCT b.status), '') AS "batch_statuses" -FROM - contacts_contactimport i -LEFT OUTER JOIN - contacts_contactimportbatch b ON b.contact_import_id = i.id -WHERE - i.id = $1 -GROUP BY - i.id` +var sqlLoadContactImport = ` + SELECT i.id, i.org_id, i.status, i.created_by_id, i.finished_on, array_to_string(array_agg(DISTINCT b.status), '') AS "batch_statuses" + FROM contacts_contactimport i +LEFT OUTER JOIN contacts_contactimportbatch b ON b.contact_import_id = i.id + WHERE i.id = $1 + GROUP BY i.id` // LoadContactImport loads a contact import by ID func LoadContactImport(ctx context.Context, db Queryer, id ContactImportID) (*ContactImport, error) { i := &ContactImport{} - err := db.GetContext(ctx, i, loadContactImportSQL, id) + err := db.GetContext(ctx, i, sqlLoadContactImport, id) if err != nil { return nil, errors.Wrapf(err, "error loading contact import id=%d", id) } return i, nil } -var markContactImportFinishedSQL = ` -UPDATE - contacts_contactimport -SET - status = $2, - finished_on = $3 -WHERE - id = $1 -` +var sqlMarkContactImportFinished = ` +UPDATE contacts_contactimport + SET status = $2, finished_on = $3 + WHERE id = $1` func (i *ContactImport) MarkFinished(ctx context.Context, db Queryer, status ContactImportStatus) error { now := dates.Now() i.Status = status i.FinishedOn = &now - _, err := db.ExecContext(ctx, markContactImportFinishedSQL, i.ID, i.Status, i.FinishedOn) + _, err := db.ExecContext(ctx, sqlMarkContactImportFinished, i.ID, i.Status, i.FinishedOn) return errors.Wrap(err, "error marking import as finished") } diff --git a/core/models/incident.go b/core/models/incident.go index fcd6fe644..e9b5299ab 100644 --- a/core/models/incident.go +++ b/core/models/incident.go @@ -97,13 +97,15 @@ func IncidentWebhooksUnhealthy(ctx context.Context, db Queryer, rp *redis.Pool, return id, nil } -const insertIncidentSQL = ` -INSERT INTO notifications_incident(org_id, incident_type, scope, started_on, channel_id) VALUES($1, $2, $3, $4, $5) -ON CONFLICT DO NOTHING RETURNING id` +const sqlInsertIncident = ` +INSERT INTO notifications_incident(org_id, incident_type, scope, started_on, channel_id) + VALUES($1, $2, $3, $4, $5) +ON CONFLICT DO NOTHING + RETURNING id` func getOrCreateIncident(ctx context.Context, db Queryer, oa *OrgAssets, incident *Incident) (IncidentID, error) { var incidentID IncidentID - err := db.GetContext(ctx, &incidentID, insertIncidentSQL, incident.OrgID, incident.Type, incident.Scope, incident.StartedOn, incident.ChannelID) + err := db.GetContext(ctx, &incidentID, sqlInsertIncident, incident.OrgID, incident.Type, incident.Scope, incident.StartedOn, incident.ChannelID) if err != nil && err != sql.ErrNoRows { return NilIncidentID, errors.Wrap(err, "error inserting incident") } @@ -125,13 +127,13 @@ func getOrCreateIncident(ctx context.Context, db Queryer, oa *OrgAssets, inciden return incidentID, nil } -const selectOpenIncidentsSQL = ` +const sqlSelectOpenIncidents = ` SELECT id, org_id, incident_type, scope, started_on, ended_on, channel_id -FROM notifications_incident -WHERE ended_on IS NULL AND incident_type = ANY($1)` + FROM notifications_incident + WHERE ended_on IS NULL AND incident_type = ANY($1)` func GetOpenIncidents(ctx context.Context, db Queryer, types []IncidentType) ([]*Incident, error) { - rows, err := db.QueryxContext(ctx, selectOpenIncidentsSQL, pq.Array(types)) + rows, err := db.QueryxContext(ctx, sqlSelectOpenIncidents, pq.Array(types)) if err != nil { return nil, errors.Wrap(err, "error querying open incidents") } diff --git a/core/models/webhook_event.go b/core/models/webhook_event.go index 7fa776c56..5991e8a6e 100644 --- a/core/models/webhook_event.go +++ b/core/models/webhook_event.go @@ -34,8 +34,8 @@ func NewWebhookEvent(orgID OrgID, resthookID ResthookID, data string, createdOn } const sqlInsertWebhookEvents = ` -INSERT INTO api_webhookevent(data, resthook_id, org_id, created_on, action) - VALUES (:data, :resthook_id, :org_id, :created_on, 'POST') +INSERT INTO api_webhookevent(data, resthook_id, org_id, created_on, action) + VALUES(:data, :resthook_id, :org_id, :created_on, 'POST') RETURNING id` // InsertWebhookEvents inserts the passed in webhook events, assigning them ids From caf9b0ae897db17ce0dda5dd08a522a175623455 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 14 Mar 2022 16:09:28 -0500 Subject: [PATCH 03/97] Messages to stopped, blocked or archived contacts should immediately fail --- core/models/msgs.go | 27 ++++++++++++++++----------- core/models/msgs_test.go | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/core/models/msgs.go b/core/models/msgs.go index 698ea39de..87fbb225d 100644 --- a/core/models/msgs.go +++ b/core/models/msgs.go @@ -79,7 +79,8 @@ type MsgFailedReason null.String const ( NilMsgFailedReason = MsgFailedReason("") - MsgFailedSuspended = MsgFailedReason("S") + MsgFailedSuspended = MsgFailedReason("S") // workspace suspended + MsgFailedContact = MsgFailedReason("C") // contact blocked, stopped or archived MsgFailedLooping = MsgFailedReason("L") MsgFailedErrorLimit = MsgFailedReason("E") MsgFailedTooOld = MsgFailedReason("O") @@ -321,31 +322,31 @@ return count `) // GetMsgRepetitions gets the number of repetitions of this msg text for the given contact in the current 5 minute window -func GetMsgRepetitions(rp *redis.Pool, contactID ContactID, msg *flows.MsgOut) (int, error) { +func GetMsgRepetitions(rp *redis.Pool, contact *flows.Contact, msg *flows.MsgOut) (int, error) { rc := rp.Get() defer rc.Close() keyTime := dates.Now().UTC().Round(time.Minute * 5) key := fmt.Sprintf("msg_repetitions:%s", keyTime.Format("2006-01-02T15:04")) - return redis.Int(msgRepetitionsScript.Do(rc, key, contactID, msg.Text())) + return redis.Int(msgRepetitionsScript.Do(rc, key, contact.ID(), msg.Text())) } // NewOutgoingFlowMsg creates an outgoing message for the passed in flow message func NewOutgoingFlowMsg(rt *runtime.Runtime, org *Org, channel *Channel, session *Session, flow *Flow, out *flows.MsgOut, createdOn time.Time) (*Msg, error) { - return newOutgoingMsg(rt, org, channel, session.ContactID(), out, createdOn, session, flow, NilBroadcastID) + return newOutgoingMsg(rt, org, channel, session.Contact(), out, createdOn, session, flow, NilBroadcastID) } // NewOutgoingBroadcastMsg creates an outgoing message which is part of a broadcast -func NewOutgoingBroadcastMsg(rt *runtime.Runtime, org *Org, channel *Channel, contactID ContactID, out *flows.MsgOut, createdOn time.Time, broadcastID BroadcastID) (*Msg, error) { - return newOutgoingMsg(rt, org, channel, contactID, out, createdOn, nil, nil, broadcastID) +func NewOutgoingBroadcastMsg(rt *runtime.Runtime, org *Org, channel *Channel, contact *flows.Contact, out *flows.MsgOut, createdOn time.Time, broadcastID BroadcastID) (*Msg, error) { + return newOutgoingMsg(rt, org, channel, contact, out, createdOn, nil, nil, broadcastID) } -func newOutgoingMsg(rt *runtime.Runtime, org *Org, channel *Channel, contactID ContactID, out *flows.MsgOut, createdOn time.Time, session *Session, flow *Flow, broadcastID BroadcastID) (*Msg, error) { +func newOutgoingMsg(rt *runtime.Runtime, org *Org, channel *Channel, contact *flows.Contact, out *flows.MsgOut, createdOn time.Time, session *Session, flow *Flow, broadcastID BroadcastID) (*Msg, error) { msg := &Msg{} m := &msg.m m.UUID = out.UUID() m.OrgID = org.ID() - m.ContactID = contactID + m.ContactID = ContactID(contact.ID()) m.BroadcastID = broadcastID m.TopupID = NilTopupID m.Text = out.Text() @@ -364,13 +365,17 @@ func newOutgoingMsg(rt *runtime.Runtime, org *Org, channel *Channel, contactID C // we fail messages for suspended orgs right away m.Status = MsgStatusFailed m.FailedReason = MsgFailedSuspended + } else if contact.Status() != flows.ContactStatusActive { + // and blocked, stopped or archived contacts + m.Status = MsgStatusFailed + m.FailedReason = MsgFailedContact } else if msg.URN() == urns.NilURN || channel == nil { // if msg is missing the URN or channel, we also fail it m.Status = MsgStatusFailed m.FailedReason = MsgFailedNoDestination } else { // also fail right away if this looks like a loop - repetitions, err := GetMsgRepetitions(rt.RP, contactID, out) + repetitions, err := GetMsgRepetitions(rt.RP, contact, out) if err != nil { return nil, errors.Wrap(err, "error looking up msg repetitions") } @@ -378,7 +383,7 @@ func newOutgoingMsg(rt *runtime.Runtime, org *Org, channel *Channel, contactID C m.Status = MsgStatusFailed m.FailedReason = MsgFailedLooping - logrus.WithFields(logrus.Fields{"contact_id": contactID, "text": out.Text(), "repetitions": repetitions}).Error("too many repetitions, failing message") + logrus.WithFields(logrus.Fields{"contact_id": contact.ID(), "text": out.Text(), "repetitions": repetitions}).Error("too many repetitions, failing message") } } @@ -1082,7 +1087,7 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs // create our outgoing message out := flows.NewMsgOut(urn, channel.ChannelReference(), text, t.Attachments, t.QuickReplies, nil, flows.NilMsgTopic) - msg, err := NewOutgoingBroadcastMsg(rt, oa.Org(), channel, c.ID(), out, time.Now(), bcast.BroadcastID()) + msg, err := NewOutgoingBroadcastMsg(rt, oa.Org(), channel, contact, out, time.Now(), bcast.BroadcastID()) if err != nil { return nil, errors.Wrapf(err, "error creating outgoing message") } diff --git a/core/models/msgs_test.go b/core/models/msgs_test.go index de41a7d4a..2ab317cd8 100644 --- a/core/models/msgs_test.go +++ b/core/models/msgs_test.go @@ -32,6 +32,9 @@ func TestNewOutgoingFlowMsg(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) + blake := testdata.InsertContact(db, testdata.Org1, "79b94a23-6d13-43f4-95fe-c733ee457857", "Blake", envs.NilLanguage, models.ContactStatusBlocked) + blakeURNID := testdata.InsertContactURN(db, testdata.Org1, blake, "tel:++250700000007", 1) + tcs := []struct { ChannelUUID assets.ChannelUUID Text string @@ -118,7 +121,6 @@ func TestNewOutgoingFlowMsg(t *testing.T) { URN: urns.NilURN, URNID: models.URNID(0), Flow: testdata.Favorites, - SuspendedOrg: false, ExpectedStatus: models.MsgStatusFailed, ExpectedFailedReason: models.MsgFailedNoDestination, ExpectedMetadata: map[string]interface{}{}, @@ -129,16 +131,28 @@ func TestNewOutgoingFlowMsg(t *testing.T) { ChannelUUID: "", Text: "missing Channel", Contact: testdata.Cathy, - URN: urns.NilURN, - URNID: models.URNID(0), + URN: urns.URN(fmt.Sprintf("tel:+250700000001?id=%d", testdata.Cathy.URNID)), + URNID: testdata.Cathy.URNID, Flow: testdata.Favorites, - SuspendedOrg: false, ExpectedStatus: models.MsgStatusFailed, ExpectedFailedReason: models.MsgFailedNoDestination, ExpectedMetadata: map[string]interface{}{}, ExpectedMsgCount: 1, ExpectedPriority: false, }, + { + ChannelUUID: "74729f45-7f29-4868-9dc4-90e491e3c7d8", + Text: "blocked contact", + Contact: blake, + URN: urns.URN(fmt.Sprintf("tel:+250700000007?id=%d", blakeURNID)), + URNID: blakeURNID, + Flow: testdata.Favorites, + ExpectedStatus: models.MsgStatusFailed, + ExpectedFailedReason: models.MsgFailedContact, + ExpectedMetadata: map[string]interface{}{}, + ExpectedMsgCount: 1, + ExpectedPriority: false, + }, } now := time.Now() @@ -152,7 +166,7 @@ func TestNewOutgoingFlowMsg(t *testing.T) { channel := oa.ChannelByUUID(tc.ChannelUUID) flow, _ := oa.FlowByID(tc.Flow.ID) - session := insertTestSession(t, ctx, rt, testdata.Org1, testdata.Cathy, testdata.Favorites) + session := insertTestSession(t, ctx, rt, testdata.Org1, tc.Contact, testdata.Favorites) if tc.ResponseTo != models.NilMsgID { session.SetIncomingMsg(flows.MsgID(tc.ResponseTo), null.NullString) } @@ -188,7 +202,7 @@ func TestNewOutgoingFlowMsg(t *testing.T) { } // check nil failed reasons are saved as NULLs - assertdb.Query(t, db, `SELECT count(*) FROM msgs_msg WHERE failed_reason IS NOT NULL`).Returns(3) + assertdb.Query(t, db, `SELECT count(*) FROM msgs_msg WHERE failed_reason IS NOT NULL`).Returns(4) // ensure org is unsuspended db.MustExec(`UPDATE orgs_org SET is_suspended = FALSE`) @@ -254,6 +268,8 @@ func TestMarshalMsg(t *testing.T) { msg1, err := models.NewOutgoingFlowMsg(rt, oa.Org(), channel, session, flow, flowMsg1, time.Date(2021, 11, 9, 14, 3, 30, 0, time.UTC)) require.NoError(t, err) + cathy := session.Contact() + err = models.InsertMessages(ctx, db, []*models.Msg{msg1}) require.NoError(t, err) @@ -344,7 +360,7 @@ func TestMarshalMsg(t *testing.T) { // try a broadcast message which won't have session and flow fields set bcastID := testdata.InsertBroadcast(db, testdata.Org1, `eng`, map[envs.Language]string{`eng`: "Blast"}, models.NilScheduleID, []*testdata.Contact{testdata.Cathy}, nil) bcastMsg1 := flows.NewMsgOut(urn, assets.NewChannelReference(testdata.TwilioChannel.UUID, "Test Channel"), "Blast", nil, nil, nil, flows.NilMsgTopic) - msg3, err := models.NewOutgoingBroadcastMsg(rt, oa.Org(), channel, testdata.Cathy.ID, bcastMsg1, time.Date(2021, 11, 9, 14, 3, 30, 0, time.UTC), bcastID) + msg3, err := models.NewOutgoingBroadcastMsg(rt, oa.Org(), channel, cathy, bcastMsg1, time.Date(2021, 11, 9, 14, 3, 30, 0, time.UTC), bcastID) require.NoError(t, err) err = models.InsertMessages(ctx, db, []*models.Msg{msg2}) @@ -466,18 +482,21 @@ func TestResendMessages(t *testing.T) { } func TestGetMsgRepetitions(t *testing.T) { - _, _, _, rp := testsuite.Get() + _, rt, db, rp := testsuite.Get() defer testsuite.Reset(testsuite.ResetRedis) defer dates.SetNowSource(dates.DefaultNowSource) dates.SetNowSource(dates.NewFixedNowSource(time.Date(2021, 11, 18, 12, 13, 3, 234567, time.UTC))) + oa := testdata.Org1.Load(rt) + _, cathy := testdata.Cathy.Load(db, oa) + msg1 := flows.NewMsgOut(testdata.Cathy.URN, nil, "foo", nil, nil, nil, flows.NilMsgTopic) msg2 := flows.NewMsgOut(testdata.Cathy.URN, nil, "bar", nil, nil, nil, flows.NilMsgTopic) assertRepetitions := func(m *flows.MsgOut, expected int) { - count, err := models.GetMsgRepetitions(rp, testdata.Cathy.ID, m) + count, err := models.GetMsgRepetitions(rp, cathy, m) require.NoError(t, err) assert.Equal(t, expected, count) } From c00eee5b776ae9d8711e7caea3a5267bc4bce1c8 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 15 Mar 2022 11:00:08 -0500 Subject: [PATCH 04/97] Replace last usages of old locker code --- core/models/contacts.go | 8 ++- core/runner/runner.go | 19 ++++--- core/tasks/handler/worker.go | 8 +-- utils/locker/locker.go | 103 ----------------------------------- utils/locker/locker_test.go | 51 ----------------- 5 files changed, 19 insertions(+), 170 deletions(-) delete mode 100644 utils/locker/locker.go delete mode 100644 utils/locker/locker_test.go diff --git a/core/models/contacts.go b/core/models/contacts.go index ade4e38e9..a1c4ba650 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -19,6 +19,7 @@ import ( "github.com/nyaruka/goflow/excellent/types" "github.com/nyaruka/goflow/flows" "github.com/nyaruka/null" + "github.com/nyaruka/redisx" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -1341,9 +1342,10 @@ func (i *ContactID) Scan(value interface{}) error { return null.ScanInt(value, (*null.Int)(i)) } -// ContactLock returns the lock key for a particular contact, used with locker -func ContactLock(orgID OrgID, contactID ContactID) string { - return fmt.Sprintf("c:%d:%d", orgID, contactID) +// GetContactLocker returns the locker for a particular contact +func GetContactLocker(orgID OrgID, contactID ContactID) *redisx.Locker { + key := fmt.Sprintf("lock:c:%d:%d", orgID, contactID) + return redisx.NewLocker(key, time.Minute*5) } // UpdateContactModifiedBy updates modified by the passed user id on the passed in contacts diff --git a/core/runner/runner.go b/core/runner/runner.go index c43dc27ee..a6c3b7ba9 100644 --- a/core/runner/runner.go +++ b/core/runner/runner.go @@ -15,7 +15,7 @@ import ( "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/locker" + "github.com/nyaruka/redisx" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -463,7 +463,7 @@ func StartFlow( start := time.Now() // map of locks we've released - released := make(map[string]bool) + released := make(map[*redisx.Locker]bool) for len(remaining) > 0 && time.Since(start) < time.Minute*5 { locked := make([]models.ContactID, 0, len(remaining)) @@ -472,8 +472,9 @@ func StartFlow( // try up to a second to get a lock for a contact for _, contactID := range remaining { - lockID := models.ContactLock(oa.OrgID(), contactID) - lock, err := locker.GrabLock(rt.RP, lockID, time.Minute*5, time.Second) + locker := models.GetContactLocker(oa.OrgID(), contactID) + + lock, err := locker.Grab(rt.RP, time.Second) if err != nil { return nil, errors.Wrapf(err, "error attempting to grab lock") } @@ -486,8 +487,8 @@ func StartFlow( // defer unlocking if we exit due to error defer func() { - if !released[lockID] { - locker.ReleaseLock(rt.RP, lockID, lock) + if !released[locker] { + locker.Release(rt.RP, lock) } }() } @@ -519,9 +520,9 @@ func StartFlow( // release all our locks for i := range locked { - lockID := models.ContactLock(oa.OrgID(), locked[i]) - locker.ReleaseLock(rt.RP, lockID, locks[i]) - released[lockID] = true + locker := models.GetContactLocker(oa.OrgID(), locked[i]) + locker.Release(rt.RP, locks[i]) + released[locker] = true } // skipped are now our remaining diff --git a/core/tasks/handler/worker.go b/core/tasks/handler/worker.go index b03f5935d..057c335cd 100644 --- a/core/tasks/handler/worker.go +++ b/core/tasks/handler/worker.go @@ -22,7 +22,6 @@ import ( "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/core/runner" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/locker" "github.com/nyaruka/null" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -61,8 +60,9 @@ func handleContactEvent(ctx context.Context, rt *runtime.Runtime, task *queue.Ta } // acquire the lock for this contact - lockID := models.ContactLock(models.OrgID(task.OrgID), eventTask.ContactID) - lock, err := locker.GrabLock(rt.RP, lockID, time.Minute*5, time.Second*10) + locker := models.GetContactLocker(models.OrgID(task.OrgID), eventTask.ContactID) + + lock, err := locker.Grab(rt.RP, time.Second*10) if err != nil { return errors.Wrapf(err, "error acquiring lock for contact %d", eventTask.ContactID) } @@ -81,7 +81,7 @@ func handleContactEvent(ctx context.Context, rt *runtime.Runtime, task *queue.Ta }).Info("failed to get lock for contact, requeued and skipping") return nil } - defer locker.ReleaseLock(rt.RP, lockID, lock) + defer locker.Release(rt.RP, lock) // read all the events for this contact, one by one contactQ := fmt.Sprintf("c:%d:%d", task.OrgID, eventTask.ContactID) diff --git a/utils/locker/locker.go b/utils/locker/locker.go deleted file mode 100644 index 36340f9d8..000000000 --- a/utils/locker/locker.go +++ /dev/null @@ -1,103 +0,0 @@ -package locker - -import ( - "fmt" - "math/rand" - "time" - - "github.com/gomodule/redigo/redis" - "github.com/pkg/errors" -) - -// GrabLock grabs the passed in lock from redis in an atomic operation. It returns the lock value -// if successful. It will retry until the retry period, returning empty string if not acquired -// in that time. -func GrabLock(rp *redis.Pool, key string, expiration time.Duration, retry time.Duration) (string, error) { - // generate our lock value - value := makeRandom(10) - - // convert our expiration to seconds - seconds := int(expiration / time.Second) - if seconds < 1 { - return "", errors.Errorf("can't grab lock with expiration less than a second") - } - - start := time.Now() - for { - rc := rp.Get() - success, err := rc.Do("SET", fmt.Sprintf("lock:%s", key), value, "EX", seconds, "NX") - rc.Close() - - if err != nil { - return "", errors.Wrapf(err, "error trying to get lock") - } - - if success == "OK" { - break - } - - if time.Since(start) > retry { - return "", nil - } - - time.Sleep(time.Second) - } - - return value, nil -} - -var releaseScript = redis.NewScript(2, ` - -- KEYS: [Key, Value] - if redis.call("get", KEYS[1]) == KEYS[2] then - return redis.call("del", KEYS[1]) - else - return 0 - end -`) - -// ReleaseLock releases the passed in lock, returning any error encountered while doing -// so. It is not considered an error to release a lock that is no longer present -func ReleaseLock(rp *redis.Pool, key string, value string) error { - rc := rp.Get() - defer rc.Close() - - // we use lua here because we only want to release the lock if we own it - _, err := releaseScript.Do(rc, fmt.Sprintf("lock:%s", key), value) - return err -} - -var expireScript = redis.NewScript(3, ` - -- KEYS: [Key, Value, Expiration] - if redis.call("get", KEYS[1]) == KEYS[2] then - return redis.call("expire", KEYS[1], KEYS[3]) - else - return 0 - end -`) - -// ExtendLock extends our lock expiration by the passed in number of seconds -func ExtendLock(rp *redis.Pool, key string, value string, expiration time.Duration) error { - rc := rp.Get() - defer rc.Close() - - // convert our expiration to seconds - seconds := int(expiration / time.Second) - if seconds < 1 { - return errors.Errorf("can't grab lock with expiration less than a second") - } - - // we use lua here because we only want to set the expiration time if we own it - _, err := expireScript.Do(rc, fmt.Sprintf("lock:%s", key), value, seconds) - return err -} - -const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - -// makeRandom creates a random key of the length passed in -func makeRandom(n int) string { - b := make([]byte, n) - for i := range b { - b[i] = letterBytes[rand.Intn(len(letterBytes))] - } - return string(b) -} diff --git a/utils/locker/locker_test.go b/utils/locker/locker_test.go deleted file mode 100644 index 18cd93464..000000000 --- a/utils/locker/locker_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package locker_test - -import ( - "testing" - "time" - - "github.com/nyaruka/mailroom/testsuite" - "github.com/nyaruka/mailroom/utils/locker" - - "github.com/stretchr/testify/assert" -) - -func TestLocker(t *testing.T) { - _, _, _, rp := testsuite.Get() - - defer testsuite.Reset(testsuite.ResetRedis) - - // acquire a lock, but have it expire in 5 seconds - v1, err := locker.GrabLock(rp, "test", time.Second*5, time.Second) - assert.NoError(t, err) - assert.NotZero(t, v1) - - // try to acquire the same lock, should fail - v2, err := locker.GrabLock(rp, "test", time.Second*5, time.Second) - assert.NoError(t, err) - assert.Zero(t, v2) - - // should succeed if we wait longer - v3, err := locker.GrabLock(rp, "test", time.Second*5, time.Second*5) - assert.NoError(t, err) - assert.NotZero(t, v3) - assert.NotEqual(t, v1, v3) - - // extend the lock - err = locker.ExtendLock(rp, "test", v3, time.Second*10) - assert.NoError(t, err) - - // trying to grab it should fail with a 5 second timeout - v4, err := locker.GrabLock(rp, "test", time.Second*5, time.Second*5) - assert.NoError(t, err) - assert.Zero(t, v4) - - // return the lock - err = locker.ReleaseLock(rp, "test", v3) - assert.NoError(t, err) - - // new grab should work - v5, err := locker.GrabLock(rp, "test", time.Second*5, time.Second*5) - assert.NoError(t, err) - assert.NotZero(t, v5) -} From a1e56d8d641b14ea8a05dfea6a204029036240d3 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 15 Mar 2022 12:09:34 -0500 Subject: [PATCH 05/97] Allow expirations and timeouts to resume sessions for stopped, blocked and archived contacts --- core/tasks/expirations/cron.go | 16 +++++++--------- core/tasks/expirations/cron_test.go | 28 +++++++++++++++++----------- core/tasks/handler/worker.go | 5 ----- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/core/tasks/expirations/cron.go b/core/tasks/expirations/cron.go index 442f19ffa..361cc5cbe 100644 --- a/core/tasks/expirations/cron.go +++ b/core/tasks/expirations/cron.go @@ -77,7 +77,7 @@ func HandleWaitExpirations(ctx context.Context, rt *runtime.Runtime) error { } // if it can't be resumed, add to batch to be expired - if !expiredWait.WaitResumes || expiredWait.ContactStatus != models.ContactStatusActive { + if !expiredWait.WaitResumes { expiredSessions = append(expiredSessions, expiredWait.SessionID) // batch is full? commit it @@ -135,20 +135,18 @@ func HandleWaitExpirations(ctx context.Context, rt *runtime.Runtime) error { } const sqlSelectExpiredWaits = ` - SELECT s.id as session_id, s.org_id, s.wait_expires_on, s.wait_resume_on_expire , c.id as contact_id, c.status as contact_status + SELECT s.id as session_id, s.org_id, s.wait_expires_on, s.wait_resume_on_expire , s.contact_id FROM flows_flowsession s -INNER JOIN contacts_contact c ON c.id = s.contact_id WHERE s.session_type = 'M' AND s.status = 'W' AND s.wait_expires_on <= NOW() ORDER BY s.wait_expires_on ASC LIMIT 25000` type ExpiredWait struct { - SessionID models.SessionID `db:"session_id"` - OrgID models.OrgID `db:"org_id"` - WaitExpiresOn time.Time `db:"wait_expires_on"` - WaitResumes bool `db:"wait_resume_on_expire"` - ContactID models.ContactID `db:"contact_id"` - ContactStatus models.ContactStatus `db:"contact_status"` + SessionID models.SessionID `db:"session_id"` + OrgID models.OrgID `db:"org_id"` + WaitExpiresOn time.Time `db:"wait_expires_on"` + WaitResumes bool `db:"wait_resume_on_expire"` + ContactID models.ContactID `db:"contact_id"` } // ExpireVoiceSessions looks for voice sessions that should be expired and ends them diff --git a/core/tasks/expirations/cron_test.go b/core/tasks/expirations/cron_test.go index 4282927a0..741cab636 100644 --- a/core/tasks/expirations/cron_test.go +++ b/core/tasks/expirations/cron_test.go @@ -1,11 +1,11 @@ package expirations_test import ( - "encoding/json" "testing" "time" "github.com/nyaruka/gocommon/dbutil/assertdb" + "github.com/nyaruka/gocommon/jsonx" "github.com/nyaruka/goflow/envs" _ "github.com/nyaruka/mailroom/core/handlers" "github.com/nyaruka/mailroom/core/models" @@ -47,7 +47,7 @@ func TestExpirations(t *testing.T) { // create a parent/child session for the blocked contact s5ID := testdata.InsertWaitingSession(db, testdata.Org1, blake, models.FlowTypeMessaging, testdata.Favorites, models.NilConnectionID, time.Now(), time.Now(), true, nil) - r6ID := testdata.InsertFlowRun(db, testdata.Org1, s5ID, blake, testdata.Favorites, models.RunStatusWaiting) + r6ID := testdata.InsertFlowRun(db, testdata.Org1, s5ID, blake, testdata.Favorites, models.RunStatusActive) r7ID := testdata.InsertFlowRun(db, testdata.Org1, s5ID, blake, testdata.Favorites, models.RunStatusWaiting) time.Sleep(5 * time.Millisecond) @@ -73,23 +73,29 @@ func TestExpirations(t *testing.T) { assertdb.Query(t, db, `SELECT status FROM flows_flowsession WHERE id = $1;`, s4ID).Columns(map[string]interface{}{"status": "W"}) assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE id = $1;`, r5ID).Columns(map[string]interface{}{"status": "W"}) - // blocked contact's session and runs should be expired because a blocked contact can't resume - assertdb.Query(t, db, `SELECT status FROM flows_flowsession WHERE id = $1;`, s5ID).Columns(map[string]interface{}{"status": "X"}) - assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE id = $1;`, r6ID).Columns(map[string]interface{}{"status": "X"}) - assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE id = $1;`, r7ID).Columns(map[string]interface{}{"status": "X"}) + // blocked contact's session and runs sshould be unchanged because it's been queued for resumption.. like any other contact + assertdb.Query(t, db, `SELECT status FROM flows_flowsession WHERE id = $1;`, s5ID).Columns(map[string]interface{}{"status": "W"}) + assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE id = $1;`, r6ID).Columns(map[string]interface{}{"status": "A"}) + assertdb.Query(t, db, `SELECT status FROM flows_flowrun WHERE id = $1;`, r7ID).Columns(map[string]interface{}{"status": "W"}) - // should have created one task + // should have created two expiration tasks task, err := queue.PopNextTask(rc, queue.HandlerQueue) assert.NoError(t, err) assert.NotNil(t, task) - // decode the task + // check the first task eventTask := &handler.HandleEventTask{} - err = json.Unmarshal(task.Task, eventTask) + jsonx.MustUnmarshal(task.Task, eventTask) + assert.Equal(t, testdata.George.ID, eventTask.ContactID) + + task, err = queue.PopNextTask(rc, queue.HandlerQueue) assert.NoError(t, err) + assert.NotNil(t, task) - // assert its the right contact - assert.Equal(t, testdata.George.ID, eventTask.ContactID) + // check the second task + eventTask = &handler.HandleEventTask{} + jsonx.MustUnmarshal(task.Task, eventTask) + assert.Equal(t, blake.ID, eventTask.ContactID) // no other tasks task, err = queue.PopNextTask(rc, queue.HandlerQueue) diff --git a/core/tasks/handler/worker.go b/core/tasks/handler/worker.go index b03f5935d..bfb20c410 100644 --- a/core/tasks/handler/worker.go +++ b/core/tasks/handler/worker.go @@ -210,11 +210,6 @@ func handleTimedEvent(ctx context.Context, rt *runtime.Runtime, eventType string return errors.Wrapf(err, "error loading contact") } - // contact has been deleted or is blocked/stopped/archived, ignore this event - if len(contacts) == 0 || contacts[0].Status() != models.ContactStatusActive { - return nil - } - modelContact := contacts[0] // build our flow contact From 83f803b24f2b54e4987ad0641445efb8946cc6ea Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 16 Mar 2022 15:33:30 -0500 Subject: [PATCH 06/97] Simplify cron starts --- cmd/mailroom/main.go | 4 +++- core/tasks/analytics/cron.go | 17 ++++------------ core/tasks/campaigns/cron.go | 18 ++++------------- core/tasks/expirations/cron.go | 27 +++++--------------------- core/tasks/handler/cron.go | 21 ++++---------------- core/tasks/incidents/end_incidents.go | 16 ++++----------- core/tasks/ivr/cron.go | 22 ++++----------------- core/tasks/msgs/retries.go | 21 ++++---------------- core/tasks/schedules/cron.go | 28 ++++++++------------------- core/tasks/timeouts/cron.go | 21 ++++---------------- utils/cron/cron.go | 14 +++++++++----- utils/cron/cron_test.go | 16 ++++++++------- 12 files changed, 62 insertions(+), 163 deletions(-) diff --git a/cmd/mailroom/main.go b/cmd/mailroom/main.go index cc642aed7..c013a2db2 100644 --- a/cmd/mailroom/main.go +++ b/cmd/mailroom/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "os" "os/signal" goruntime "runtime" @@ -108,11 +109,12 @@ func main() { // handleSignals takes care of trapping quit, interrupt or terminate signals and doing the right thing func handleSignals(mr *mailroom.Mailroom) { - sigs := make(chan os.Signal) + sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) for { sig := <-sigs + fmt.Printf("SIGNAL %s\n", sig) switch sig { case syscall.SIGQUIT: buf := make([]byte, 1<<20) diff --git a/core/tasks/analytics/cron.go b/core/tasks/analytics/cron.go index 8774a81f1..2adbad6b9 100644 --- a/core/tasks/analytics/cron.go +++ b/core/tasks/analytics/cron.go @@ -14,19 +14,10 @@ import ( ) func init() { - mailroom.AddInitFunction(StartAnalyticsCron) -} - -// StartAnalyticsCron starts our cron job of posting stats every minute -func StartAnalyticsCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "stats", time.Second*60, true, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return reportAnalytics(ctx, rt) - }, - ) - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "stats", time.Second*60, true, reportAnalytics, time.Minute*5) + return nil + }) } var ( diff --git a/core/tasks/campaigns/cron.go b/core/tasks/campaigns/cron.go index 4eaf92bc0..377b34b7b 100644 --- a/core/tasks/campaigns/cron.go +++ b/core/tasks/campaigns/cron.go @@ -27,20 +27,10 @@ const ( var campaignsMarker = redisx.NewIntervalSet("campaign_event", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(StartCampaignCron) -} - -// StartCampaignCron starts our cron job of firing expired campaign events -func StartCampaignCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "campaign_event", time.Second*60, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return QueueEventFires(ctx, rt) - }, - ) - - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "campaign_event", time.Second*60, false, QueueEventFires, time.Minute*5) + return nil + }) } // QueueEventFires looks for all due campaign event fires and queues them to be started diff --git a/core/tasks/expirations/cron.go b/core/tasks/expirations/cron.go index 442f19ffa..59840c696 100644 --- a/core/tasks/expirations/cron.go +++ b/core/tasks/expirations/cron.go @@ -24,28 +24,11 @@ const ( var expirationsMarker = redisx.NewIntervalSet("run_expirations", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(StartExpirationCron) -} - -// StartExpirationCron starts our cron job of expiring runs every minute -func StartExpirationCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "run_expirations", time.Minute, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return HandleWaitExpirations(ctx, rt) - }, - ) - - cron.Start(quit, rt, "expire_ivr_calls", time.Minute, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return ExpireVoiceSessions(ctx, rt) - }, - ) - - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "run_expirations", time.Minute, false, HandleWaitExpirations, time.Minute*5) + cron.Start(quit, rt, "expire_ivr_calls", time.Minute, false, ExpireVoiceSessions, time.Minute*5) + return nil + }) } // HandleWaitExpirations handles waiting messaging sessions whose waits have expired, resuming those that can be resumed, diff --git a/core/tasks/handler/cron.go b/core/tasks/handler/cron.go index 944bd0c92..f28ab54e8 100644 --- a/core/tasks/handler/cron.go +++ b/core/tasks/handler/cron.go @@ -18,26 +18,13 @@ import ( "github.com/sirupsen/logrus" ) -const ( - retryLock = "retry_msgs" -) - var retriedMsgs = redisx.NewIntervalSet("retried_msgs", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(StartRetryCron) -} - -// StartRetryCron starts our cron job of retrying pending incoming messages -func StartRetryCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, retryLock, time.Minute*5, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return RetryPendingMsgs(ctx, rt) - }, - ) - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "retry_msgs", time.Minute*5, false, RetryPendingMsgs, time.Minute*5) + return nil + }) } // RetryPendingMsgs looks for any pending msgs older than five minutes and queues them to be handled again diff --git a/core/tasks/incidents/end_incidents.go b/core/tasks/incidents/end_incidents.go index 9cc37442b..0003f66f0 100644 --- a/core/tasks/incidents/end_incidents.go +++ b/core/tasks/incidents/end_incidents.go @@ -17,18 +17,10 @@ import ( ) func init() { - mailroom.AddInitFunction(startEndCron) -} - -func startEndCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "end_incidents", time.Minute*3, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return EndIncidents(ctx, rt) - }, - ) - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "end_incidents", time.Minute*3, false, EndIncidents, time.Minute*5) + return nil + }) } // EndIncidents checks open incidents and end any that no longer apply diff --git a/core/tasks/ivr/cron.go b/core/tasks/ivr/cron.go index 6ab2ebe71..5e4bd3267 100644 --- a/core/tasks/ivr/cron.go +++ b/core/tasks/ivr/cron.go @@ -14,25 +14,11 @@ import ( "github.com/sirupsen/logrus" ) -const ( - retryIVRLock = "retry_ivr_calls" -) - func init() { - mailroom.AddInitFunction(StartIVRCron) -} - -// StartIVRCron starts our cron job of retrying errored calls -func StartIVRCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, retryIVRLock, time.Minute, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return RetryCalls(ctx, rt) - }, - ) - - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "retry_ivr_calls", time.Minute, false, RetryCalls, time.Minute*5) + return nil + }) } // RetryCalls looks for calls that need to be retried and retries them diff --git a/core/tasks/msgs/retries.go b/core/tasks/msgs/retries.go index 660963519..8b29eb1c3 100644 --- a/core/tasks/msgs/retries.go +++ b/core/tasks/msgs/retries.go @@ -14,24 +14,11 @@ import ( "github.com/sirupsen/logrus" ) -const ( - retryMessagesLock = "retry_errored_messages" -) - func init() { - mailroom.AddInitFunction(startCrons) -} - -func startCrons(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, retryMessagesLock, time.Second*60, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return RetryErroredMessages(ctx, rt) - }, - ) - - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "retry_errored_messages", time.Second*60, false, RetryErroredMessages, time.Minute*5) + return nil + }) } func RetryErroredMessages(ctx context.Context, rt *runtime.Runtime) error { diff --git a/core/tasks/schedules/cron.go b/core/tasks/schedules/cron.go index 262c3999e..c94186a7c 100644 --- a/core/tasks/schedules/cron.go +++ b/core/tasks/schedules/cron.go @@ -14,31 +14,19 @@ import ( "github.com/sirupsen/logrus" ) -const ( - scheduleLock = "fire_schedules" -) - func init() { - mailroom.AddInitFunction(StartCheckSchedules) -} - -// StartCheckSchedules starts our cron job of firing schedules every minute -func StartCheckSchedules(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, scheduleLock, time.Minute*1, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - // we sleep 1 second since we fire right on the minute and want to make sure to fire - // things that are schedules right at the minute as well (and DB time may be slightly drifted) - time.Sleep(time.Second * 1) - return checkSchedules(ctx, rt) - }, - ) - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "fire_schedules", time.Minute*1, false, checkSchedules, time.Minute*5) + return nil + }) } // checkSchedules looks up any expired schedules and fires them, setting the next fire as needed func checkSchedules(ctx context.Context, rt *runtime.Runtime) error { + // we sleep 1 second since we fire right on the minute and want to make sure to fire + // things that are schedules right at the minute as well (and DB time may be slightly drifted) + time.Sleep(time.Second * 1) + log := logrus.WithField("comp", "schedules_cron") start := time.Now() diff --git a/core/tasks/timeouts/cron.go b/core/tasks/timeouts/cron.go index 3b26326aa..5ffa963f2 100644 --- a/core/tasks/timeouts/cron.go +++ b/core/tasks/timeouts/cron.go @@ -17,26 +17,13 @@ import ( "github.com/sirupsen/logrus" ) -const ( - timeoutLock = "sessions_timeouts" -) - var marker = redisx.NewIntervalSet("session_timeouts", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(StartTimeoutCron) -} - -// StartTimeoutCron starts our cron job of continuing timed out sessions every minute -func StartTimeoutCron(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, timeoutLock, time.Second*60, false, - func() error { - ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) - defer cancel() - return timeoutSessions(ctx, rt) - }, - ) - return nil + mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(quit, rt, "sessions_timeouts", time.Second*60, false, timeoutSessions, time.Minute*5) + return nil + }) } // timeoutRuns looks for any runs that have timed out and schedules for them to continue diff --git a/utils/cron/cron.go b/utils/cron/cron.go index d673c1e62..8867c49db 100644 --- a/utils/cron/cron.go +++ b/utils/cron/cron.go @@ -1,6 +1,7 @@ package cron import ( + "context" "fmt" "time" @@ -11,13 +12,13 @@ import ( ) // Function is the function that will be called on our schedule -type Function func() error +type Function func(context.Context, *runtime.Runtime) error // Start calls the passed in function every interval, making sure it acquires a // lock so that only one process is running at once. Note that across processes // crons may be called more often than duration as there is no inter-process // coordination of cron fires. (this might be a worthy addition) -func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Duration, allInstances bool, cronFunc Function) { +func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Duration, allInstances bool, cronFunc Function, timeout time.Duration) { lockName := fmt.Sprintf("lock:%s_lock", name) // for historical reasons... // for jobs that run on all instances, the lock key is specific to this instance @@ -57,7 +58,7 @@ func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Durat } // ok, got the lock, run our cron function - err = fireCron(cronFunc, lockName, lock) + err = fireCron(rt, cronFunc, lockName, lock) if err != nil { log.WithError(err).Error("error while running cron") } @@ -81,9 +82,12 @@ func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Durat // fireCron is just a wrapper around the cron function we will call for the purposes of // catching and logging panics -func fireCron(cronFunc Function, lockName string, lockValue string) error { +func fireCron(rt *runtime.Runtime, cronFunc Function, lockName string, lockValue string) error { log := log.WithField("lockValue", lockValue).WithField("func", cronFunc) + ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) + defer cancel() + defer func() { // catch any panics and recover panicLog := recover() @@ -92,7 +96,7 @@ func fireCron(cronFunc Function, lockName string, lockValue string) error { } }() - return cronFunc() + return cronFunc(ctx, rt) } // NextFire returns the next time we should fire based on the passed in time and interval diff --git a/utils/cron/cron_test.go b/utils/cron/cron_test.go index f0cb771f1..66d9dea04 100644 --- a/utils/cron/cron_test.go +++ b/utils/cron/cron_test.go @@ -1,9 +1,11 @@ package cron_test import ( + "context" "testing" "time" + "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/utils/cron" @@ -21,7 +23,7 @@ func TestCron(t *testing.T) { } createCronFunc := func(running *bool, fired *int, delays map[int]time.Duration, defaultDelay time.Duration) cron.Function { - return func() error { + return func(ctx context.Context, rt *runtime.Runtime) error { if *running { assert.Fail(t, "more than 1 thread is trying to run our cron job") } @@ -45,7 +47,7 @@ func TestCron(t *testing.T) { align() // start a job that takes ~100 ms and runs every 250ms - cron.Start(quit, rt, "test1", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{}, time.Millisecond*100)) + cron.Start(quit, rt, "test1", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{}, time.Millisecond*100), time.Minute) // wait a bit, should only have fired three times (initial time + three repeats) time.Sleep(time.Millisecond * 875) // time for 3 delays between tasks plus half of another delay @@ -64,7 +66,7 @@ func TestCron(t *testing.T) { align() // simulate the job taking 400ms to run on the second fire, thus skipping the third fire - cron.Start(quit, rt, "test2", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{1: time.Millisecond * 400}, time.Millisecond*100)) + cron.Start(quit, rt, "test2", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{1: time.Millisecond * 400}, time.Millisecond*100), time.Minute) time.Sleep(time.Millisecond * 875) assert.Equal(t, 3, fired) @@ -88,8 +90,8 @@ func TestCron(t *testing.T) { align() - cron.Start(quit, &rt1, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired1, map[int]time.Duration{}, time.Millisecond*100)) - cron.Start(quit, &rt2, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired2, map[int]time.Duration{}, time.Millisecond*100)) + cron.Start(quit, &rt1, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute) + cron.Start(quit, &rt2, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute) // same number of fires as if only a single instance was running it... time.Sleep(time.Millisecond * 875) @@ -106,8 +108,8 @@ func TestCron(t *testing.T) { align() // unless we start the cron with allInstances = true - cron.Start(quit, &rt1, "test4", time.Millisecond*250, true, createCronFunc(&running1, &fired1, map[int]time.Duration{}, time.Millisecond*100)) - cron.Start(quit, &rt2, "test4", time.Millisecond*250, true, createCronFunc(&running2, &fired2, map[int]time.Duration{}, time.Millisecond*100)) + cron.Start(quit, &rt1, "test4", time.Millisecond*250, true, createCronFunc(&running1, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute) + cron.Start(quit, &rt2, "test4", time.Millisecond*250, true, createCronFunc(&running2, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute) // now both instances fire 4 times time.Sleep(time.Millisecond * 875) From 790757547715c5df308e85a8844bd9f55ca097cd Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 16 Mar 2022 16:31:01 -0500 Subject: [PATCH 07/97] Cron jobs should add themselves to the main mailroom waitgroup --- core/tasks/analytics/cron.go | 2 +- core/tasks/campaigns/cron.go | 2 +- core/tasks/expirations/cron.go | 4 ++-- core/tasks/handler/cron.go | 2 +- core/tasks/incidents/end_incidents.go | 2 +- core/tasks/ivr/cron.go | 2 +- core/tasks/msgs/retries.go | 2 +- core/tasks/schedules/cron.go | 2 +- core/tasks/timeouts/cron.go | 2 +- utils/cron/cron.go | 17 +++++++++++++++-- utils/cron/cron_test.go | 14 ++++++++------ 11 files changed, 33 insertions(+), 18 deletions(-) diff --git a/core/tasks/analytics/cron.go b/core/tasks/analytics/cron.go index 2adbad6b9..41577c429 100644 --- a/core/tasks/analytics/cron.go +++ b/core/tasks/analytics/cron.go @@ -15,7 +15,7 @@ import ( func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "stats", time.Second*60, true, reportAnalytics, time.Minute*5) + cron.Start(rt, wg, "stats", time.Second*60, true, reportAnalytics, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/campaigns/cron.go b/core/tasks/campaigns/cron.go index 377b34b7b..b3b8a938f 100644 --- a/core/tasks/campaigns/cron.go +++ b/core/tasks/campaigns/cron.go @@ -28,7 +28,7 @@ var campaignsMarker = redisx.NewIntervalSet("campaign_event", time.Hour*24, 2) func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "campaign_event", time.Second*60, false, QueueEventFires, time.Minute*5) + cron.Start(rt, wg, "campaign_event", time.Second*60, false, QueueEventFires, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/expirations/cron.go b/core/tasks/expirations/cron.go index 59840c696..606afab49 100644 --- a/core/tasks/expirations/cron.go +++ b/core/tasks/expirations/cron.go @@ -25,8 +25,8 @@ var expirationsMarker = redisx.NewIntervalSet("run_expirations", time.Hour*24, 2 func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "run_expirations", time.Minute, false, HandleWaitExpirations, time.Minute*5) - cron.Start(quit, rt, "expire_ivr_calls", time.Minute, false, ExpireVoiceSessions, time.Minute*5) + cron.Start(rt, wg, "run_expirations", time.Minute, false, HandleWaitExpirations, time.Minute*5, quit) + cron.Start(rt, wg, "expire_ivr_calls", time.Minute, false, ExpireVoiceSessions, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/handler/cron.go b/core/tasks/handler/cron.go index f28ab54e8..09f5bb0b8 100644 --- a/core/tasks/handler/cron.go +++ b/core/tasks/handler/cron.go @@ -22,7 +22,7 @@ var retriedMsgs = redisx.NewIntervalSet("retried_msgs", time.Hour*24, 2) func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "retry_msgs", time.Minute*5, false, RetryPendingMsgs, time.Minute*5) + cron.Start(rt, wg, "retry_msgs", time.Minute*5, false, RetryPendingMsgs, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/incidents/end_incidents.go b/core/tasks/incidents/end_incidents.go index 0003f66f0..c88a9d023 100644 --- a/core/tasks/incidents/end_incidents.go +++ b/core/tasks/incidents/end_incidents.go @@ -18,7 +18,7 @@ import ( func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "end_incidents", time.Minute*3, false, EndIncidents, time.Minute*5) + cron.Start(rt, wg, "end_incidents", time.Minute*3, false, EndIncidents, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/ivr/cron.go b/core/tasks/ivr/cron.go index 5e4bd3267..32f9cb87a 100644 --- a/core/tasks/ivr/cron.go +++ b/core/tasks/ivr/cron.go @@ -16,7 +16,7 @@ import ( func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "retry_ivr_calls", time.Minute, false, RetryCalls, time.Minute*5) + cron.Start(rt, wg, "retry_ivr_calls", time.Minute, false, RetryCalls, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/msgs/retries.go b/core/tasks/msgs/retries.go index 8b29eb1c3..49a5be534 100644 --- a/core/tasks/msgs/retries.go +++ b/core/tasks/msgs/retries.go @@ -16,7 +16,7 @@ import ( func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "retry_errored_messages", time.Second*60, false, RetryErroredMessages, time.Minute*5) + cron.Start(rt, wg, "retry_errored_messages", time.Second*60, false, RetryErroredMessages, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/schedules/cron.go b/core/tasks/schedules/cron.go index c94186a7c..750252938 100644 --- a/core/tasks/schedules/cron.go +++ b/core/tasks/schedules/cron.go @@ -16,7 +16,7 @@ import ( func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "fire_schedules", time.Minute*1, false, checkSchedules, time.Minute*5) + cron.Start(rt, wg, "fire_schedules", time.Minute*1, false, checkSchedules, time.Minute*5, quit) return nil }) } diff --git a/core/tasks/timeouts/cron.go b/core/tasks/timeouts/cron.go index 5ffa963f2..2767693ad 100644 --- a/core/tasks/timeouts/cron.go +++ b/core/tasks/timeouts/cron.go @@ -21,7 +21,7 @@ var marker = redisx.NewIntervalSet("session_timeouts", time.Hour*24, 2) func init() { mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(quit, rt, "sessions_timeouts", time.Second*60, false, timeoutSessions, time.Minute*5) + cron.Start(rt, wg, "sessions_timeouts", time.Second*60, false, timeoutSessions, time.Minute*5, quit) return nil }) } diff --git a/utils/cron/cron.go b/utils/cron/cron.go index 8867c49db..16960b28e 100644 --- a/utils/cron/cron.go +++ b/utils/cron/cron.go @@ -3,6 +3,7 @@ package cron import ( "context" "fmt" + "sync" "time" "github.com/apex/log" @@ -18,7 +19,9 @@ type Function func(context.Context, *runtime.Runtime) error // lock so that only one process is running at once. Note that across processes // crons may be called more often than duration as there is no inter-process // coordination of cron fires. (this might be a worthy addition) -func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Duration, allInstances bool, cronFunc Function, timeout time.Duration) { +func Start(rt *runtime.Runtime, wg *sync.WaitGroup, name string, interval time.Duration, allInstances bool, cronFunc Function, timeout time.Duration, quit chan bool) { + wg.Add(1) // add ourselves to the wait group + lockName := fmt.Sprintf("lock:%s_lock", name) // for historical reasons... // for jobs that run on all instances, the lock key is specific to this instance @@ -34,7 +37,10 @@ func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Durat log := logrus.WithField("cron", name).WithField("lockName", lockName) go func() { - defer log.Info("cron exiting") + defer func() { + log.Info("cron exiting") + wg.Done() + }() for { select { @@ -58,16 +64,23 @@ func Start(quit chan bool, rt *runtime.Runtime, name string, interval time.Durat } // ok, got the lock, run our cron function + start := time.Now() err = fireCron(rt, cronFunc, lockName, lock) if err != nil { log.WithError(err).Error("error while running cron") } + elapsed := time.Since(start) // release our lock err = locker.Release(rt.RP, lock) if err != nil { log.WithError(err).Error("error releasing lock") } + + // if cron too longer than a minute, log + if elapsed > time.Minute { + logrus.WithField("cron", name).WithField("elapsed", elapsed).Error("cron took too long") + } } // calculate our next fire time diff --git a/utils/cron/cron_test.go b/utils/cron/cron_test.go index 66d9dea04..45460451a 100644 --- a/utils/cron/cron_test.go +++ b/utils/cron/cron_test.go @@ -2,6 +2,7 @@ package cron_test import ( "context" + "sync" "testing" "time" @@ -41,13 +42,14 @@ func TestCron(t *testing.T) { } fired := 0 + wg := &sync.WaitGroup{} quit := make(chan bool) running := false align() // start a job that takes ~100 ms and runs every 250ms - cron.Start(quit, rt, "test1", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{}, time.Millisecond*100), time.Minute) + cron.Start(rt, wg, "test1", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{}, time.Millisecond*100), time.Minute, quit) // wait a bit, should only have fired three times (initial time + three repeats) time.Sleep(time.Millisecond * 875) // time for 3 delays between tasks plus half of another delay @@ -66,7 +68,7 @@ func TestCron(t *testing.T) { align() // simulate the job taking 400ms to run on the second fire, thus skipping the third fire - cron.Start(quit, rt, "test2", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{1: time.Millisecond * 400}, time.Millisecond*100), time.Minute) + cron.Start(rt, wg, "test2", time.Millisecond*250, false, createCronFunc(&running, &fired, map[int]time.Duration{1: time.Millisecond * 400}, time.Millisecond*100), time.Minute, quit) time.Sleep(time.Millisecond * 875) assert.Equal(t, 3, fired) @@ -90,8 +92,8 @@ func TestCron(t *testing.T) { align() - cron.Start(quit, &rt1, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute) - cron.Start(quit, &rt2, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute) + cron.Start(&rt1, wg, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute, quit) + cron.Start(&rt2, wg, "test3", time.Millisecond*250, false, createCronFunc(&running, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute, quit) // same number of fires as if only a single instance was running it... time.Sleep(time.Millisecond * 875) @@ -108,8 +110,8 @@ func TestCron(t *testing.T) { align() // unless we start the cron with allInstances = true - cron.Start(quit, &rt1, "test4", time.Millisecond*250, true, createCronFunc(&running1, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute) - cron.Start(quit, &rt2, "test4", time.Millisecond*250, true, createCronFunc(&running2, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute) + cron.Start(&rt1, wg, "test4", time.Millisecond*250, true, createCronFunc(&running1, &fired1, map[int]time.Duration{}, time.Millisecond*100), time.Minute, quit) + cron.Start(&rt2, wg, "test4", time.Millisecond*250, true, createCronFunc(&running2, &fired2, map[int]time.Duration{}, time.Millisecond*100), time.Minute, quit) // now both instances fire 4 times time.Sleep(time.Millisecond * 875) From b7ffe0ed4b779b266fd811573f0c8466d5494133 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 16 Mar 2022 16:55:07 -0500 Subject: [PATCH 08/97] Further simplify cron starting --- core/tasks/analytics/cron.go | 7 +------ core/tasks/campaigns/cron.go | 7 +------ core/tasks/expirations/cron.go | 9 ++------- core/tasks/handler/cron.go | 8 +------- core/tasks/incidents/end_incidents.go | 7 +------ core/tasks/ivr/cron.go | 7 +------ core/tasks/msgs/retries.go | 7 +------ core/tasks/schedules/cron.go | 7 +------ core/tasks/timeouts/cron.go | 8 +------- mailroom.go | 14 +++++++++++--- 10 files changed, 21 insertions(+), 60 deletions(-) diff --git a/core/tasks/analytics/cron.go b/core/tasks/analytics/cron.go index 41577c429..8fc72af04 100644 --- a/core/tasks/analytics/cron.go +++ b/core/tasks/analytics/cron.go @@ -2,22 +2,17 @@ package analytics import ( "context" - "sync" "time" "github.com/nyaruka/librato" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/sirupsen/logrus" ) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "stats", time.Second*60, true, reportAnalytics, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("analytics", time.Second*60, true, reportAnalytics) } var ( diff --git a/core/tasks/campaigns/cron.go b/core/tasks/campaigns/cron.go index b3b8a938f..7522aeee0 100644 --- a/core/tasks/campaigns/cron.go +++ b/core/tasks/campaigns/cron.go @@ -3,7 +3,6 @@ package campaigns import ( "context" "fmt" - "sync" "time" "github.com/gomodule/redigo/redis" @@ -13,7 +12,6 @@ import ( "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/nyaruka/redisx" "github.com/pkg/errors" @@ -27,10 +25,7 @@ const ( var campaignsMarker = redisx.NewIntervalSet("campaign_event", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "campaign_event", time.Second*60, false, QueueEventFires, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("campaign_event", time.Second*60, false, QueueEventFires) } // QueueEventFires looks for all due campaign event fires and queues them to be started diff --git a/core/tasks/expirations/cron.go b/core/tasks/expirations/cron.go index 606afab49..eb5b4c545 100644 --- a/core/tasks/expirations/cron.go +++ b/core/tasks/expirations/cron.go @@ -3,7 +3,6 @@ package expirations import ( "context" "fmt" - "sync" "time" "github.com/nyaruka/mailroom" @@ -11,7 +10,6 @@ import ( "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/tasks/handler" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/nyaruka/redisx" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -24,11 +22,8 @@ const ( var expirationsMarker = redisx.NewIntervalSet("run_expirations", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "run_expirations", time.Minute, false, HandleWaitExpirations, time.Minute*5, quit) - cron.Start(rt, wg, "expire_ivr_calls", time.Minute, false, ExpireVoiceSessions, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("run_expirations", time.Minute, false, HandleWaitExpirations) + mailroom.RegisterCron("expire_ivr_calls", time.Minute, false, ExpireVoiceSessions) } // HandleWaitExpirations handles waiting messaging sessions whose waits have expired, resuming those that can be resumed, diff --git a/core/tasks/handler/cron.go b/core/tasks/handler/cron.go index 09f5bb0b8..4816aa9f9 100644 --- a/core/tasks/handler/cron.go +++ b/core/tasks/handler/cron.go @@ -4,16 +4,13 @@ import ( "context" "encoding/json" "fmt" - "sync" "time" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/nyaruka/redisx" - "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -21,10 +18,7 @@ import ( var retriedMsgs = redisx.NewIntervalSet("retried_msgs", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "retry_msgs", time.Minute*5, false, RetryPendingMsgs, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("retry_msgs", time.Minute*5, false, RetryPendingMsgs) } // RetryPendingMsgs looks for any pending msgs older than five minutes and queues them to be handled again diff --git a/core/tasks/incidents/end_incidents.go b/core/tasks/incidents/end_incidents.go index c88a9d023..916d9bbe2 100644 --- a/core/tasks/incidents/end_incidents.go +++ b/core/tasks/incidents/end_incidents.go @@ -3,7 +3,6 @@ package incidents import ( "context" "fmt" - "sync" "time" "github.com/gomodule/redigo/redis" @@ -11,16 +10,12 @@ import ( "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "end_incidents", time.Minute*3, false, EndIncidents, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("end_incidents", time.Minute*3, false, EndIncidents) } // EndIncidents checks open incidents and end any that no longer apply diff --git a/core/tasks/ivr/cron.go b/core/tasks/ivr/cron.go index 32f9cb87a..57742da5f 100644 --- a/core/tasks/ivr/cron.go +++ b/core/tasks/ivr/cron.go @@ -2,23 +2,18 @@ package ivr import ( "context" - "sync" "time" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/ivr" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "retry_ivr_calls", time.Minute, false, RetryCalls, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("retry_ivr_calls", time.Minute, false, RetryCalls) } // RetryCalls looks for calls that need to be retried and retries them diff --git a/core/tasks/msgs/retries.go b/core/tasks/msgs/retries.go index 49a5be534..6c8de9617 100644 --- a/core/tasks/msgs/retries.go +++ b/core/tasks/msgs/retries.go @@ -2,23 +2,18 @@ package msgs import ( "context" - "sync" "time" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/msgio" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "retry_errored_messages", time.Second*60, false, RetryErroredMessages, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("retry_errored_messages", time.Second*60, false, RetryErroredMessages) } func RetryErroredMessages(ctx context.Context, rt *runtime.Runtime) error { diff --git a/core/tasks/schedules/cron.go b/core/tasks/schedules/cron.go index 750252938..97e7ff77f 100644 --- a/core/tasks/schedules/cron.go +++ b/core/tasks/schedules/cron.go @@ -2,23 +2,18 @@ package schedules import ( "context" - "sync" "time" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "fire_schedules", time.Minute*1, false, checkSchedules, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("fire_schedules", time.Minute*1, false, checkSchedules) } // checkSchedules looks up any expired schedules and fires them, setting the next fire as needed diff --git a/core/tasks/timeouts/cron.go b/core/tasks/timeouts/cron.go index 2767693ad..66796b4a5 100644 --- a/core/tasks/timeouts/cron.go +++ b/core/tasks/timeouts/cron.go @@ -3,16 +3,13 @@ package timeouts import ( "context" "fmt" - "sync" "time" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/tasks/handler" "github.com/nyaruka/mailroom/runtime" - "github.com/nyaruka/mailroom/utils/cron" "github.com/nyaruka/redisx" - "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -20,10 +17,7 @@ import ( var marker = redisx.NewIntervalSet("session_timeouts", time.Hour*24, 2) func init() { - mailroom.AddInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { - cron.Start(rt, wg, "sessions_timeouts", time.Second*60, false, timeoutSessions, time.Minute*5, quit) - return nil - }) + mailroom.RegisterCron("sessions_timeouts", time.Second*60, false, timeoutSessions) } // timeoutRuns looks for any runs that have timed out and schedules for them to continue diff --git a/mailroom.go b/mailroom.go index b17b7c4ae..e42345748 100644 --- a/mailroom.go +++ b/mailroom.go @@ -10,6 +10,7 @@ import ( "github.com/nyaruka/gocommon/storage" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" + "github.com/nyaruka/mailroom/utils/cron" "github.com/nyaruka/mailroom/web" "github.com/pkg/errors" @@ -21,15 +22,22 @@ import ( ) // InitFunction is a function that will be called when mailroom starts -type InitFunction func(runtime *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error +type InitFunction func(*runtime.Runtime, *sync.WaitGroup, chan bool) error var initFunctions = make([]InitFunction, 0) -// AddInitFunction adds an init function that will be called on startup -func AddInitFunction(initFunc InitFunction) { +func addInitFunction(initFunc InitFunction) { initFunctions = append(initFunctions, initFunc) } +// RegisterCron registers a new cron function to run every interval +func RegisterCron(name string, interval time.Duration, allInstances bool, fn cron.Function) { + addInitFunction(func(rt *runtime.Runtime, wg *sync.WaitGroup, quit chan bool) error { + cron.Start(rt, wg, name, interval, allInstances, fn, time.Minute*5, quit) + return nil + }) +} + // TaskFunction is the function that will be called for a type of task type TaskFunction func(ctx context.Context, rt *runtime.Runtime, task *queue.Task) error From b04560c454e14028ff10eede728322a6e65daeed Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 16 Mar 2022 17:05:13 -0500 Subject: [PATCH 09/97] Remove cruft --- cmd/mailroom/main.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmd/mailroom/main.go b/cmd/mailroom/main.go index c013a2db2..da8576f32 100644 --- a/cmd/mailroom/main.go +++ b/cmd/mailroom/main.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "os" "os/signal" goruntime "runtime" @@ -114,7 +113,6 @@ func handleSignals(mr *mailroom.Mailroom) { for { sig := <-sigs - fmt.Printf("SIGNAL %s\n", sig) switch sig { case syscall.SIGQUIT: buf := make([]byte, 1<<20) From 8b58b4c6f52584a4ebbbe2ef476ca155d023867a Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 18 Mar 2022 11:57:19 -0500 Subject: [PATCH 10/97] Update to latest goflow --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ff7f68dfe..21ea7cad9 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.17.1 - github.com/nyaruka/goflow v0.152.0 + github.com/nyaruka/goflow v0.153.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index 69998b4bc..fbe6edaa9 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.17.1 h1:4bbNp+0/BIbne4VDiKOxh3kcbdvEu/WsrsZiG/VyRZ8= github.com/nyaruka/gocommon v1.17.1/go.mod h1:nmYyb7MZDM0iW4DYJKiBzfKuE9nbnx+xSHZasuIBOT0= -github.com/nyaruka/goflow v0.152.0 h1:wPMhmfkmxFcFowyr+Z3MeSkTMwriqa++bBdvIPcqiKo= -github.com/nyaruka/goflow v0.152.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= +github.com/nyaruka/goflow v0.153.0 h1:ZphPN0WCod77uvBMCLOxjl9fibaHdTkcWVP3lltIgbc= +github.com/nyaruka/goflow v0.153.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 4a1593a8c931ca9dc1df77a0805e2d109526605b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 18 Mar 2022 12:02:20 -0500 Subject: [PATCH 11/97] Update CHANGELOG.md for v7.3.0 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f9c96a71..a7481d57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v7.3.0 +---------- + * Update to latest goflow + * Replace last usages of old locker code + * Cleanup some SQL variables + v7.2.6 ---------- * Batch calls to delete event fires From 6177ddc66517af40534cf626445c754a8631c71f Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 21 Mar 2022 09:51:33 -0500 Subject: [PATCH 12/97] Update CHANGELOG.md for v7.3.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7481d57a..a8e707632 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v7.3.1 +---------- + * Simplify cron jobs and add them to the main mailroom waitgroup + * Allow expirations and timeouts to resume sessions for stopped, blocked and archived contacts + * Messages to stopped, blocked or archived contacts should immediately fail + v7.3.0 ---------- * Update to latest goflow From d0d6308262b96dfa3d2ce3f86670418af3833f74 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 21 Mar 2022 14:53:22 -0500 Subject: [PATCH 13/97] Add is_system to contact groups, filter groups by group_type = M|Q|U --- core/models/contacts.go | 4 +++- core/models/groups.go | 21 ++++++--------------- testsuite/testdata/contacts.go | 4 ++-- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/core/models/contacts.go b/core/models/contacts.go index a1c4ba650..829508aed 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -1040,7 +1040,9 @@ func StopContact(ctx context.Context, db Queryer, orgID OrgID, contactID Contact const sqlDeleteAllContactGroups = ` DELETE FROM contacts_contactgroup_contacts - WHERE contact_id = $2 AND contactgroup_id = ANY(SELECT id from contacts_contactgroup WHERE org_id = $1 and group_type = 'U')` + WHERE contact_id = $2 AND contactgroup_id = ANY( + SELECT id from contacts_contactgroup WHERE org_id = $1 and group_type IN ('M', 'Q', 'U') + )` const sqlDeleteAllContactTriggers = ` DELETE FROM triggers_trigger_contacts diff --git a/core/models/groups.go b/core/models/groups.go index ad4d42aa1..2c546e5e5 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -76,21 +76,12 @@ func LoadGroups(ctx context.Context, db Queryer, orgID OrgID) ([]assets.Group, e } const selectGroupsSQL = ` -SELECT ROW_TO_JSON(r) FROM (SELECT - id, - uuid, - name, - query -FROM - contacts_contactgroup -WHERE - org_id = $1 AND - is_active = TRUE AND - group_type = 'U' -ORDER BY - name ASC -) r; -` +SELECT ROW_TO_JSON(r) FROM ( + SELECT id, uuid, name, query + FROM contacts_contactgroup + WHERE org_id = $1 AND group_type IN ('M', 'Q', 'U') AND is_active = TRUE + ORDER BY name ASC +) r;` // RemoveContactsFromGroups fires a bulk SQL query to remove all the contacts in the passed in groups func RemoveContactsFromGroups(ctx context.Context, tx Queryer, removals []*GroupRemove) error { diff --git a/testsuite/testdata/contacts.go b/testsuite/testdata/contacts.go index 6019b8f99..8b9dcc41d 100644 --- a/testsuite/testdata/contacts.go +++ b/testsuite/testdata/contacts.go @@ -60,8 +60,8 @@ func InsertContact(db *sqlx.DB, org *Org, uuid flows.ContactUUID, name string, l func InsertContactGroup(db *sqlx.DB, org *Org, uuid assets.GroupUUID, name, query string) *Group { var id models.GroupID must(db.Get(&id, - `INSERT INTO contacts_contactgroup(uuid, org_id, group_type, name, query, status, is_active, created_by_id, created_on, modified_by_id, modified_on) - VALUES($1, $2, 'U', $3, $4, 'R', TRUE, 1, NOW(), 1, NOW()) RETURNING id`, uuid, org.ID, name, null.String(query), + `INSERT INTO contacts_contactgroup(uuid, org_id, group_type, name, query, status, is_system, is_active, created_by_id, created_on, modified_by_id, modified_on) + VALUES($1, $2, 'U', $3, $4, 'R', FALSE, TRUE, 1, NOW(), 1, NOW()) RETURNING id`, uuid, org.ID, name, null.String(query), )) return &Group{id, uuid} } From 8a048984f602d59253b97dcc1a1435ce1db226bd Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 21 Mar 2022 16:34:46 -0500 Subject: [PATCH 14/97] Update test database --- core/models/groups.go | 2 +- mailroom_test.dump | Bin 1896423 -> 1893113 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/core/models/groups.go b/core/models/groups.go index 2c546e5e5..e83e6dbdd 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -77,7 +77,7 @@ func LoadGroups(ctx context.Context, db Queryer, orgID OrgID) ([]assets.Group, e const selectGroupsSQL = ` SELECT ROW_TO_JSON(r) FROM ( - SELECT id, uuid, name, query + SELECT id, uuid, name, query FROM contacts_contactgroup WHERE org_id = $1 AND group_type IN ('M', 'Q', 'U') AND is_active = TRUE ORDER BY name ASC diff --git a/mailroom_test.dump b/mailroom_test.dump index 6747b0d5192a57bb616fd744e8e0e585c95a090c..f9419696805abc7fb7433e0d72a5175ee929a68f 100644 GIT binary patch delta 107511 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 S?W^uz_4um4uX_F`(*FT(QBG|D delta 111090 zcmZsE2YgjU(|7iqbCa7(Nh7_}OMu%8HS`Wa1f(VbLXnb4ml{+=Q6P9AgP?$-f+)=( z2a&F#QiBae5Ks}2ZlRa&zkAL};`6=F?|q*q_w4NK?Ck99?Ci{N_lpS^&P+(p>d>}Z z7ONVhSQ%qM_>YtSR|x;F82(@3i_?9GAncwL@AP)9YTa%#!J(3%oujtmJ`A64S0ye_Z3B&qTUMgQAT@^bh%Mx#iIvp78- zXF#nMIa~caav0rtnpIanjtooE>Z0?GOFZ!>_CgU|FM{gC*V`hK8{wy(=8>>CWlHoygSIx z(JrcySh6m41EYJY60YW@8`wNSDQKl}2SSq64kM#WK1n|!gIvs|bva?KzE6?(|Jk# zj>PYP+g(zrYpSgN*^zVH>++R!=n*BUMQ`cNK3~byo>!Q9wM(2>NS{B*rB3TvOWo3| zrW$HXRB!aEqF#R@O|9`{p}MG_LtXiVty1==3E8>hhmIUIIZw?WoUBsc+6GKbHK%_E z)&HCz((AAXHRZFr(W`pN`@MQds@THIQA=i1zs_zzL!V|*s$)n#m+lmb?jwb% zU*$HUI_p@Nx@kx-js1mHD*1az4W{<*X$<8oaS!`Krp{BP2z6L569 zlsuf?G+15R-+=U%^m%TBRdo(Be)~$&UwIg!#tbul`%9Xs%M{f%QeblV13_sV)5Fq` zw366mD?P}Gpg#&1_i>Z)g?*QOai-6b2}>JzMfKHd23DXG40g+x!b zXIxa=F1I%*mKLqFB$V7<-&CSI9T*41cXvtFh7OEYbz3_<7ayJ9HE&lLLj zFF8dm_+$^w|4WWgU;kL|90-&Q-ciKV1Df&MN2~vqlc|!zB31hrNz~+iNEprfR0>hY z?mSM%o|c2vMxWT!7W-l-t+k}6BX=EE?K|pnCV1@5k|Dd7F!kD}agpM;Jtz#zkXtYs zTc?1wJO*)1_x`Q6*cGm}IS@m0|B+wIuAYgQl&B8E2CR1~t^kz=Xbez2fr7+3(JbiktH#e!_NuO#D}7bNkw$5*oLJEuN` z$5V3c`_@c-<|lpbboGuLM<1@mU_}QK)wENg>g?}>DeJBrLXX#C&+a)fTSw?AY5QYC zrZzYoLr3n)(drvN9Tg2;Pf5Ya-a2-#i{82?*HOa`N2>E4CYGe0s?5}9e~Y2F@5!}k zc|OR!nk2|gS9hI$PW|n3eO26!l0mA6zAlU;T_O+OReH zT#BKyVGL8gFUPAJe%nstmf=W>`c+`_1w3?ilAK(!`FDp*ErSgV0awZ63)pEn4b@OQPbJ$yJ?tuPY zSjDFw$uTrPR7#|4KeL4YLet2)T;ybC)e)5b)q$#P#o#Yr(&_uceT@BE=WiX%?;s{C(Ny}U#issncPJIsmWI*j z=cVfE>JP$c_EuI;9evNP4!GYfWN7}lad|^0(&}9-LtS@2Nxgjk3$-*kMBQ^gP2K#U zP;GNtr^puwN~fD`t;r>0A37M77AfI$Kw>dV8!5HbuE+Jo=d%pw<5p6~Jq%VeACFgG zzN_m2f1u>-;}@A~f2ia0`+|}GfVzUm&xLJte8u0b!Q>Xr-L4P`NuWnpLN8V4O#Raenohc_sS-g?p+qfH8C z^(9K3C2)8>b|2?ens(aCY>Ylslt?-l1~YHqu}^4wA&XF3B@6a??S9HH zl;gBUm6%tiL$Xed*Y2e=VJuZ>NjkR06p-+$kdm`i*^e}9DUk201_B}9KTzXfu&VEU zL7>Oy^+CntN3nSAaX8D8=;#B177ZS4Y!qw5s8cgb1hIH@hw8S_scP&rjeHCohyO8f zz+}MyC!}cYQ8as#QQ(%@;0=n`8%kqY8l!RdgCl5AqE3m0lHyq@sdrcewd^j82AI9{ zOd?AW!mbwGPNIS?%vzkts?v-Ec3haXR3#n#xw@x~!Acx0N@QE+M3ZoXQl?Xao2UxIR7OI=hPSThVtXi)m1K#B&V2Gxy zd2%pysm{Xa+8q{0#~QF`ZC-V@htb)~I6my5;cEE%7Ftk~b)lEO*C*}3d7naatV%k? z*8-Q07wA1>sI)e=U3M)9-Hu=&-+P&*(bC9rmIO0bPO`$5VIC%Z=7Y*>W18XMg_TrzY0kj!sf>=~v$b-x}ZPnK$`ndidQ zQ`RKfoC4L6c`lebdBDk?9#&uN^Fd9uvnE!Ca(>6W7kIHWF%E+^kB74TtcI>jxp_kQ zU9d~``dKyT(IGUbCln?ZIq`|^`&dhASqJRu+#EDQ{C}nHl|kd{E(4+0uN4GXKZ$hF!-h)qZ5#cI z%kH8xMY2nKw>|5{=s{;4z02+ha?`mY*-kl~fxbsamc?lEPT-o^6=QY{Qv&p;6V|0g z1ip=KWl-h!2UX|YQfco6aJb8G)`+w55iN9rQ@{4qr&xtncV)j(tuV;Sv0TyB8*p%Y zX3n2dymq7;TO(2Dp=JZOYIp<9icqZ7bvRBbu|7SXfY{v6V&BuL!_Z<|dUNbt4L$71 zex{$J@$Jti1QM6e;ef79-K)fCX}wscZZ6paV4?Un>q+Kfr1lexQ|M4{_E4A_cDr`8 z51S@z4R64&b$^PrV>ELx2HLv-rs{@%>^1;>E{987-=Fp4fIb&=Oz1$?)cE1jIuGL5 zPY*+{n$?t8T0fZWP}8pnh2(cT=|-`fuC2*t84`UuRV<6w0co@^lj~^JhA@~ZDbsXb zI6SVPx|DfHsi`d-%9=AOnhs{n8v)D@t0@gBEe|Wceg-V!Nx$>W>Gr#c#VGYOFs(kL zmXG8J>X*;i)Ev}@#3(hmRg0mfvtTOChG-VXC?PcF2^LYj2A@`c4IR;8B~WqGkgr|O@D+*{CxG= zJ@%kfYSk;aIz5~Lk}^Z4OaG3meA*j4nk=&?gf>a(+I0K-Z%1 z^FX-H4Z8=@Rvf3)64*2-Q|P`PQ91|h9xpwLRT@+FWEQD)AJ1@O*<6k5z$rlXI96#y zXQzY8-zTu0^o9kJ_;s|=)928RO=KMzt%x-S@&Q48Z){P2W)Ro z=hzaJFgi04OTn9qi&+wdzrboyYX9IUvQK5x=t?|bmvl4G!E8yQErWtnb;51WvTBS9 zvdmUrPz~OiMqoiaz3~Q4fwURm)aJ=-2sL|?)zp6$EM?89v?oS=e>R9X{U(m0J%fTH zdAATgxkJ=267%Z&tifAYHz~AtHcQvQ{pyU8rVE`8+rdM-XR`)^RfHoXkqbm6T0M*1 zrh*w#ByD>h1K=!C=(E}EUm818swdVn0Pjh0l9Hy+BYqBx!4XnuU=6tFQ6i2XEPx*> z54$nvc@TzKyjb?LZSku((9&PjnOIL>67X&dZSSQ-s=0sao5bVNZoa_nsRbj!$ICBc zpTa3toD7`ZUSw;jX$Fjg6%2m$8Cb+hi-vOpcE;vc*+mNf4pUgU7zm+H zj?>cxtUgqT*Wq$&`xdfpjIKXpOvvR7szaNYT!YT0LJM-KrdOA+IuyPJchdq1*C!z# z_N5TK@^3;&s{V*k_AG@Q?PdTL2+l5M-_WXw#(2;|o7Tv+>Cp@b5#+H3rCqne22x?P z#!eOoz1QKU-D%i1Vnbo*bVjdE0TqW{=j5j;83dfIs8nUuC~YE8WQ`AwriI0<9i55? z0iVC7^TOxz(8hN#5iyupnZ_zC>l}-W4YY{0pel2vWO{uPOQ+e(F~H$TIHwygF?+k{ z?Ca(tiS~`t*eGiGI-5b8mO`t1`KGx(H(qBK=(}Pjgw^MFVb{GCjI)W0gyvhpDl=-k z%s}gRXt{5&K8yz6ho&3)HgI4^{X=h5$IowH5KwME&h*DC*&{~7vcrDpyC80;%s@!Md~^|x6*t?Z6N@!@I%x6iA+ zx`yR2S~=4E;-*bCl_dIUsMJt&rSMuxWg7J^Oyj|8Fht~f41w!;BAvECr1;Ie0-S#a zhCTZp>q=SEG0>HF477f))_*M<%;?-o^9#(uTG+=#A$w+7BPRDGwSo>%jW0bZL4F2X*&{uOi_SQkcxTMRN>PHJ3FG46N=cd$Fuy$F0s*ssqsMQ2#~6tC~Vv`3!+ z&G|c756Y+urXSd5AcG>v+6Yfi-X;J=?qazVz75QHXBVqWv$kT}9p1$p>cBl2ubl~| zzPq7+KHLo(@A=)V9^E_u17gQwsVtUsMfVU@Jad-&;aak(*ZpPw4< zhe8y-r)vAyExNoNvyb?iQ@tO$aMe^CWz%;Ubiv|qe8&Ej=)hisA6|b@BF*^-{*1G= zL#^7d11y8l{q1I}7lvqg>(MV6TofnjWBqR*#t6dxY4A0>LZeo~Wd8oRF^tbkvp%>L{M{vnpbC8{)qdN`!J~u2G;0F^kU@^5^DMe}D9b%D;s1XJ^Qi?&U z9D({N4aWtj=u4xU-_4EOkL0N0hDxy3;wVdI6!n?e=;Vg3-dL3~-@|xP#z~ z^IJ|gcaYx5P*Q{kjna;@cWG6+1*Ub0fdm$!J_6lnsDx-?-*B3C?ZhrR{{s*}SyZKk zAK`w*o4G56fUfdjg=UJH(t1~me2(Ti%>l!5WD;^y|UX-JnrCm56X=m0tY~zWxf#{_1N-#VZE_Xyk(Qrhmj$rf0e|_HuAvFq+Fw~M zNqmEgHAVk+?RVJo^zahY!~(lwqupIYs}Md~bsr;iyGHw8Gafe_)bj#sNI2Q*P}Zg3 zP}+C_7fEriU;QtxEaF}tevwV3`b*2YMEr?!TioGKU1Z^mvid@d4qnBq^PM^H zfRc8}$y)Hg{Ngm=iY_(W(Ashvc7-@KUcJR0)3F;6ji(-g5V0|mz1SE+=CCnv65a;0 zq39y0Fie8)_D`%rzRzN%Zg-&2cVC11>~@4cpikR(hu>%17Yqvg^voW)mIiKm7`=2+ zh&x2e5mbwwc@$h-3xCKDlWxcvAVJYn3;%4A5K!b&ATPI@? zlOl`j;V_wc4fm?1E^L@%*9`nV2LulI6DgHRA>yj59fmuN(WWby=@tuyf;fayWhVVh z)|;5xzmpB-y0mCX>Mqf5^U6LHDtKU~Lp>o${X!*SGt*-~OfgssYpK!mSg|1uj0t z?Joln1UW29s;{wy zoOr!@Gfv8-!SVdbGX|0jaREafEbN&dXrU_CUJ&KdORFD8Be_2hc zPcz~rd*rBbLq`qE8#gg~)UdQ6qehGxHxce}*nBCl15YJLUFhFvb4VvQLimuGNm7V5 zI#Ei%UD*vvze)q8-CC48%s-?aaag4F$)YQsgPl0)MAt00Y|*YHOOv_(1P%6}+ImBH zNhln4>9|jEmpPu}1XFOG*ui?yA%2Smk7^SPy5`h56F0tJYDzKMFKJR0M&H#EjCBS4 zP719qjYWuolO|V}I?|2m(n7je$85H1Z`6=*iqC!mM@h$eU_@4?5(Sf3+DeV;OLe)* z4&Yo4r}Q16QCdiC=^QTU4a6+a;DmnX4U|(CTkF|d2Ax@TrHho>5Y)kK97^?egjO;j z>H+WG)>yZwMg|F9uQss0w1m+#yZObfRn3sFKgVW)l_wm=ChOEt+Ce*+4n`U~XIQ6AHiIips?jL>9aL!0SuJ*CCI3OixIew|0@PPRPE^Sdjg8Oz(3sCl; ziS#dhU8wJHTv_4FlyLWH{G2$_y|@gENEr%mr^IN3n)A(je;8~!TWfP#yW2u}Gp=Y6jg7P@~I^g9~{^K5Q=?7jybr0sO0 zH5zKSGl++SGn}630^)CXs39VzGifh zKBui6f%C;NGq~Q|X>tufMz#*)} zYTbKDq0sYPFvgv}#(t1HV--1e+W4gODz)qi{c`gugGRRtK9iiWA=R|my`@@=A_tfa zj-WW+5KWm~lwj>lAC7q0O}vFn8i?J0rn6FwOV2hMJP3m=%`ymad5HapD@^Tv(kZS( z;n}~F(pNx+ko8adOMNN6m)Xsw*#}5C?F&a??+wWTdxVd7ZxpT>A@E^5 z$VWI1*VdB?q$hcVj$K_oB$3|Am*Ojpn>03ieBQ+Iqw*$D@H5hK9i1Du1&&VJ^9<+o zfTK1On{M`0Qnh~YeKJb^ z0v1hCdy9=|4oDH(_l+4)6&;&lgr&hcHlLlpKmc2swtFU+q~6L+p&SpaN&9SRkdUs@ zvkIM=CDo)QlOSDtreV?2=7&^L&p+rwm8|;MKD$S2R46?KSMPodThIo>{{13`{pAUz zo_MW><1>LOJtr-rrZz-E)Xf&RC9m75ee;~uh^d7kuHqMPy%r7!?scbv>Nv|5su(l8 z8~!@=5)6d_FGzl>JXcykU2VE4=ylUCz2HYOE%-!wJXiXS3TxoZ`eifS%1%i<;}^)*oV^GkSR+Phdv=iGz;?ltLI8upTjz^R>mjSFA?aLjV=GJTej9AOp8 zSpsdpF$I%Zv(Vs?+pcw7Dy2(QwaEB_OYc0A>cDHd7=E28tAJrjU+9+W%cKu!SsFTT zcwN^X2-2eCm!Lh)y)OOCucAJe$Box=*3A}0rJZe|+SxZGw=lw79%oQmc|-AP7cbh=1wTX z32T9B`5G9^&y3N7VCw@#2CT7?g zNW<-Q(gj+w0Ud=%+<9Nurf%FC8efxRwa^cwOrZ?jctq&&p@jFl!YzOnx_#pYNxa{= zaoGvGE+=XSHcCTvXs<(SyjkkWXw1ieMlgUv;e(W9T5%4WEjt}jJ!>=cv-KlsDPJHr zu5MAZdW9uM`}89z$G{QL(zi-o7@I|ojWB{A4N?--KOZHM*cIcpLgsFKEUD;^xIF$C z$>a63cehD!u?&32YNbwpVn5&1gjBd)@Y{xMmy%ehFGz;3#0h6r>f4rB>hg(Tk=uoP zMLdtYOVH+i!Ub*T-4LsUlY~7AiKQbubTn?eQ@gx_53ykfY);=!{j&$!srOE)G7EL; z*!?a_+bPA;oLvTh!>_H{#rx&%LcivF#b?B!IknI|TvTd(CdhF4uu|AZiZy`}4@lK$ z)1OjOv5Y8}U3(>o(dFGnN2gmmy-&h3+l0@JFCM$r<})db*c(FB>PJdxQ zcyCZ}NRBP#}PbzvUycDOMZzt(3x~ zK!7%dgRL9BGsXbhqG`?`JTXlyg@`n6h1rG|Lv@SDq*~ugCqoSu;nJS=EyOVO2f<5^ z&u7<~{~)zB>4yMPt4F~7)(HauFFAWoaHFTRwwz8;Kj~}WbijlB6BnII?c_9?c~Ymu ziD2hA9)J?1Z9XX>7GqU6YX}WHiId>|&jtwGfC3~=bDiS0+sU87{RRDHahZ4H5jtIj z^k_RyL)B38WJ@UXQRxZL6x&Z0M>q!OK{|LP_zqVRF~1ly1`cFqQ{#c z>gRqlCXVOq$G^es2=(eh=k-u({oq)da^Aq=cXF38LP@j@=eZE~#edV)KaAD@_o5=C zBSmX)0VLDmKQQ~}FY3r$cCYrPzm}Db=na`d=2t& zd4L!J>c_90zXoH@kY_i{|D#`F{>eA=3E+tZ6F|&FiZ^LaR4j>@u6f53`k0d-n<|WD1>HWLLXNUXamU1ITzFR=k=DzXO<zJAMXClA|s@2zk+ou zxv3B9!*RPRSRRP;E*J_U(JJ`q_T!*W5D&guZ>yY9c5=W;aP38|hC&5az#-NxRK{}b zzGV%rga{#>6%H3-jAbruZofaE)v6@>S%k-E(@!fGcFDNPvN#s}0UqflUQ97uG&Q=S zi;s;;Uxp+0PG$L|&0%oa;iVq6A&`Gp(MbrvClgUscCkp~JjFwRF%Uu)!UPd`f%Iw5 zhsh}no6|+tUc%=5EZpc1#-9t9aiX*f0|z{jx>3b|H>( zNt8aZ0QSm0{LK(tuMg-nX6E$Jy=wZ*0>asCKGB709iwG0vpJ2;>GaX@`k2eA7@h3_ z#LS52zC`V03>T4tcY{M&fEG6bP`x+<2=W$hzMuuu_PSsgw?5#PwS@B*H)v4emD0S<9#Yo>zE?r`FBHKS%12)YnxN$nk*6zSYiyf zVam82RJV^{wbu>9C;_2|mPE~-F2l(+roS9&Qtft8+bjX+!5ZSEJ9ibaGJzA%Ea_hF}Z$=f&xZ7n5`i6lXFUPGi9ZkB@F%0{;@vl)Z*{>&w;f#=ZpP z1t{}bkaxF+F@RTlsR6dC>O0w#24YZo?gAIlfMz) z-}iojE=_Etf5o+LWn&N$iMx>?1lnK!UngztEVhTw0XsL@A-7?)$Pp4s_g%7`pC5sM zPg~`bd%-V%2(s;?RE8q=iANXY)X^6rVjcz|J?gLx!Ou#?`!}VbRlQhNB z?WJ>lG0vi9a$FP_Uj)@u0^0oXBPL|yzv$*ZoDoxYVuNLtB9h|$rt%lmy=G{L$| z6%t3$EewIiv64Xh4nm+0HiJMfP1jkDsCdoQLaq&c1Y`XD^H`1PE%hz|oZL~m`*&kY zu6PEtgjzbEX|y`ruqoM4ON^EXbCS^)nP~0X+GxcqMwIS-o!?r<^OCnUBy3+BW1azz zcBT#Ir*U6^AcXe>BO0_b09EJe0BmS20oyq#tALnp({=qs@GM=4CSJ|*-dW7 z=t~$*{Pv1;Q{3d?nTw;p_Q4*9T1%odo2?q1=wT|%XS3izTG>PXn7)5fHr#RfS+WN# zF_gRu;Ytmm|EAOx)8rD36%k&zdp-Gz$<3i84aMaR(3^8Z zW9epXL9WN^_Go`U2{nr7ery*RJBwvRZ(aQ6zm3ZWU@z~~LC zxaUXv1qu^>=>{NS5z~8nMHspL-H;fqTR*Or9zTX%@S7rfdf_k8KIpF__0fr&K-znd z=;(7{!$fgM1{QE2q{+CEyOA4kb1T;Hx4{M+21wE!9&p>(=+o0!^7jT|wiGr*Ukvoo zShhS8p?AHA7;S8yBkN2&3GvNc&OZ-No{mR%mu;?!!m}u zGh#Joo}9`;buHqCg1GU9C6;B;xp8tees3*LG^BOI<$vhRVmU%NkDt46$`If%*v`Xf2-q7i0wqM!w%@idc-Oz?3oaN@V> z!O1j=%|~d{%B^xZwHS|=#*@*u+==)}V?V>YdZ!t3qpBHcdE>|DkH^zT?gTW<87;S?V?~_k8?PJF8dian z0FvJmY3qAfmaTiREE}fEp_FzE4?S?vD75YiM8p>Dk}WiNraTl`XArq6%MCok%kh*a z(Npj&`Oi>e$?7ksZiR9Z=TC)PGuLbxA!SG^vsRKin8-$!Awx8{hD@?oVQtNlLv6!M zh^+zwxGJQDQJd%FN0C0a&g?lR=(cjuvg|K<;d%Kpp5p~pY+GSWp+(uKNGnqJ;X3^C z3-ZFsV{#`<%$|^!H!d42bc~YgBxR&c95r-w-o)&o`IE*?%t#wLY5aH|_Aq=*{uFXd zlsi((ks-i5;td0HW;teDIgqcFsQo*apR^n2%2r#>ZUd}!IT%#8nbuVkL3NJBIAzjm z1y`Zv^W;gCb4hMXRp)^rbN3m27nRMjLRQztm*kR2m!Ze#GXr$7ISfyq;weCN>EoB> zPvQO1Irs380oc|A!~u?g@y19v*g0R`%oCzQYzc=AsP^W_ZfI(#X`Tl~AH4#d1GybP zF>e^>TZ>7uBRwN+#Q6M41=-_r$3k9*j~X{>!bs6H=*&gFncmJ-ch2xA9nNWk~B3D&h7EMO<(AEnc_MY6~VflMBpdsRS$v7sRGjM3tC`2o2`$+c+oa=A+7 zjI@!t6Hwz}!X!McKC==E21yaXyUoPAUEt+hs*rC}Wrh4WF2E+KxzB|jvxBDD~gc$_%uaX1QV*v6d&>@UQzA5+O zSu*I=+w8Twe8loB7%^m>mGUC$u3~%6FoE}$1DEBlkO0OZmOz=g$S=T1RVjCs+>K|d zKm^v9o%fe_E>BZgC2vH=3BdN6V4s(PRmd3;V_bg+(Y+#FM2yko$v$1^)<-$G}vGa8ysdM@g?6k_c6R)Q4n#TAeXZ`=uuGDdzC-dwFU1TKQ9+pa2XX z-J>_w8W{XudS{({*gWWunVqMXcgFKPG6v#l>-+L&2>plTTrr_$n)JKNBmHT|difp? z>jz-yeS_Jv%FqQ6+i>;+xr8T_Ps|-UkpAFN1g8&;w{ALur3Ko6rI+AnXygmQbq zv?|8uO(@78H!Kf^M*gIU1(W!J27^IY+^`^c6I3`q^v31^Li{}?cN7lAa{ZpUNp?dQ z=m@eWjUPjCo8bKXXsO&b3Vs}YqknGB>iKe>K%*d%K3coCN$w*e!$V~0TtjNKQMVKV z|Bb7sH@3)Hq|-Rj9+~*&mE*&DBV_(do6|VV5*tzfEe5XtguBy%5_w~&VJG?<(V&kE zsIusCQ~{7bh%jjH-N;yxkIb=n+&K0A7}^ja;aIcrCPbPE!2`ev0pQ8Be4BjUmeJTi zQC$E)CBlzp#(C2oP5#&R)o)4qx~l?&JE35}pV%(vrcZ=Pn2|O%Z`i0@^SI1N8ZGM5MjPodE}b$eY4*ULfShyBxqr2y0H^r)>)L z*e&1YVZ;EPY=XX14k`kkf8`O)08mYU73Bb~wX^oh+@GY2)@BoAbvcNa-rpyG$>W5r zw&~{$dfzB-chidfa$kD9Uv5V2K9g%G+>WLppUHLO{$qaUPQ-2vb4QKAE-~!v^!MfNG~+CWU1kouvV2$%@rYuY`?CK-ms+ z$l7IdERU0=U%$m#7nRB{+upulFul|y4biZOFhP7Q{q`;PV!?5FDt)jTw!|S5v~C&7 zKv|S4)&E9b&cjwQ-D@UbeG{iEpa-Uwn09%@MPt~Ea$IFWr<}akc@!z;;Wh!Al>?TA zkkZcYhx)+zlR4T!nk8kG+~_O$jU-GsqqPUZG>?_{KJH_mt)g| zHD3(YcLTlfqiokXK6@0G1^JROrHf`4Gqm!!EzNBEqr43Jm*0wb_8?Tf#A~cc) z{ETCvzuER@c^g6^hn>R3*fzy%ye1l<8Y+fCZaytPvUW~;M162aAs`%U5-u{B3JHhz}~=YIjl1Mh67?*R z6S=mk5F**|jNF4oxr`HJi%I@xxB@*bM{)O$9gg&MXXT@|qh{kqb8fgvnURv@Du(=) zo`aG^Sftf<*#zEP23#HpNlfiM-{kr9BRo0E&@uTFsQCyvo_72$hb8C2P8u;TFHdMTasP+8Hfr*yiO=%8to@?g zgGVbuAPO!Uh`%!t!w2l<9^QBwa9-XK<+dB%j|C>=`ZD^xWf6wd_YVj;!U=(Ly$SeD z8A>FqR0tP@PbHN$UywUc_(i-{ulOBQJ1^okfKWhazHhG@B>hm<--p+M4=&1gd8i*C zZkP~%n-K6IyETOP^o3crY=P@Wx4UKC z{wKZ};Ql2u;6B@d??x6#0dQ~MuDp#f3IF6?$&UPIsB!FLg0jnZddlXlm{ zjRIx|>D7DqiLzvS=!N_E3+2XsrGf|e3o*o^OxQkAB8-MV#Q0+_)!;P8P-YCquX+e+ z4)!CKDz9A%p&#ogy=eA*#P(;QG#4s7rP7Lr^1Gty7ug?kght)2ZK4?0(m2p37_sY4 z9385OUj+kzv_Jyq5F2Kt_z>j@QF@EQnZhe!eS>mW;q-_pqFhxKDr%-QHQ;$ctCdX2 z5+$szNI-@_$8??6K}><+Bq;;+s#QP83MWq#pxP~JPtk4#9WY-c@$$)~Dat~*#AmS;l7BVSp8{(6WqTCdhLIusx%SaDLXdo;*q_CQ6WBzpEKaA0p3 z!p-2}t4sy;kl}nc6bm6r9pzO5Fsc_dqV;?r&8EDmmoXY#89%32QohxT5p}PEpO|HJ zBt7A;qxa?7l==sP334_gXJS!hgd1F|tYqm`fjU;@z|D~n`brgLgI?mt8)mQ+g?bWb zW>w{Vy;{$c;ebVjojbg^PHo;x6wFDW3_lu#41surFkC>$_w{gaQ&iGv5y^)z>fa>m zz=Ei-%i#K%2&J1|6Q?dj94jfx+$2)`VDMsNq%w`FRzrWYtPQj&-w9aLS~U1N#(6VJ zsU|ydTs!W;xO^Ce;OYy!11j2lMpvWp7b?*FB8tz@g&6!4Db^@4Q>xdFxfF|UsNvE8 z!4>#xuaygJeWcQc7r_0I77Lc;q+lvnqYyiPlS?^jw4Bo`vs~jn{-?-FiV|B~L$R0D zSPACcgQ+M%>8Mv*xs-rT|5Fr23=IZ0C{~~YL{XLUUZPmar9|`+l}_YD<$GS~1my>k z^x?lJUX+CPCxd@_`H?NKH(vZ*eBTW z)67NRs%M~&aDZLqY2_c-!N-11WL5l6y7+2`@(Fcu0Ri%O;iKaz+yOVocNK~^zd!zh zDyv1iTu@~q4?Estj@HYqe5~hL%U)wOkUO17-95@XdII&|_^wY4snB1D6leO|hi^in zk)QlMHF06*p680hOe7Y1Wu2Z)yf2{3Hcu1YqGt%NX#!Yr4kFiA)AM?#G{rY0@K&QE zO_XI7vUvM7Gl7wqi%M5qf$naq%-2(NJ2b~nWZI_lGw3}%-PYFv-^6MlQ5Na?&6Tx0 zTec2QNj>LFLuFaloGlQT=&;HQ`x5-hjt>67oY#W$oj)<9kyzRgAQq7H&&#gFxL z#F6ds4I?IT5HUYg+-Zl?q&(j+v^^w{Cm2%G4gi_eUfD&}JK`@KmkRanfS)2c(9#KM z`AFysFJqN~%FO=jqi6bE>ZA`@o~^fDPsrQb*;p{7*nOxc*1gvS{6TV@rsu`I+7(^R zOtzhRnp#0O9i7NNi$gU70);<;u9KqZMDBI{3|7NC##Oo?( z)<9({{XPf{W+upY?BBAaj#6Z8=jJGS@na9KoF@`Ftl0{J)_9?1=<%|4L{FyB%|Anu zwKsDV1)2Rf;e8*z#!{8WyA^V zF@_)vy)U}DwY~WYO4JYhxME)ykBxk043Zc}Jfl=%3@?dh51&&j8n1kgRKKkidmxso zCOrv#s(aLYrKCD2qDav}R!0w8j5Uw9r zJWGkylAl#VP%~ne(I_%g5ZlxQerA!Gf?BTDByHw21yP)b4hQQz;81=7@pWgTVGfMvi0A4Fh+(`GB-Os)52 zI1&R)Veue-sR3_ppq(#Nl0-Aj-v^3K8T270yzz5Nd%XZME&sx3<16fguc#4Eo~cKf zFCZ+k$p-BChrmN=^I#vXtY)pl8$J@Xld1Vv70~+aE-h`YGEBsRgtKX76#4C*AS5b% zEhQG$MyUJsV-{2zcu_$X2QQyYOI}oXpqkr{FzO7EZWz3^L(!l5 zE=0p;%~urd+RI8X4;hJ|_g^+3P{H0Vl57e+)+pNZic&>;>JXYGe*X`c9~AMt9iT+k=LJiM)_S3WR9cRbbt;=7f~tb*mjP;97lH5k zuqQ88#D|F1COl0ipam8yD3-#D8nY+M(ICkSkLbKcF^>_^cD<%FXQCi+=f5kU!P~Ex zX&mkCf{dTOOO$#>HR6MJ%E7#DJdI}XOq~YW&r3PcqS&x)iN5i<({hd!9ILe?1(|}p zRxq1Gi{BNR4w*QfASbo_0VM*qFH>6S#emrhW$ipSsvEEHi(JCx%KJ>hOHq~|focou zhg7AN?+Rt-;bHb^ZzxF1;{||Gla6m)zSK@pUSc0IbEx@PYozw+n|uNIKVCtfL>jwB zhjRwi7a2S{T#Z$nu>$UwmHM(fT@LU}pxQeDdvE1xzT~3RZ(6K@iYqiHBDfhBW)4MF z)+kmj<81|rbR3l37Hc40h`idIHOeg}x%50AcHdkcgj(B!TI&^l!)9WQHlLPk+KqSl zUjKntqWS(UgCxXr3zFif(F@3vTCtXo!^`iY8YbVSVjQ1#eVq~_C6uKJ>5nfwR#*QI zE915kk&vDF!0~#LQQ>SWQnzg=N>YS1)n-OvVN*tHyhvZbiN$Lea^Sj~Z#iHYN0d_xE~RZnW@X>^!TA|`xf*%h+LV90M1#-6uh+Fi7e}YxN31s9{Ac5XHuhr$ z5u2joZOo@SQ+b&ASYmHl+tJzfu(P&lN*ygjQ+6`u_Q64;lm#1x@rR~Rg z$vT+qbNN6#@?3aw)bpPyO&HGPIm;}36r@AhwVyv%Ixx5|%Dy2*GxLBlfHC;iO*jNJ zfAXb*bhu0B1oOP`NCxHdJgMe%;cM`1)Yr|TLkew>(@6@cwMgR5wFjw-EnVD^$J z+g=9(iTmkwV|QObh(y{>Yba%{kQKUkTuIlyEL94T?Ajs!pVH}2d)MYClf)^8+r$xUpSCwXrav7WTt4({-|uhcq_0?C+rqt z?X_c<$1BRR@$B9V50p1RfIFz4oU$n=d0r!uf_~ z=Iq1&1q~AQVo6MP*SDDL-m^-5t$Z!}2t^bc6mC6}Tw)e2X3%|v` zTm)32;WNF)Y~vdGES#{F28w($F>3zz*3e@7n@ZZF-;~XaGLjKSJ#UT_&eoUl$-#Ht ze|u2rP-I8(xoeq!K+1WUS+=39hZCIYPZ1}vDmRkhgG#-mq-ggqD6@HvnVkxfkpI@a zPlcH|u;Vf-bSM)b0{S|%YCbId8@s{U<|n}sJq?y}OctfZU*sFwCiTglPd z?90j`M(w}h`>cP(A+i7KatH!Mq?UhGiH4Hq^`}HJaJgy75b-DMp zauz9f|0;3p&$2OmxE*EE=6B>YYIMn3g|6Sme8n=_@9{H+7kFjY%E0}0cTitm(>0A! zZ(D28xChwM7w_ZNK&$V9{pY{Z>Eh|$Ez01Mb&S{)NQL6%UfJR@mG8%?mLhnn4SlT0 zdc|S3w7lKt!u3wnd;RvlHU8s+7Tje1<>g*?&cFnX!@%o6dG+!J_4Sgfzl2)E z5f3{^Guyp>ye_BVP7{i9@0BcymQ%?Bj-{cBDf?6aaic2Wa%hVyTTs12H0-I+5YTQ^ zv9xD;z0zqb%lYRCKy7-6rG(bkioz^Vs-igP$hQm-E<=8=6aOrQCDUko`Q7sFuxg!{ z98whP;GeIsShbarmN*>_#SV?r9Z3LOy_yM#$+Y?av`lg}%MKZywCyb0$HV2Ql~P6J$5CJKkL zOJ+OjG1!BiJ0hFBTkqGU@Oy<{i~<8z|KB6wZf zQZ2YmiAtc8w^ig7B)%>c)eNnn%}YaShX7$$%h4kPwGprJ*-(3sZmD6^_`K5GA~M^3 zuphhCu;6yU%XG4WG8@H@9H%CF_05sBE%CJKXmE&jzNV!U{uQuN3~!n_ez41}CqM%3 zDaK}$qd-cPo98^bw5YnA(<9d##}hY>;S0#GXZcZ2X2jig)Y~D+Wk!k{RRU%;ung7f zXd<+iTVbM?M+<9c`Ho3$BSrDY73D`B5+HGF(i0$$_Qj^?)R=E8Q5|#of(m29cv@xW z8-o8kcNG5af1B<*EWM1TFXo8dhC8!8D2pdRHlWhm2r9qswix&N@QXMPb813S92^x2 zqpqxVxZCop$djZOdP7B}i78+$kxc2rBMgFUi(C+|4?WnodPU7cnfhQz?1Mlos)g{E z1*1c&(JCMAq;{VLW~(TeIm23E%3eg93>F!bbfyW`DXod6j&{*+f$i6!0e;VGX&{9P zZLMco0`6(O_9bPzj8+8tyD6d$gnsw<&^T>FGtM1Rv@+LYBCz9zUj{<`+u0X=%Bq7q~2X zSEzb4@_GflQBzuRbtKAP{*__UX@_3j^E`xoKx<1?q!E|Zw6y+d48fI)2c`a&wL$eD zn({8}rLE%#NWm^FpKPSbNJ~qS_@JST1~a z?Rp2uxL$WMdpwq5;W7)K6LLbGShG|I)~xn&tl7fOShEeC_?q#0lK2-i%rOE`+)a4d z#S}`}gzU-YT`WzEQjUebiWr?fSiff7#$fGGSIcb1_LN;a0)C%1vODi93M$s=DK<2s zz5-fl4@(E*^P_G+Y3@~?gk75#QLLqn>1n}j9CZ`JaUPgA8KiV;8=kPhP7&o0GshZz z!BNPhL%Z3_0-uejZTLgaig;nj)ThCpht{ATeULHPZXu3w>TSVQj03azrb=+zVG?)c zS)(pWeae!g#rCyKXYAE-3hYRSe#$Ztxq^A+665v4m(YwJ9ma7ouD=Br;f?2EwamJp z8{l4Cz#a^+ptK~fPsobOM}r02LL{70)`?I!o_|0+!K#DdjT0`p>un&nNOKjA|BSNM zlXPGJj+@s^G_WZ7KWf3t778?4yKK%oUX74FR|e$A{)(Yi!{PRP6P558n_D(1e*kWl z;Yh{%KG#y2v0}3UE?>L$c!;GKPP)MuaakF%0OYVf&xNh0-5O>|G)feXda}ZL_+f$p zX${5@plRIsae>eZM_68Fv}72ze%8rc zwhUv;t*6d*ZeMYQafsB`fyRxo)YNMbGK8NRe%b)8sC&m+VvNFpZ;uuG4F!$(MOV}Y zOvtyuS`*d(ibhq$jC}XHdM@ot1sp__?>mtX5Wcq{dWabFYGx6T! z5l^6Ps7;u{&)EYD(baIKB3jE&nRAgBy15!MMz2q`AQ6ezuw&1dyBb9Lf?D!y*l4ZC zG|PBwt#(*}xYoMf@xjimueXNH;F`6(aNS)A1DTo;Y6Rx9s8qLbrUgET@=9~dYgd3n zg&ufH3kxmjTD#dO`5{Wdv9W?0umJkcsm&_1c=ZO_{kLI8!`{mf*|yZJKC1JDKWBl< zP?UX}o>CD#t`oIIB{v$8VT;sWc;15IpS*Y*OcGO%VN(JbPrjvNPFu8iwa_ZfwJ3Ut zH5C5lke~*MxE`(Li(C~VoGOyuzHLy0%SKIV^`a$}X1@d@Z}&V)umO_!5vVcOhX3=o za4j3P(@?qZ6$}2ktCzWovwmCw4$1|F+kfEdY1igkmNC|`Om6Tv1Fb56cnvk`-UFm( zUEzr`3*fT8`lGht z*=o_@C6-U9baMp;y72Ucf8~!iwk)=UQ6ndm84mZFjCB(T`R;;)RI`&Mi&4|P75efL z6?Q!tdHXU;ca%ohSFsg-`wX6r+<^Xi!GZ!mLv2lI$Xtt?|Al|0Wf+ERxWdwlZtXXE ziJ?%~W#tOXC`NB=!^{50-^5Xi0zv%o121%mwD3(!l-B!Az61C(9ewB3|CuOdA8;>-|w$}fpSbB4{C55c3amtGqypT8lAA9c|6;-mu3)@Kd>25?ol7b{7 zplCOA093>$?b;Pi)vjGTZzWAaW-x%#QO`W$^jIiM8n02_=I!UZ+71HgpJgihyjF<_ zg0;$g4s9`jc1lsw zw$4KaUD%OZJC#pqQC8?l=|CKWR$gKtxeAzvymu?#Fp!qybtd1|Ftbstu}2x8P_$#e zp&JZ>p?HC4C00^s4?{)jUc8Tr4mRy!#X@*{Z4s}yT2%TgP?Uv^iS>se|4^|&y8h}T z?EOimpjL|`_R}G{TZTZKbg^=a3NO2n+Zx1dpUzPJQ1r5CH5UtDtx*T@WhD+OzbcT4 zLmECDVy>PJkF0p!Wa%NLhuHZLUN^-68xVc5DiTN)@ycPmPl~Rr71s!n;5xD75r}w- z>XtnR6J9KU_E?>z3?KQ*fU**QIVij1U z-*KhD8?hMa6ku$ob~5xO^GmBsi&OuSVaS3d)?17>6;Bug%lTXRgU|5n7)PjZqynkP z+G_s+pRl--N=LEMNqHQ+y7GxrA+;(1y~Q!7aH!1Is2Fb398s(qZ6-&8BP)8)frpE=22f zdeP}T7!>}q&sq61jBF>osX4TixGzWUs2DE~ZlL0G@5KjEq!!B_}*oG-2zaZ#H!*NV}puhEGB^LeeQuSq=oB(GMe4E0v?j^Wz$Ry>m_Z ziW+G#FFh7?1_1IUUdMqj%zr? z+j!Jq_wYZ5ti>TWIe{{Tng|-;x-$nV=mq&ekJEYdY?&2!$}RTcScRcjW%ByA(oOWg zt3>=RYrSw=Zl!7y+DiN*V8BbfM~|L?Ow5x(D9K?UlOEtbyni1Aj9G>2*nFy)ta*$( z>HLs#KCFNJd#t~~1PQL9G{s}AV$dUs!fb$s@&EubiWneB>id44%^jhEl2F~CJ}!Cw z6a!RwN0I=Z zE|S5ucqYw(jCrUIL^Dt3y#hI4*6L%=7!LmYpD4UD3%3ole1Sd%qjTDGP zzJa}|_G%P3irwp7B)@LUnz_@pAbyPpe`v`T=H zCK8fbL*AkF{ae<$2x^vJ*++9AGsrd@0zhg~_Jh(%?D!t9Ecr|!JJ>*mN2na{G%?$!+#{4y4mU(yCC3Qto86Mqy8ee8Y+&zbOm( zNa3IP-2nX*JAPMI;cIaS#Rk)xjDLBi&Mj}*$_*x{Qy{pZ`Y>7D5pUwhAIeX>Xt4IZ zbeW)t3s9(Z+&_Sf`yl^p6yZAnd7rrrAbPiqioUW&GZ>^0T2rsYBERbVEA%Yq3`oT-Ft&f!{qXWL;6*HcFw29nrI?L^+HRG&G-sz{rW zsFfgyl^Q0K)EKEL(xY;B1LD?KV7VJhp^vbTvd<$JxGod8w9rR z2yjkpClZ5X${37mH4;@}FA>7ZR zz!%80-xn?$yl!&LYU#V^Lq)SQvy`ucW&tz({Z$`1Q1WtVwGp~vH7x!bC5Uqcl^W^X zRW9Q602Q<>)Kvo&jwDXS7z$SSU*KiLYUO1}^0llax#;oMm4J@~tL*%_0$eh|`8X5j z2K+D)BtlC*qv1MVPqS2M(d?Xz`zooRXt%h0z#c*QNNg`qmcB+f1s`#4WfhzgSw7mJ zETqJHk|})?4DKN`9f{YzAQi-Q<`HtgqO`Y06JHq(j}V6j)7wk|6fdl3VieP=s34cK z-(Sj88$*%NsuCMlj1EyjSYrd5f+h4oZgdmrUJC{G3ahES#NE|YAZxUyvZBal2tDou zO>#>d3CyA4I@LGHc_iHy8=;2fVB!Ql>=_IMo4YlAXN35!mtXH z2Bznujbd4Y%B;{rre#DGsS|#Eh&Qc)UcPfQqc9s~s7a+HqEYqLP6kp%OLq#CH;np| z_z)pnRYnXp;})|L%nGDimPD2?=tCnIkhm>e)rYr}RiP3x0L!BzRd~0VyUL?5`R8z2 z^SLrPR8!?3zOO+Mm;p>MN>jtq%ck}tn`;5b2i2nIO+kQ>)~(P{sg2fpcG{wL5?@5o zlVRg*tRatM0tsgzDTm>05K>3wD7KH52P12n^8JVa8;(0gOFTQ*#eCQ6sGwV?MV)bi z(z{`bfKmxQEfgqa2LyvA_2~I9pgR#!Dv!e~9z{R%JC+wUIjhagp-@RP_)>U0(c12GSsl6Pl|ab+Eou zYer2bcJ zq)d10`t@!qC~_%?BGozs@-3U-j1oXr_E41;yY^58G4B)7G}m@(Vf?MepoU(D-1w{~ zaGCk2Y_$%AcOJTlKB@rfo}wmxcc2*P+M6Q1)u9A|yz)Up$(_rTsH^nor% z3lqDOygQ&T=}90M#pgnjW$2&Y>M;Ua5e$;~|Owcnnfq;q8C7X9NiCVWRh7iq*89vm(Q~OrVLL z`k|C3zE2TQ(RB!3?^*G5o0&7pAsa|D90V9-i=jAW$D#DWVTFzzG1#(UbTC%8cv?3ZPLH7&T-*p1yw*q1p(u#rk!8Mc9hH-)V@lFTdyTm2Hx<+x ztlV(?7n=RCEunt?tt006jca(2~*w-0#5ItZD zq6LaGCxQxSCaNHxF_7RNHbWVxK83@roTPGKB9=IE68QQ6DT6HzoeBH@{g-9FRxGnn zFg;KgImas?Nx1W5)jQ^wvSc*wsHB3$x@mb<1~6v|Sd@-aR0Rx*XzZ+DSUYv-W?(tL z18mjrs_)#%WwnK}AWdqq3KZ9nO`!rQnu_U|pUact(m+613A@~Wa5oz?YDn~K@Y4_9V$?`8I5Ou}m_#=R|5Z2x{2yyQI7^jZ%97Jt&h2gHxxJfB zSFtAusip7ERz)kk{tGBAQ0kB|gJTzx)QLmqs`Qk3g6>s0OZpjRz}$J1lG2|Q+icEI z54>5u6U>Y*Q3a(e>(**6pB@&|@e5Q?CQzRqvTGh64CXrV&_We*2PV%}1(MJ6Ex_{@ zQLJMQK)cu!^pOlldZzh{KqPN0rnCTkT*&*G;O#eSq*LKgp<+N1W!2fBT^I1VP~BC$ zK8rr|DMCrkE`_He%d(*cFd{w- zg8W#G_Y0_{v7`=1c4P*A+ybtLt-T`AA5*{{yhi09c`yBCZHK2^FmHdkR^=yoLH$VK z%YpYi_*B}PELji2&|^KMsxp%QnUo#MD$<^?85LW^`Xz0|L7dxwJz}m```5|?hatr} zTh{lDc-my2HU#~!d-0#Kvn^xOZnn=~1m(z(Td1N1B(i5!Aoh3w1)|C(CBH<;kTJ{b4J(v&@^FH0 zawF+Akc7EIhUyEe>Z~Y`_XmkQD0yd9pI02f!vyCmmiK;#$giIsZXkCLf>|sFK#mob ze_1LME9PBigHoPCkF_$BSoKVmk2vx$^eO-U-OtI}X`)5mPiLwo+8~sSkn+Fez(y6T z@)4nn5a(v8Mk|6WNGrq0|Nd*4W8}BnXf~R~#>Xg!%gR!Btchcz{4zZ@Gs+$;J5I5I zwVhTnZWH-Z4dTnc@G$V7tBhkmBcG&B3^<{xgHW+Z{)-;&9FtE{Oem{7_#&MrNDVP|qTwAj7&0tk!6n| z_%IL9)ITILK=qI?HA9;*G!&7WQNj4V`cpi1Po7YNCLPC5+8-9P_1r8aDuHaocT5+yr^Jyv-T(@QYL%9qkA@YYiagX;0%lpFAh zZVGcu>>m(kO^RX(4cMa1p;3QX)pDRH#@3<)Kktj&sM~ zx@vsM$TzBc973={K;UBh)wv?@SKEpp+sM8Kdmk>Ic&iGusZ}D06v#DxI91@p z*<=<&-cvkaeGMz6wS#vHq7Jn17Wx2X#EK78ho4Og$+!Jo2BCp~3`F+{%9XDlDJf+j zZYB7BnqVh{>nxsp>IkbSDQ_6a7-{(ivS0ca*Z{1hRIJPEQoxvf*pBEPvJ&ktzF{5J zzR^8oj;`A@(j*Y?hJ07`mt15EwS0Ldm=kN!p5;hYh2Xolu>eIYEg(+=yKrt4b&N2> z1o6>*?F1L`p+dk{veCa*vq3RhqpdoJ8#-D8O?7br<_88B^MP|dCfJk{?S&xe=d_Ou z|1kr#AhGqs0ar=#Rf41Fp|W(JKAmGaxFdd+YXku`UCC`Cl0PCTs@Ov}w!>P7Ocy-iC}N$|Am+OYV8~cG zd#A0E27oOHB@)WI%fl{x!iEKJAYF|_4=f?x1KY`5hoda(g_|1}KGOe$@UhKP053;N z-M4wng(!UIk0c-WZ~B)}PESMq%Y zd(zZf_@{E6R;}uE=oDBvwsK@-&wky9Bhgy#;r^q#4jo^M68TjIZZ|&zJyx|+451PXe2MX5GbcRTx{z}5Q{|%Y& zMTU$JX9Wt`{~K~qNk%11)K}1(xVXYi>07YiAZ7;(g2K)eN@6QQ(SFiNq9x2T08nsE zuZA+=FRKb_QnRY?fqRxWb&x zP_gnu0mSnRTRM{K8N`k{0j393CDM`wryyxesKv&I&nk6G9pY){MM6RaSMi;mcBlU8 zslJ&W75Nu5l61)Iz-}x~?G5 zL+qxgs4a9-kdNWg7r=m{lV;wnQIW!EOrI7_>GtJnj10uC0%ON#-{Hj1HJz`_T%TfyN;oE%FLg#{rzipSYfLo~kMphvV3)Bdb( zCHRrjt%OG$C^$wQG>jmC!A*>A4dINBJd=$KOoPci47;;1!VcBHPidUQ-SD-Cn|6EN zR|kVbURxnbp*U?J_|Sq&UXwgftn${Dp zGjn@@Jhkj06p+t#fHNg}aE#IcH_CIcv-uhqlGGDV1%*Hiw8W1abWkPx)4E-#Biv6Z zkod>?35x({Ah8mK^;w2;o2o)W5uVl>1mxWY66 zu=ahi8%TBQtXOUNAU!^6;Sida>(Z0U}PF#;84VX#hV5c%X2ICNZiBNk-`r}St~fM;NVg8>g0`)z`=pACAj=R6vge) zSc0Oo6&?)Bw=t9=OdBu3Llw?gE9dcouQ+HNy+yYtNDBm$w{ARLOqWTVFor>8ucr|e zo+Q@}K^OXo0wOXp6697I`pQ~$O2kxbnna0%W{T7bMSexrDi$VC)U3#sMPGz4@U<0q zQ}h%{#oGA*KP253bTXmhh~KejYfUp4nNZVA@mkh28BxJO%%3Xgc?btd3$XS_n^8od z2Odir-a(u*IMc1CVk7BR3ZVkurz3yK+36s0EC6JP{8Z8S62Q;^5b|S&@ZBcD}D{YYpxgX3stxpGR|YFp!+tLZ~gsjRGr^YBEEv)Xk+2Ny(S+fTRV} z6ge^rg@n2~aoIcp+I{C+YI`#2DbijMKX!;TGOm~##k=%G!A<-&pK{(P%T|gc1Pe}z zp7I#xFi@vD3+OJP)rED}nKLl#q!h%MXYC9=Gk0@%Xf7NzIdIK@X>p4?a>ykS%1m~nNbRnMHA$2M>IjR?GRE~)X|N1(n1&z#5u+_ zmrjH1yLg9ihXbYWW_xOe=P{@Zi{3fk5aj7>8qiD;X`w=3XrLlu?WhZgnx;E(nf!MO za89XZ14O;4tU%3o18Bi60FkQu<$0*Kih)!?-9hp5Ztw$&2G$|q&Lo9CAzI0q)Y^w* z=((3(OB$m@G=Bn{sx@Q|mx!{W{vvEJ23$h~OaFNveMbOH9cPi&8loKo5##nl{#8U< zr-Hn#mZ%2`Rx!i-9ME zF;HRJDFlrKrq`1lr)4k$P7z+ep5ptH!cvTPQc#t`K2kf%e>`^$XBol68jRx2(?T@$ zelLsP$kuGR!9>syAdWZ-JAzgxPZ&mSUgHx+K9yPkFaae^{SB0KhO@E*p_Ei ze&q5MK9?C$vg+%?AO$oPN0-2U_GiAl2!pughVT#4=Cl+97k+fGl#*zApxOq#^3U2W-&cqSO?(4L(N8#`-rX8 zU_iKD;S(VXN)kQ>ZZG{HLj+Vk$Dc?*sCZlO4AVJ)o8+xVGg-J0X^<{FlcvJzqREBs zNZ6&_fLrPJQdq`TCrD*l!5A%{okYIy^==@$EULS2fl$4alvMIEB1dabhCUkHiymszEJ7` zI?#p$^t9KL?5$XFY>{yEKPy&z2Tngl31tvI0}8PgYs-7o-i|($33}r!_!o;tigcFG7h=j{mZgwhu+7?!iuK!7eOE+Cu;dqY7w0*u?NH-W-TCXOm4Wcb3@MvY$Qu7 z>VI76B98M=Z&gUoCT%2{Yq0J99@0FZG|d^bm{?kU_9x`W@ErLYAc7DpM+lx#Oz~1* zQIO^pG#UrX>_D&KUYr<)Lqu;OCm?kr6MU#=V+AOvYy6JzsRcBPX!L0qOjh`*gT#qG z>L`#@j)S4d?Q>VF@Fag%l$Hk9otBoN#43L3yLj6NsMYvxsSi{iWL8;eW+;LXn=Pk4 zMW|sV)C5FovY#dmB>ATijk`2}Zl|E>LJALnJ|W?%CrO)OA4DS*E1~+3CR!p(n2PT~ z^#EyAU~Da`Doqft7?6|)%H&)@y-48-#R#R_mIa2w1!ZJ;>0qGdMPNJ@xUZ7>3odF2 zx`+Hr5NB*A=X|9v0UEZV*;xs)v%0g0L~%kOMVQ#SYE>y7fr4N`zHjtdaSD`oUtg?& zwWoJgwJ+cORSmKG=`-yk3Hxo8kGiBdq>36Mpuf9D=@1Ii!`E$G)b)WUx#hw?me!?j z#8bgWRZ|BO|C&J2ZoeQ!Si%h)V#sX!@`N>H#b_oH=W6POloXZ%C}~}#SCtGmBZ9O`1ff;v7>w?#P1>!RBOYe@577Lh$fR2k#+W}%sR2dU{t@k zQHBF)wj`aUk&4pm<{t(E<(veWphYBhg*C93ty^)BoGg<%l>XL_tx{oLnVcHxBKFwWA%!Ok#oSdx8VpZgERF07C26(Q z0VK0A4yyKDBxzj`r5>vw`Sa{8Pf0jm$J1JJ*KoOOv-ZGH?&S!?IkUdmJcteuh8fy1N&H+jU z9;ova(rpWsq3LZK+f>3zWLJx!at9sVmn6o3lCX_CB1l+4$3ZrEwVpT9%_AxG)UAjv zM!m;IPGQ^8?V%m?9L=Ru0i)SO9^0J^_y`^B=U9Y5>6YS+qZlWT9mpC*G?rG7YK_%u z2g|;JF1PB!DFZU<7HdU?pQ_^IR_c6YB)x10J_I+^vI!Miu}v@_=$LH+`GmKKB!0!~ z)1jT(Q7mYq2EU%}tPql}*eTJMOA)YB>d5dmY#NghdS+x*LLy`qF?^tOx>|$G+(P)e&Dd>UG*xO|tjRkL_0jeQL2o{nD9=y(X zg=f-G4GZ3*`M;a7;lwe$)aMzjMVdh3ccQNkBwIX~L!03z(U_%{CP*zEK<268BAMMs zeL&%gOd)iG(1jlc+!Rn4jISB_o$)HLKth^Qn%vRiLyPxUr&(@`?U#NT#I_Y$1ikor z060(S$w8KJb_AdtxgOZZP5n6L)3*qVqT!$z{qj$b-cMWj*8qMELqYqZZI%=3qOvC? zoKz0tydml&%bIL&Meq=*D-4^hcvqII`lUOt#%F|tHAz)L!($)7)RKO~PDvJw!V72v zLAi&t;cAh-%8m}UpKKf^4G(2>YyK%1zKDIw&ybTw$dKVkJI%I~Eri8po*pINcgrF~ zECM+Wf07Z6;rvwl_-Pp>4K<1WW7JM|Y@c0a3LOTyR^IRY+FFLnG=FOsOYo#4L9%On z@C4AZg7si&UX4>{DO^IOZW4z8zCGGU>JCFk2QE4zNw+;Fqy%1~D3sI8y$W`2Nq|<0 zD~+(7OvGd^cBR0qvQ;79H^Vm!KXE1}#?(bTcM5yM|21w)M2wOfBRRg%C<%6krA4Fw z|3p;=jKh6DRl+AI+t?xS6yb!1o08fy_A`rv)@Ggh6pw@i5~%xp!RgRw~-%= z)Ei-_zMKZ3)A>*JzrqfgQgO z9>i+_2s~m)okX;jwc%I@n|JSQXE&pV)eD^ z5Id5UtQH)w_xy>4>1ALFyY3j<1lig;cJ6vLR9Z)p@p$7RFmQVC@#`gU#5}aM0ryM= z>qBCfs?}=CgTnaLzcxyng3I2{(!qyDmime~!(9lssGt!_(B#m(Cs>5*d)O>6PK4uw z5gFLQJ_^+ zdx#y=A-Fjp?Afx`!n1tFFz8IWQ^*K$$1b&(or~m14p>GEBEm`S^Aad@cWlrIa%(R> zCT_2K8-Gb$A!BiHS@=S?4{7|-(ZjbW7Ae&2EaIG`qv#gTiyBhQp0qopE9ItNylTTL-H(3eL>+03l5*t=6RkM zCwDazYisE$BDwl4g~qZ)JQ4e}4F35#(3zS%_x08jkbId2Wx+!*Q0)IQ2{|DS*M9W{ zhA6Q%R_;stt?sIJxI+QwLe*ziRpgS085H>lpuLIcqQai z?;5d2jyfEOY;#&HZ~UJg?14kXtQndCM7=`%qUrUK=v^zm$W@{o-_OaYaX&+%uZ%@<8N5F3zN`k18+S1~HLaIukTA)(Y zxWGDtDDWdBIq%ifVu?)iCgAo@3FVP>xCo3A1~HJ>kM_T?|0~uhLVXYiWN=^$MOI{T zv;b1R@eTicGu#Wh{5*~qK@_l>#J{&eO*&wE>+hTb#3|u#q1I1fi3#fOHB zMHU0JLY%W<0x&w)559QB2i4)}g?q|1r;Tg#q&Q}DM+2h?oL18|Yb{=(0cE~XOrNuxcN8zX>-%~(Qvf`s;N z1U3QGSEbe-D5oJolvFy9!bIebiFeRcX00M#61dpW#Y)I-y&7Fr@~9Co4I)(5osBBq zQELt;Tr3Y4M@fAInXZ=B3$oDM3QrJU>q)jbz#lEW6vat-6(Uvv>#@zDg<%xNFYVWA zn8*}i6rCM45BWU+t727Zy_$(Zi%Li<#Kow^6ZNll)-b&c@50sDH`1p(QXmQrq-9;DR~ zC{q@=Y3h=@+u=I^Q?ejy(W#BNlna;BBk=gu<0CtJXex`_-8IlIN_QOQUA7D_SLxfB z*?=vhT4`iZXUF+tETx)`n(88c)BUuE)cVH;=;bL5fE1?avOlEO0lf zJbXQw?9(*|JMq)cD&RA_`)DB@O7kjl!1d*DeI(`eldn{nIhE0^(6U2!MUXaX}iGWa#&6rE5)d+p{kF zL!>T{#9HuJTvSPLC!MQm0+_CHUsX*K>|2ruWNWHkQAt`F2pSCJQXvL+l2Q%%#Tlan zlMa&0mxd)U)=L>EqMNvg*m#q)Tzo@I7Oa~TVy_a17&LDopyPkiq7Tq` z+R9h`s>prxe0Nxl2!cKyB;Kqk$3HWnB|my+Iw0AvLE57%9jMG?gGMO=td^n_H^b4A z0+w&~2<2l(;2K2n&!OSPqHlx-f&CO=WFtSSC2-loWRNfhKB5JY8a(N-RWyPu6xocu zU@9Nm3CdSqsT{p(=aW783BAXIb`(Th*b!wE8m18T|w|(*3mR(GpS32+RE5-eqk#^ay9xw zuy|LLqi`oR>f@d}G(a3-em%`vYRIjV55juCA^T!PFv4!pOruAIS4}w)a3cIRnrYN_ zFuyavaD*UIOLDl;EGimlJZ0Gv0sjF*Ks^>VV;>lXY9^G$p|vjNG|}X7M3YUd5^P~E z8w*Z15h5o2U{NiEN{TdfU9PdB3E&!$?|N+Sz*voB{bDa%w}9d$iGMo~=0UNVAQ9HD zQVOdeh`I_4EvX=wT8rz-sE<+%nOsF#o!n@tDKGYIsev+mP{-mL*))r9BNeO4(BXL6 z7_7N@FqvJYtZ*u`1LWpqpPJ4v~_~{R6nyTQWXd`apwG!Yuc( zOmV9SX=9dm)9kQ(CM|ctDHB%SI6~?HoJ(Q0&MGePAyPLP8>E+qp)+e8H$6N zbVSvklL`}FyACv9F@V-5aTlKr#v*KWwXdJzKA!5s>4XWam9?6QJNYtHQ-yrofa|+# zsOA*%J-t(DWFrjx9m%6uPT*0@Qd~1!<8DVG1QOB}kE59cx8`erc?}}BwR8!K&8#_6 za|F8~@ue~@L(U{K+RNR{xYL$yB0@E#i*2K!n(_q8ztn**A9asF&n-Pj*KslefuWge zx$ltQST~Kcbl+j^uE`6cRGo-R!<8X*;dS|=Hc~yZ-(-zQ09joJsEOZt$&3HVIH4~k zT@BPAo~Suw{X%>xLnr!$gWM#b2=PpU2F@4EB|w7Uw_ySk0#N>mhM=)pErWiSKc@2U znzr(7;G-JAnUkbm@?q%3!&5bvt#gAYTjqW{nj6ZEI`P6Z%C5=SOD{Ha{EJNBW>mNh z-kJdjSIN)sC!=A*andlM1VCl>&BjIem*GL~2Fn-oz7~4iTBeOxO5`_}xX~ zY19~uAGSL{}P+F@d*rB_=Pk5i+ zeY#tWntAh4Dge`lk*q&a*Mu1~8E=l?oJiM2D6awrJxcbsq{S`yB1X5B5EYNQj(K6FCYXVVroE zXkIHEK(J^lLy!wQ*iIrMjv5PTu^bV_a&Ew>XtYvA79jfYXTxybI|&}V6Nl%;b$)~) zV8Lsp%owoe#lJaRp@-B$y~_M#$VA-d?Z^(Chk-QQ!pG4;34n5QQt2HxQggK?P|RHg zk&|RX1rCW_)}%sZ-f)%NiPi)Asgp+ZTcdf7#Jzzk+fL9q4A~&B*a&9O(n(BMr@3bR zOhGG81oOupECTzBpbg4FSi9tI0HGu=-`P$hBp3wQL)oKo3W% zu0OBKpM0;4SsLuZEa^L`B+Gmmajt6V4Pl7&CPP!%9{h+2DS0$kZ4C(eAUjV|E{jb7 zuYJl_(fUUuvmyMA?e=NX z^pTlf12@i;K?C)n(8GAs`7g~=e6sAQDLei~{Uv=ekkk$CCi zMU0t++!ntq4Fnoom({NlQ3fkh;R>Mte6{~g2^h_b<&=?0W&?8Kpjs6cjH)cEk< zn4{T%8<6?T#Q7!=anLD#f;tGsNLfldUylQgF1#t9ARfw&IKdxk`=3cf$*a<|cwAAJ zr>9cKqD{s4+jx&IY4jSX+32cwdH&2=X{Bbl5Np%$y?rL`a8~r4at=V1a%VCT|c|AZAK$j8`#hS|R zgAK2^vmuDl;@!MQC|KQSUQ%n-Ln@Q8Q*73Uxj8$xggaUL`|{Xkkb>l=D2cb@@xO;P zNK|^{W9gphLdE4zHRo)JAR{ajp7PQ3csC4uw5;bE$+94;1VS+!L$bsI2^tpQ2CRY? zK?N^Y9{%cEfN0<9NpP-ZPWI06G(KnuL>U$w%UZu?X*v+L?X2}h0~9mL8-j8XGDvJG z$>9KsFAMuH<~iScIOzc!Tsqjf5flY;B@ROn92AatTYk*Urjk2UX|^`7WA1VXl2r6C zh`MrzmfT;NR$}JY0yHPPh)rUq!Ng5qJiu!ZGZe_W;El#ZbbkY^F2(PM0g7_AG?d#S zO}{g`fjCBk_^C((t2uaPy#5jldp_(xau}rb6id9P>Lz%KmH>==DKY!9*U~sRC;dmw z6U#U@FeB}>)COh_HHL~EKU4Bz`!0j>F>>DcD?1`U(b8kvenUMZ?Kkv?dzy{UHnM><;BMFJ40Y_FdDBQk{^`(vl6vy>qlz6mCca^j`vU z*`CRe=1{nCw5AcdA!J~2ZIJlcPJ7z2qcAD39Yqi>2^6Fbkj~oh4tFMjHfE_1Gt3-* znPJvntF1+>4N!S>Puc;l8^61ekTJ?imc}*~O^CrV4>Tb|H1a%Dv%nViMUBu<7_>`^ z@R(c)r!(om*Bm7}&g>7vzg%{x_2if-v z1e;XC9QP*I^0P{7hEcJtT5 zOk^{ztPr4nw+ClQ<6<2(`M4d*NgGM1T9R0X6w!eC3G$09IKa(=Qy%ccC+5iGP=gm+ zU(JfzD*GyESIg3%)e_1zIo}rXOHRG$>hUg4D-i7*Um0PkA(gcArH-@=EaUS{CX)9W zSn>P`x8#C6>Dv5=2-%s63*XJwy}+%;LagsG>N$ZEYXlRSD7u zAVjMXjYxJCQ6LcF6Wh2+Qz25Xn!*^)%~K>uIJ!4xkgSv-p#jXqS0`aJfg5`jv1D~^ z2R?+>h6pkmw`Usrd~o(OCX7zVhhdSW=0Zf3nN)({9lY!iN`^+*7S!$TM~Ux zZvCj&{?5#uxQ&Xsz_8cX`39gGHSQZNW+b0g-O_n z$RIu0n9uFL5s=oJTYC|NVY`s=wJEi&q?N7^_PU0(K|BzpErneEukE$4Bl9N{Dz2B3 z2_KPbb$Ok~lx?78=c47)XWRp>4hpc=$Fb2?5v{mC{N0qS`Ro`@7x2{~Nhjr`Y1PP8 z^|W%VA9WD44#XN5lNvHlZiuUc`;LZg*60lqP#m5ldpp`rh zYRTUY>R%AU!=e#h?niu@X#Kf^KQjrTMx=}A+*msRFENt(NjPUU9XDwt4FhE5!-yCL zax4qEF-cJin3;4-0YiGBHG4mhQzA_K(Tu`T&IZqt#c__j>ZaxKC+!rs7rf}XVHdxN|v@FA4L(pkk#4>F{c)?X}YsfD@4zavcZlKB*CBd-w% zPbPMh*Mt&attrnTyZ6Y;GE%<=-LKM@;sI*K=a8#yx|0L#QB{(LMTjHYY1i?uw{^N4 z)(xj$B1T#z9^B^E5k%DM1Qqys!=NZYXLXsyJkCzq$Top@P5^MN?#5+2LXTSkfl+%)05M_~T!p4zPzwxuvx z=}}xkgMSvo>Hk)=<^Qzj|DXmV{jn4O$Abj)(IOQ%%{}*+9PXnHRrDo= zeY9H>w!1uyzBudNtZ_cSmma1W@K^a$3sZhS=-y1JFF5ru+BLiR>RJvrk{32!Vcs>S zRe7hunG4TPFs8l8?t7_WVT0y&FEheY+T>@aJ_Ih>7bWci&jh zVc?ikosA`z?Jby*?SB8aM`dT|6UP0s?DE-V^{R|2J>uDmF25%j&#!Af@9cnnM++*1 z->>$2jaQY%-2Zdzr2Bt%Xn1dz*NAz~v&)RX)pYeAy{^m}*K3v0ciBk)ytVV}LI*yK z>pSUw#k5OvvOC@xt$s9S+jP^zk$rsL6|CD^et7kjpA);M#nylSP^@!s>&&nH&vcBA zof!Bcre)K`Ya1S{s4kPaY{jCg&-4k)CbzhgynRjf?!?)lIahLj?c)-Z*K1;l7xjDA z7%{Nl`Z;6QH#m@++ahP$^nK%YG=C78>osXkgN*84s)Pf%!g=@o#Wpy^rY$Kye?g0mvsE+) z9xnOg_M0YlL&jEIBOaQR->GZukB1}2yG~Baakr22d8|3MxOeHysOHfVCN5vzBgIpf z=^IowE^$kp_nZ7bjeEO#!r^=A6AmB9!oRr_YGs~Sc5MFi#|r!0t3{K=W&O3Tc5S?# zPA^*5a&WjiiT}&-aZcBL5!JoB8eV+pJMh|< zebevkh&uSs)kb@%iic; zby)w$nTdV>Ih8o-d)1|zHaF~eJZe&9uL%bGAxkPQIyGcYqXVaF9(s(wPWWs1Zs9LE zTE~L1Ywp%cyE3$f;n0z3)30vHEo_qD;dMtG;Fxe!=XCk?#HBMvKTmIW=jiS+TdSrT zzixJ|@Ab5Cxew{n=e>*Cwq(HjC~~U9w(dg?7c^WyVf34J2R!FJ?b~nD`~vSiBmS5^ z`q94WmtNi7{$=gmy+^W-e|i6Fm4cfC9nZZ985dr+-pEER{%q92*X!(%IitQ$sCWGF zr@hmEiz`UT$h?|)CHLetbN|#BF>&lB)8FFhwQ2hk$9{Au7&ve1%&{|fee77zZ){%0 z;Zawb*#A|(UWpTf948iU@o3G6w1S=uALcYM?78^4Zl&RQR|-2B&P==z_+jt#iThfF zEd0Eq@%qexE}Ku@sQNDh6nHL&R0+Q{6fgdE!_R+Rzj7Mk55-uyvQgrKEAVV zfMf6JBfcD&{GY!XhcM{Re?<-R%KeG;+*STx{{21BvG=5e?Q3>sW%zXcKm8rU@BHs} z=VKWwJN@TxZ0>!R&Dfr_ivO2?4+kVTiUS?z{kC^{`STSvrT_a_Mwhn7GHSJYKXFG#GBIU*Rr)tH zK5_BHl+-VwiEnbo_Z#DTuk(y-Q+efqdShq1J>B=`vD(uPq>S6sW2LG|#cTcZ3&ZzB zG`jmLw@Sr3{r&Zdm`yu7UmB!(v!mqY_xqNw&hhp+&}r0@_)VYA=ZsJIy!piVA+<+} z?OZoCmBx<YU<@SK! z8hgJqd$Z^AvF;oNCQ=A9ib z3^es8o5bzz0{V9OG57Yo!(vX%-~LSe{FB-71iK+sVJ}O zrFw{M!oCiB>==7t=#vfYE)U(*GcMS>WUYY9j&=98y<6zB_U76)5pKgTvk#8^l7%<}N zx3Ci*h2QG?6oC&YR!mXMjcgjGt(Y)(@Ti{t#YX>_^rdlI-{AIbwNJLHE{hL3cW4_~ zq1DK+Pgg$|?wK@xeB|JqxPxbVkFMElxn}T~)7~2guQjDSKYr4q&YefsJM_rg_vPi@ zZev&UeLU;i;hW#<48L|SQNH*nsPi(sN>tL1F4^g?G_POX4KlT_>k7Uma`*L>0{ksQh zbxzq)JN0F+Rpk~mKc3V-?86kdbbI>=kM9SMndS8Hmy)|zx89#sE#%qRr15*2D$a`i zcfUE>r@=kLwh#I~&5pI+Hu3zL-hsdLZnUWUjV|IM<&1iMsUZm^2KT=lU8>mq4#gY; z6!FeY!+yNJw6x)?AHE5Lofh@}eDUhtqCL~rY<>CWq;kqmuoGkJ+{$n3uk=4R_U%T; zMQ!Kj{}%PVC~W0X|8}Ql1eBfI`{9JD$1(!8w<+0ZY0X`u<5KT0YjE-Nn}PqNUK?{Z zy?f-;Ve>ZCf6~A7iFm2ll{d*z~;li~{A-xO27z3$mi*z(w|`jDn8HinhH zSurGFYOw}mgBEN$-0jtg@v~C16z9wT*pu1$d)b^JF)0Vnz8mv>nPK=+@^aVM$dgki zuKuUzq@cgbC-`4-jShO7Iwkr<->Iz@_q{UqV8r)3s}g$cF-{njyS=94Bi+>j)5ZkX z*L_JCu<&D0{rIRWe?HjY{GiN%sBg;+6DF-myjZf&MnjYJn|=DM-_ta9^X+r>`!`Rh zz4u|6{ZT`rMjsIuP0y+FX5@{dw?-^zu)1t^sWSBncdwt zJ}A-f*Ghv21x0)~9y}s+_2Oq+o~){tmqyNw{m{hI^IR#rb0HW1E~m}N^|&zpQ|OzP zryQDg&D?U%y+`5G4P)Pby`C9W@!@-OmpRS6qAp&z(!J*mQ$-O>x1FRc>zc87R@Jx(k)b)~yBsLDa?gaM z`$I0eXJ^lSviFZzU6rs6SDou-lv!3LbCmP3+v1DFwCCT}FR4M^4nA;fyl1_)uYL(U zl%P*&Qqb*>Hy?B-3cJj89=q}Dox_6@7bWEwo}S$^V_Emff0QecZQrwkbN5@P%;ly9 zyd1l}KzuGXK3jPu&~iq=4(y4mZr_px#g-18+VSSal*dxjXn+>hrM^ z_vfbGHSK*F(D7>h8)FmP#spPwmhXGuR7}QPUAHoq$L{dS@mo|TCG<&o z<59z+cCU{W%ho9>T(bXoa8myk3y1bx)%NQBr%%5amKld%9sfD1WsPQ==U%H-y|peS zwD;&k%`#3eE|ZbhyIjutHCu{)yWTbJ;PI2aLkDjEbN$Vk(}UV-IuASDzgv7;uY~qP zhI^S$2TxnFx@?|j#KarP;*f(?Uhhusblo)g%-Xt}3pbx%yYc*f&rjKXTXq^XnLL<( z%C7zR@UM5ej1A0rG<@aiPU^qz6;B^^G=J!}sABQ$OP2ibP?-F%)Uh>VD;*vjH~Q-7 zxiKA|Iv9@+3awkWjk?d`I;ECIXYT9PNZU{`IJZ2sn7M1qelzDDodbiknrD_Ft^GMRp z@^z0dnKWUx@6$VeF)3G8JfA=PR8Fsb{}kUEzufd|MBwWQ>qpMs7=G{fa(?4huANp- zS2(WfD8rRqo4bcTPuM=cd7NhR>}z#1>`YVJzUvs>KBG^1U?+z@6$egF>fI~mx9U3+ zR%EA4oY3F*>3hlyV{Zp|Ir>F;E(M*C;})3sl5@8GxwwPF)a74I7y zcX?&YnN@ZNzpQeybB9&geeYBql5F~Q&8CV^F0^U>p!(L_<(qHZXm@2y!;PEz>`Xcz zclGMI$GxJ`YHjfNv%&6zts1`nO}MZvZIpAwWuHq8r#9)jqTR5Gi$6yBRVq5~y)mTz z^oHsw7yOFuUZ^u>&!UfQhxT&5(J*IFRPdl5jawvacz5i`$m~yt&JDh?cv4Zn^fsXz zJ!;=Ang3D0ueiSSt1O>3Cmx(07I?m)S7y1TMUA^wQ>MS|@yC@!^3LYGjKNZ(G;sSu?uC@+Au$HBp1i zPn-O9=ZpV{;!hvd*`F}Yt-LVOb4=i+e!`_WXMSDt&bLlRiCZNb7Q8AmZ{vMayWfNB z^iMQSe9_FXVRM~}pUbt}5M3qPyu@KgmC^G?AMO2cU!d<2yWiF<@9^N5;YnR%(T!T&zkOaZzl~2y+l!t9rf=@|$CYWy-!u9yNSa>eP22MI_D5EY zUezVevq_Z{->10CZT@UGYl>p2+3r+c->l}P68g7DSm9kGdy21pQiSVp`z&os#h3Mg zN4AA78k^$xu>CK8hOTVAVbH2F!>510(Y4z1#O=vz4lX&EnY;0~-{W`IHEf*zd`=HR zH~Pe=Vpl!?E_th$*P?^Z=hQ8my<<&#V~1Mj!v-u|eD2<-={JTyiWpn7c+0Nmf2o}K zsKV@Fqartt-|_r$!tmRZjz0Od=GmR&`@ODbzqR$we@Z@FQaVN9@b{=*)&I_1?%woa zbeyKBW&Y4ZukMWY-f=GEquX=QrNqf;e|q+vW}E--q&A1k7A?6vrAFJd9&Xle0E*%=GcYgxqm{pJu+vyJYH6*gqkElgoVX8`U1!Pgys$+~@4h zbtjZ*u9(zh{)(bzF&8eT-3G_AU9GZt`<@N!9pKdI zZ{MUGyLoeNpIsh2X>o*W*DD?kVtd6O>NS0Si|5Z%gU5|93~GDy(C|OJ9-lgU;EctCOk*0x{bQ+;TkE#>^Y>r!lihyP)jp z_ve&9`f0_fO5PuRmyY|#;nDFHy=onq_V#F{UCC#TJ#==x-1b7_)T*8Q*8O&R%c?`G zvxc^9lhfU~`-9-%)X+wUH12L;9sRDyozI?8YhT{gMc411uix%c(Y2uDsoMe*Qq%8; zd~N2ro3!ZFcX(vZPABh~TPts06BWPadB%V}i5;E{pY65czWeYp^|v0r*ggB7S`%y4 za%fv7Q~Nxkqq=G3s>!v8>)r)xg4{DI*BrGXZckoOuhW$Werw?z_2_Q+#LxcgK5m;) z@7=Pgb3Y4FWlzO;_1adYTyj-XEy~X0|6}PJfIE4fw?DD%Tzuih#>K|PHZQilv28nd zF)y~Qi)~vMCvU#L_rFzBy|ueF-Ste@>`c!yJuc1=5I`+jW5w4mOkt5Vs(ACDmNeMo z$grZV2A!w&;)ulxck8llW}gD{6Rvvjdg_QqMDAPubm6Jdqn|-{44!y|1NF*K$TQ^y z2nC!_qSX;%SRL04p2fF6+KJ@bCQR-tP$tee<`C;AVWU+@(hQ;ZLye$^)teD#LJiQj zOeZ}at^uJyHwqMqYjt7!4HM~IW>hm-Xm(17x2zG|p`Qvl%pY1n_Ci~1p9zHk?3i1C z!GgP7c{yHi`mQ27@wn*C!Rw+%TpM;sn&JPy=Qw;aEdjvv1Yuiw$lI|`lubVWj@Tz(-;H=DkA zNVj$W_c9VOWq9ZFD2@2zYwR(7XFO9XZ>ig(^fOt);Un~B32*s=oqk*2EbYWg)BTfK z-A;Wf;QJYIddNz${`{%BosOAM$V-nb{E2t>Rx3*|XRlY-zEw(=j!X+46<}4hXm-`4 zUVBk(yLEY>n5yYSfg$C87;#s)y?B1eCF60B`*qnrDkV($sM%Jn2PMI7?P_Ska^deSs?n(%4D{>g+W zwMy9%kggC~oJ-;kKrZ8E-DxfTMech<=TYzdNF{OMIn?AdPJ4vBSv6Bd@{u#mrOvS3 znf+BqDCB2a<``6Z1&12mQK*Eq2a-9i2ll~}Pac#V15-)gw>`wW~ zx6P}8ug#gzHBw&uaBAAA$^DuK7)LKs9u0#_JDr*@aWxS$_LeFOV*f zmx#C({sxx)6I}iVg_{2Bd(elU91DbTzHcg#Ug4Cc!|rxY2_YV2KI zlh@9by4tWh2Yovltp%Fa>Xh~#rV@3st4P#6lNK-siC(;nzUk(#Gk?Y}>B>Q569a2V zso&A%x(T3T^!Ej^xtJE6I7P|iDtZmVxNc$AiQ-L1UF`eAG1@))ps>%h8+Yy2fkA_R zbKB9YxD|snz048iZIhdSqI;~-tUw@C5D3ph7V6z(!5ghGpdVdtDkV;{=X43372*B4 zA&A_WPGt!k@s%d@!U~I`KObj50{!oFWQ16_#gW1vYEopvQ*7G_=w}1}m%n2El1p*d z;I(qw2oaPzdtp$y9C~C-~1Wk+>f2SNefGG}q1mMHX~Q zSLGg!iX|+lpI|S}I8lHo5=~{wz!j~L2@1nl6V@4QIZ_kWNwuE1t4^V{Bw^D;d6NXDN@p3fV>AJ3(^VTb`GM*g@CHxnejuh=(|JZ+NrLW%06*DRZ!Okh;Qk zb?5pPO(*&pe~5Y3Av^yy%%AF?LwGA3rS#!a8uT=r7srPO4Nznt<~# zJo7@E@P${qr(lp?&&SYaH$_Qo91P?gz@rq-PyzFoj z(A12^F!&U1;7s*AhGFgS5n$E!wuc&%E~GseK=#95$Hda~^6)eU$+?~rYZ4ePGp39T zYPdu|)iG=FJ^x+89lOY=FNOt7KO2O250ne`!#b<_r-2>ig4cEH z{>J?5KKMw-AZG-)HBx;R$Ni1?#@MamG&&vqppVK`tI`8A=aYQl%@@%4RECb$%Q6p)_@ zE&~;nnTamr_l1@d%E*h|^gCmWN@Zjc>+}#_bMd~3!OsiD$^$3_r`R%fu}+4El9c)e zYND@WhC?fmF1hc9Elc7GTW8tu z0Yazj#KWk5R-u1PqJLa8A;PNXtH|M_Q#;l8?xj&>ah+TrI*`Ruk-06c+&G-{a~NlO zP(w;mor2t8;-lb(c-quWa|ubqK^+BF#}{5LXOv^i-(IHQ_r(*mhF*GY05IohvrGu; zyFSvR{Vu5fj=xwLKv7PI<+HroB$^P>dTJL=hjowJOi{0r6u6xtsiYVS-*uC$fA{S$ zp8&luA}MI!iH}GeE5ZL$;)=5y0Z%$HL5gBGo!(WU{uRF{tQ1Oj_nnq+p{V#zCmFb$ z)F14GGJe;|AjoAwb{ydV3pZAlKb2KEW2Be#G46ItL@POjBw`}wT$JzkN`f$^=X8&; z4;-x=(_em_{YBHOSk(RAn|aw9DS>I)dUk@QN3f`Ci{Q0TlppZLe9J zc&nf34+b2jgPHAOfWVC?tb^v0r8JzO0d&+lF0JP{+1?uzzZyom46HD%o*fM^i@Q!( zH4*|Q?6$R5i<_B%e-u@q#O_)V%kh9A-x49#tyz6zBk($8gvOCW>%M({$YogUVqt|! z1E_DJ^HGeP!Jp=@DAg2Y>KjjFJ+aL4MW>ySB^u-3wuQX{F{R_rb&dSL;^_>e;IVD% z*;nhl^xg3dmt7R~@D1l}6h-m#=P8mR#5G()p-8)qGAkZTC%tv4clxo^P#`7=46m6; zCZekep|iMp_VEIekJno5mXr0%w_`#Gje?JI#Mg}sk8-55Up%Mzkj%iw1n&zRYV@*x z_M`@0Sdb$CkGHdg(Lccem)62Mx<}&73v+S=F6@HjD|?%kEI0uoqG<V%ozvUpf&6K1HaSFwXKS^|yD&CRGIZt6bgv#}iH_+#cHqrgL(d zyCo2=*(U4(gXcOiXV>Sc(5MThbQ{HNXrmps(lF2&#G!Xz^klVZ;hNp9gfvl{5d8ms zcV6}eA_C(mgp}-|eT94M30t%lWx~nKvmtmI?15U8cgWhYIP;PU3 z6P{^BOda_?-p%fBNh zEZp5od&fgvqS0*foSi#$XZw3QB7)Y2GQ^J;bGqE?7k-*prCBMDaOTNSOcyzkQodKa zfa_$`ZAnhIK89A|WCzZ%4r03LfqchQ6pCH*;~Kk@{q%p1p7=DqMd8!lCY9Kt+XBFl z&x6lnr*)vJmivn{1x2=VxXXiZQYx9=gwx`hDq_B*lmy2`REr~_t2D=} zG)#Lq>P7uT4zed>=KTQ%j_7daZ(2ZigI_we^G43|-kiH-a9nFpmVde$2rbJm& zs#IMphQ?mrQ5WdD2y>zjw!CQ(hluzayCZ-(!L*BhZ8j&9!jUTIk0tpN8N4}QUnwy{ zNTeI_US~&H`aRTxgD~%2V3y~(>y+7=ROk}Qb3_N>OiQzj<@X!@v)zBX*e-mD3$ukF zwkxybVw_h3HsWQ2j_}O5@Bts&E=DK{ZMeDb&MoY{Vsa*54IQH;VKUaC-;1otL}Qel zm9Krk$!tjdytW**L{2SaWwU@|Gg#p!v^fM(n6})nL{L9hohei?fe$`9`R(nxXwm2} z*HgZPKmHlqn~MT%Zx^`H$kwDi;|KxB1K8-}V)ou1zfV86XEdP?zX5T!zy0wz6j&d6 za(AC__OZT?a-gS7Vf18bAA6G~$1GmHF`n%7eJMV5-$}=o1dnpfKTN#8p!Ei9%+spw z1WI^_Hr$9e%{=&-yZHoJxXPPBgZjz0nCE%--*Fj!+gjq0;60rG^XAX#)3HbJU;91h zw7Qu8>-x~iZ9S%gUL8>W6F8~svWU*_C^i4JOWO4mD)W`NrTW05X$+nS}%Tg$VcIeceJ7HSEHS zp*Dd0uCr_LqxQsc`L7U6{-5Z$;I-k?*>l1DkD0dA=MXi^h~L1sdx5#*duALD*GsX< zeki19@`RQrnvYrb+(!g74mqzkl**Xj1-T*gb8AcUn1tP+Et{Y}@A&X&oe?L+lRf(S zYZ1C=7pqb{p$NSW4x(}GPKyS+JFVG8?<-eg#97hcDI5uOJ~U7YGzE8^EZ~9}&mDZ7 zbyBx-n?cZZ=2^hM79OQg^I9og(OkrGrsW?7&8`v)p6A zvvv5muC#z)cXJeAZui*PbdmXZuoiII*I68e(11rCy0ogb+Yt8C!A2HfYdzTh&VIl; zKD-)PN?g=`)!3oLGpHXwg&3$Y24o~d-ng)`2LZ<$a@Zcb5FJfv3`;R&S5_8Y$g?UK7@GRMxXevebwqrh!|ud_c@G8gsx6BW6w6J~aNfqjTueel z9oON0czZ(0ud0SZ{0Jzz7uaSAao{n~UtZ9CCm4)Tu-hpX#8)%tkQws*AF<<=CiOG{ zLX{Xqd3(u#@1LfDIwy+X2XJhr&gS|tkx{zF4+-?OIcBQ1`D^kcD#<}4cydGdqV<@W zj#u7a*;RB?Ca@g8zcWnw`bfVCDI6^B0W5d@ED(_HXv~~=i;P~!90fYeL%`$#6s^#Y z8o7hps1(X$Qt0~|=d`lfexi$;WU@YYW){94(l){?BX^Zho8p_P+`gMWUWPO~>QdOL zB+$C9H8)jv6XVb|X1^}&$j+le8nt(bD=}+iUiRsKu<*&%_WPoy?Z^O?>7i802 zSEHdgJUd-No=m)sc!oCa%aHq8S_U%-_`fRJ?-cYLqNN@N9+%6d5tyIbc%PJ-9OlFX zRLV;jBDtsn$yY@ z!X0X&!{ThCdoHwi$*ynoB_9YMTZtB^{IR`1zI>dTo^`^( z^PvO&JA5U~k)Or!_n~19A*&zEqbbhIIZ|%jh@L5*g)n*^Wag6$ouSq#t_@ekS>t_; z>f}PZVtRvEN?~y1?eKJ=h!Qdu-~k|B-9$KFg=qPcS0~F(Hc1tZ+l&Fx7P+Q_f`>oZ4tWphJBQ z{usgeW?y%(`c$Ctf<)u^hh+z9zn=c7oJXe;spG`5uw}=C#*RIjjCywKD^ih6p3{o9 zg?zj45GcF+!?4OlNHtE_NbI8PdcK>vlP?EfqRZ2r^F1ol7u@v<`gOsFAK$JMZW zmr3I$38pxhXlQ)Y0WgeSQmZDFXN_YV<&T#(IImjf$WmMWZhARF>_qX9G-L|+)6#6T zs#Qx^XTt&C%<$U6#cz08R|M_x{WDAQm8^T%t8B}PBQ$s%Xrr3Z9*o|o;~;ZF-a8q9 zOkXbLzC6>mELs*N5iUjIuj-SFg5s=9rLcNmkQO`%rK_w3X^95&ckjt>rfqH_$6l+F z)m=6z^nVxJw$;ShB%G5dw;{0HJDT)4WbR31>g}5Wyu%&xHb;LI_7KvC0&|tBUM_5m z4i&ZWLdcbu&S92=E^F-LF5j-GBth>YiFL2>!cI!CEm^6;T%PGA$OOriZ~;58ItxVY zJLm7>36M(^gcyj#@&*%g` zc?f32ki)fV1Boi5@8P?)VI2@E-P8LQ2_nhgBFaP%!#?CLMu!ANqZ)%DfK1{2scBx@qbI@`-5$n+eP6zP>X z$+!4fn>#1+bbpiN6DN6Y@6A;Zjjz9#`iu|C%sHW=7r{Hg`-Eq;TeGyORiM^EzoFY+V@K#|{i6h&Zy6xky% zV(({G?}%LL!4{)O_M5dlKZHOta|kK>;c?msf3ZVV(<=X9S>*2l$X=QOaefp}Ky3XC*vM$c~@x9uV}KVF<7U77h94xfjPF924r z>WG3z=%TEU^Z&!O@juw|Kg(y2GcJVOOM)7_&7ReZ@Pics0)j6x++WzL&?0g4%~-b3 z*7<(p;6;i(dGX#A@AB5!CL(UeD+)FEYYk?I4)7yn#x!0*XGd~0kJ%4y3t?D_TNXKzDIhi#5>v1qshxcwQNH@{szyf5 z_>=9@Qcp{l|5iK59kzTbd*KyB0ZY_TCs?J59fc8`R~ zXu?l~{CMNWc}K~GC_O2o`#GjqN#KV=;2WJO`|AXYIuU@(i1p}w5(o15rPl|D3etL-l zZrFQ_D4}&nGb)^3~S8*AAN2gZ*Nn# z0>B{7=Ew68kS_41(e*NR`F`zYGScDdpdQyQz)>*TBRtHw&VC?cI0T_7;#Ul zin};YMT-CJ7I=8BWll6b?`en|kcvlqQgVK5dbMVa-CB%Rd7Rq(*akLF?SOt9;H3?C zdFy&NcYK$4v*3N(SZ7VQ7I=R@%=JBU8}t1b67YSZUDfaX=*5X;1hDLXZJ*|Qh7uYO zl)aN&yOenPl$=Cjf1gj0E(KQ|R<;&casK(VC9L|lSJ~=H|NYtR{4^bTUyEw{i?;UT z#kQ^uzOJQJ97_E^Hh}+}=pB6wQsM?h&)4AD|0q{4HbVCCX=rnN;=%iIu^L$6W9T5_ zEa6M#V|csV)jPGnD!w{(aB)vq2-QwlmKq$Le>qvXsti`}-g?}>JiPRMPJOx$k37Wc zD~WL&e)P||h6r3Q7%1Z2h2a-q_VVi7eBb7@c@Gk(-{b}V06ygCQ1{9H!BV{Z6$xU3 z8=@2eKeMc*t?#CU8e-iW(|>z;oqArqHf~71{y>0B@J`;EN*T@K8{ctcyceNv=O3FZ zH1$3*w3aiNl1s)xPPpy~A`JhS-B~;}TdAlXpYE7_F5+r7%^1bF7#Oo}7(8gLW_v*| z7<@SWz5e{T5A6T(EyKr($pZCxyCEs3`3>oYDc zqTq_{IBNk8=PenRrD&(AX$EO{Q`K;WAxgP(c8iRQz+p8pX^`m9+k>*27`6ZV&m(

LWE~MUDGp&JedQ|AozhU$ve3aNtO^aJcU%qOlBHoSs=(J zB+K$vz4Is&a(e|wIDmRToF3#{i)|l>8BGAz)%)!XMz~~7d%(<-v8O@650a#Ae}&j5 zA+Pij9RXY+2oIJw%WA8BGFAwJsiV7gUB><#g+z#fnKus9jpATenu$4%Uk(n$ffJu@ zp_f(j9&cdx{#Omf4KymyDE=yq$d?sT9EHN3mBGPc}rWbVb=SNlY@DsYXZvVm-q%JO7rc9^wW1Dx||9 z*Wh?VKkvf$`2nOm=Z9bbKu)4hBy#}fiev<9^oud1TGL%I(6}>|k*%#!oLt z1fy~RqFbRTa$tk8p}Mw3*6#*ARElo^7;bBQcZJGa|H1i3cd^&QrJH=I>a<$?&%w_ z4qM|Sfr(M%wS#I#K#1Ei1#JL*KJe~!$#d^-6NTpa={J)AVGp8-$RfX#;L`PmicZi+ zEt`{bu)1q~4B{hvZ!t*LUeb@EiiPeK07OWVuF(-=PsDf z_tu>!{*ZoVeT*U{kMJNV11R{UqD~SG_p@={v!2N>OsIbY2}_cPAb(zJd=aLOi}%~7 z&bvkQgYO2WA5Jg5!7$9HH9;}k2|+v|HS-prKlp zT=Uc2Ok#2$-t}WjP`T$E>8c?}=gC!Jvx;446)XbyFCF-!lb9{MLT2qN6>y}bTk#X9 zk+YByv&KPKRU=Moh0e=(WNhE~dc@h@{+e2}@h4=1_1?e|-6`e;D%@gU%%q+*9E?5vY0O0Dd1wvz-kUEOi~D>uB$Hhk*XxD2b^5(*5O85X=w^`zV_E zOP=M*@O+x~d{O28%PZEUJN!QRb2qvq8MR@#z6?G&@^ldBXVHpG+9P4oyvIgF$z~skZfCOO4 zMQq0js$bYRxWQL&3yhcz;eCD7a_TmkuvXNiVQw3@nQXmFE@@9TfRTfAc5%vn!^^3J z^!&5rK$R5`tA+_a$B#Z~aNj8W{jo5cNb*N@yc>PGnL1l)c z4?MAlLr2it`3ewEc61hDjr{|;ABuWgcio=E4++g9Fh9~&m- z&?AaY7y(}uFZ3?><8Ir#TrGk)N}(o#t!-|y2K=l)EM2lUL-8^a{-%Lym>3u+d3AU* zLMg){`buLTJ};#zed3o$89mKAe&_1bF&MIJo7_to`0QJbpe^!)Y?r+IFcN10#!ePh zBGvTUt%6F;tblceE*8-O44$ojkj{_nGydQH_$FbqXzAXXtWhssVjT+tZyBP?rLd15p}I)BfLeV2+Z?jibla%3!nwtxd? zLyZ*3r78A2*3c`e76?j+$_<7tDLmt+qDAx9jy$Wu_*r~++gcSGq_$Qq*g-f!_W{bc zg@1hq@9>!@uY-pH-vj`qL{0yobB?w$)n5VlkkZK(-8lLM-AzkPwC44mOYS;dcjnht zT-M+O3jUXjgrJp(0jGYLYl`K_GI3&L*vhn$iUl-w>jz z>8aJ{wg3)U(%f1Y-np76CVrLOLN&!AHG`t=O$r#%T(8YsH!Ogj0yP(5RJ`%8O5?43 z3MG*O-^swenpY7&)YTRLzccu6k?W5H*;9~)C+K)|1VuVQ+g<}G)TEz8E(QOwyS+~x z5tMxwnP+P+&+Ajk%e!-dsw^b%9JJ>mKgN~B39ea)uduybv1Ijn8K`cmfF7zT$eQmJ zHB<~+_SJFZ6+jAkY~3s0Kk7D1^gQsG#mA5J7y2}=zAYMzn$#a>UDXP`dMPA`(=KvH zHgCE@x&~7F&Av85Xy#kbyr=?nU>Va_uQJ6$!6g-*u>5Ti1#zN^%LnJS9zP2roU$9G-%sEMq4Pn5g+=nCr+e`BYvt>zN1dadWfLwtr zsAlOzvX-rEAN9lac_<}Ez^O~&`wrxu^#puGz2JRiC(mTm5-Z=`7XS0*T`a54>C6Y6 zeYqaJ6L4Iamv-LUid2F$gpJ@`U*z@Cwftdy_~G~BYVe+%;O57Zf+3E|K$OE&snt$eW6#`QG%^Lo^2qL zU8M+&6f$BF>qr^-xv3s#Bsi%3#XBXMzh$LG63H^w`RH1NSBYOMA5SBM$|8i=xb_(tBt0rFnc^eFE3deMiK+>e2 z-{)xOjQC7sl8|o>a=1`}6QCU)jSNZ(uqQCmH^~S47<_yF{(@8T!Tk}hjglbfPK$J; zFOBr79@vvlZ6nNj!1unq=5Odj`@#2|dmy3L^Jr(>7I~iXqQeAUPLjidVbZJ*m;q@0 z|FS*;`bw9K9*JXSEzvV(*Ah?RV5XhY_%?PoWmO>;e%rL{wY~Q}12O}DPm=*~0w=8I z)v{#qY*#S**bg^OKaI`0*r7SE8IB0LRLD;0yeJK#i>|AC2#muNWTOp#n&*tDEp^o8>>6K~FOQZ&H6Iy-H8Fe0L__ z(VEA&-)08;d(1M+41)ckuvc4u_Hl{-YuDt}C$<@^@`g_O*ioLjTYu|W?Kz*AZmfIt(j4AWhbz|fv0{}&GSCj&yiWc}lZaqfq@~Bba=H zS`D+;acn$EEN*Ul#|WX;;ipK4bPz%UXIu~ThK^SqDd4c)<^JyX7LYYu972Rc?I42f zhPXiCnn$YZMQPUgZ}0BF!bxVe-bLbO<`^+-9G!=EO82)IchZw5xH(eZ@>!E&k`AeR zRhQzI$3wUG&y=-mSFs<7c|pC_V%yc0V0awKmj1DWal#GAhewwa_Op^maBQ2T-FAQ_ zNq%DG>aS$t+G0P;E9AYY*|@(cM3@eTAtE$x%#R=B<}N4Slxt0JU^aUMNkIdBpQ(2_ zY>q}MAv0x~UxoC>WWko2lqE|Kpmwk-u!RQ^7jl?%azMYdz(yF`Og6}uf`#kw(_k`i z*`8GV1rCH^gN*BpbPVbmdU2Ps$lrl7+y~hJLUdA+8LA9eu#mJ08ciob5UsFa$>Z00 z3UQfM#^B`!M-lLrK;cX9e$i@$wdg1dw|QJ42)Mv%bXw|``{7KHnzkkMDYWnqrN7+S z>3qB_+6;8Hr!(@62Rrt;h_IP$Tow9B934uz7i2?9G9uL+6^1C%OL^#%zrg_pIicP+ zU6rLZv11q+X)~5z@RX7@-AOh%U}^CaoKi7Zx&3eqj+)`Gt~hOxVHId`XK9i6?2Yqt z6pg*!cDI;x9Gs#7YCd(I?Osr8+{Sf0!?(J3=qDVLL*h?a2X6R?Xg^XrzvN2cCbqPSPv#>}< z4leo*Skn7`t;YT$LV81r)7A%JFzcMd5Cn8aQhZ%nwXa2Hf+YL{#wsXL`U0lr(Djat zED7%|2Q4)Qd9!KoY}sOP!67TMmi7$`29<=k%vsfT#+>HeFv8|!CK}fU>o>&c!+(=Wn)fU}H+cy+anao#kxQ@8v zVe8kDbq{J;u)vpn7IoyW$sWxSVQste+@>@y8&Nh3fSmlQnU(JhuRER(vtMQj+-3n*{^S57!a%s_^KUVz zu$An~7IzRv%N2z$w~M-jjmcrTiw~6*iWT(#R3q5=CO3cSRB0VjCt4P03lnkZ3`<{2 z^QVFr`5gtqp8fjC7<5|$R=I>6{1Oun?RVzu^USgLxa_R@Mh#m9utc&A_r0_wS7ORR z$H_y#4hS7BTt^@0AEvPG}1Jd0bglK9`4bY*smJ#g{XtFPh)PPidp$ zyn~^>#nN6rQ1(>eFlaGs3jvNt8s9j*CH@p?n7iWLX526PN3s@sTYx?zLp(ENzC8R# zqXgkRVr@v+ZO8$e;NWrlrhVIepwz(^y=GaSM(=ip1Y$rkj`H53z1*$Ky0@q~p@Ni3 zDb@gze(}Y(Tb7TXeE28l)}52QNnzUdqmCYSu%m9(w-U(`dQWg9E$_|bmeOHH;&h?2 zoG1pNKS%SnJ%|A^sn7&$5nm!bpxa6dUPdf4Gahg9b)1zk{%N8}<9F_CAyk_$ve-j` z|2%2|gDC^12rk>4I90FX@`kOvucZPuQaFLLI^T1J#?}fj^H!ti($n_NG>=4s-!KD| zTmnbvFox2sEA!5MO<)P8Ft!q3fs*8Y5X{xRVG%T1CF^lT@-nq5fTd z)Ks@5M(cJy@V-Q@lG&B@OY6l*T|!VJ^)_oLR{;USxL>uax&D#vErBn3iM2Dt4B?a7 zAHdN6#gOxOT+@wMz~@3E#MjI>C;#$V_TxbWnsfh}QfM^x*JC$v6PYCv&w7^Q6-Sv* zt0;$weNgR%1cx>JUM+M%9lwP_OsDKNJc&VY&m(-q5ty7`3B*vmc6n1oGfg}v9IEos zXUGcp_+xOJf?KOx!%T+dOa40wDIHJYxKY+ynLL&~ZEuF?ju#uYq}5z`z5n2tO}B53 z84Nf1TdEECXCt%4v+`vWn;56CBeqpBX%FiNVc3ND#Lj==w>Heh%Z6CVcpL00bI3e=O!ffEb$MuwTSYUhoZVCBV7 z6i3_qTz0mnr2evj?x@&Ff2u5vIrPt2g!~Y#$yd>7u}}NoZaN=7quoa_8h0~cUGXvt zejP);2;?P=Fc8qpBGEk1X*XbbXM;;i$s?5N?;a@6;L4El+SQ~i|Hzap7`}ueD?5}j6w0HGBC+$Pc5*+IPsQHm@mJe-M6^;@%RxC*-ppj zpHe_7Qk6zNJ7UwD_!g~GW{0*6IA?poNx>_Jw{(kJ2ba` zq@zETa_|JclzU*9XrlhEZ;;b~K-)xVSkc+efYjVg1Z($~4s#9P)H}xryn~WkgSCLP zh#u--x8|h{xPO5(kmaQ_A#$X&jWqSO#ua{-%50wjkvq zAYZa5K&tZ){$e9;Q?4cf_a{V|DTqag0Hk1qkDyVxHZ&+pgH+%Isp7-pSl@lQY|v$H zSB_>JCAL*0QekNfIVasCrbH%i*_qO3UMVX^ zN-jAfAhiP`TYcQ#v2NX4M6<(3t*{Vtm-%_N2S$8`jtiHhL}b2GQ5?pOb$v=^1MMXv z9bM%XoC=zQRB25$NbMdb!oBk+G9N-W3=h0_kvZ__3-A7hm#?bfmE;A-aY+-vZlun6 zN%K5FexTaM&LOL3BH{xqv5Q#bc(TY`EhZ1xEi`|Jl8rq$lbR4J9Pqzq&n8C9B`pYM zPPeN6_sa{+HK>?`!&bT+K+BStr656X~dvG7RxYyAw|)x2*Q67ER6fur=J0RQ6gqUQ#YhYYNNie*W$ElayX|-9HH5zCG`xrAh z+&`6g2`0FSKm+`RqIM%@0t5sF6RjiFi(Hgx!ZBYl9|Jvx_0KTlk-GS%r@AsQr_=M*1W%)F;&nS$ zEfQ{G+W$7cy~rT8pYgx2F?@LE7aiMDhtX5nrJdPlFIB8>D|_Kv za?ZlEdi<6dayXU2RTxbp_PGLfkKDHhKlSr?LhCGc*Lk90_kx+~V=tLPu{rMk<;5D} z<8I!?*bR6ec*t*|A=J~XJNEP=Lj7|$LbR8U#P(%-So@k8S+Ekq#4>qqD^6IzB;FM- zDe0|{54AzY@Cy%U^OG|I#}?8I5}{jQl7L8>P!CtVh`%vC`pOnx!s`)?22!};3!iAM zP0cf0tbtr_x~Z2UYy7Y_bzOXwe{$o`q41_~9kAL>htKzTCBDlD0mNa72^;^}oH zbUXklf76YhsTJ=%Gp!&N1j~=F8X9yp-|C8aABP~%lY@Bc6!T^+`@GUb7+y#> ztPPuB)QDaoOI`g~&r;a?R%rS8n!U<7YWbm0%hIi;NmHBZ#gW@-dtc8`P=jc-F#x?9 z9H=Gx_Ea;Fs1^rx&GS;07|A*{*P4mU$!d2|JWl~pUE@bv!YdJA_zE9 zy%&53-u#eD=Pesvu^kNv0&eX!U(uQ98=SKo7VMiyyK-|h3G|0gtfATP;eSc5&lev} zB7^&(j7YSGKgm+tF>Rt7m7W12n)z8fA(RnW&4nwQEQURfChVvd8CQW=eL2d#i(ph8 z`1~{j`XI84iFAC;k}^i_f+4lxZ;Y0xsN#uSMh;!0$J>k^xEHsJ6F_R;(7O@^R# zb}5!cuIX>WeT6MOw_(7RHZ!9VxvAiTYnC%_OX%3C`8?MLZC(ZB9HfJ0G?J_ryQL(n z1QrSfHmfOTB($t=?~m@{ptQL+6WJwvhd=3$;uA8K^>4IhLqFQSBqa{}O~Bf$Fj-#x z9iN)}6)+Lxtn@IJIyC$LczesRIF@#86nFRF5L|);cMZYaJwPD1J2Xy!;1(oUaCdit z2ZrFT!QCCskgRv_wfFa(>-;-c@$_ByBUMw?-80oib+^*>?iruXX$NAVEcj)DoWQ6{ zrZmZqU@zc;84p{z>V_eK8S?{y4NjzSGx}NX(XkD0GdfG7iB?>ElgEg{)??eb{`mVz zZxvYz7}1rifJj;haWZvFd$(xNc0s?d>z#{}^RYqkXHE67vfGGrv0hkaenNGZ_oJ?7 zrmy{6?uw^d^}@eVuBY=h-q-Z{do9m=N9{y@+HV2|8m8B=He8;N!&{ztFEmn0l1;1p zM02){+7E3w*23O?H$XJy`LUnf__!d`YQGYNH`|{hZ6jK!i-YDw1|Hi^9Z8#g%wv_2 zkC5QH+LyL?W}zsMTw<}9Yhy{e_F=d$ClH`AMYk0kepF%kTsasVwK8m~>L3WuO^OiV_Z3C!tixd);5j z3m2j2RpAxdteR&fA4ZK=t3gIa{_SZQ@4*OLpW9Eiij=7mEoR)@TQpV4m<^@(kz03< zMv8k!nG2w%!=v^Nb?nh?B{I;t7h9gmV@?p`{wL#eWux4Dr{mJBHm{TS`^*eAi%+l-Q>_?@neH2MhJ$QF&tSD%B}{M>-CgDxhs{ht*($P z&M47+jxn0Y_f%?hg)ytH6ka^K9mZNLc~wg$HsZ-emRpB4+kUC=v~K1-hrED*!p(Y% ziKc5Blte-(B-z-$$ag};cO{RF&ifCoh(4lu>aJ-uGS}xC4IUkJ96%v4^v=W8blarq zM&Ut)?Ob!b#PYD}4>NqzJq~~gCp1*4Or%cxk?Wk>q#S45c(QhWA zN0G?v`LG3ue_m<(`830(J~MQgB0xpAl&^rSRCIWQ4dm=A5@iC6LwC;>HSfNc5t=P< zrXEgO)aia-GKf@&Fz8vJw7k*z0%G-y7!R{h7Gu*%P%({&3!lrW{ZL0&HOnl+tU#29 z*AS@^G4rknRq#Vmq{a8iKCry2SGF{Hkve6-(xgGza-){1&OtY6-kn*NIk8)1*h1Tq zS0_p5qRWVVhff} zC6ik=V6iHh)UX3ft-7TwQSPKhy}G5x z&S`ANqlLh}&joTfi+=;PaZ zoYHDm*H|wom59vK4W`!9Dy|MCqo4S-knsCHVRCu6oLb^9m&ogeX$6o=`>DM*u#rjJy!X&IKK#^X2v5P@ zUWFt^+~z)>R;ghwaUm z&ep~4L*flO_Xjm)t~v?P+?1RA2JLfoZ41@_0|j-4tEvtWu~pL zuQT1zZ`5ixU@}1OP=%(7c~*(qg&aDBqaX5)SH{j=P6k8Q$${!`JOi2goKrl(3pFVUoXGFTgM4tNHS2tw&x$zrR(0Dmy}>0}w(#vo5SEW#s?SV02sKwY z`Aj*xoY-)?l>+0)N5VcrUxhC{fv!8+Cy}S}WB5$ZWXyrg`Dn~lr(=Ru)l4?1ZShN2 zl#`+=Lg-umb~GXGtiam|Z)oo|P|ee=?@3WV!3DbZvmel?OB#5oef~>$(ir8g-}UFE zdixI99t-@V__ujKV0Itwv1dQC6j;v&P=E~Y@dCg?IC}8%(j~)CQ1}se?IV0MNr-;e ze}0L+Vy>}S^6+}kJL)X@W(xS+Yxsl-%zS^?IB&=(czFFJ1l;!1YCH`I3swE$869WQ zr{-UEPDKwuhCil(&yRQ$nEM_t_M71sr;3LSY}pR*hEaHvEK>{A(6zn2uzG%ObHXc3 z` zAe32vEOaTm5uo_E*tiPbeXH@A(a1tGCCEZk&kkL*9c1X<<>u(#XQ0#0?emk)f~OAx zCq;(D=-zwi{m_{p5Llj}GaoF#T3{GJ6S|dkJt=B8gU{SEaXpdm&<<35bZ|Wxe69g! zbigLz5j3Go__?lvy9`L7sRr;KF&u`-e4vH)K5IcaVeWVeRJ>#blW3Ha!HT!w`UIi9 zi#vEb3w)X2Z+>%wGf%wWOek+BZO2c@_QPX3u!ak)Q3Pv%j!{UV%lnj7RUics+^m$< ziF*l}o8Ou*ngpZZ#CX<6Dsp=K@S|4gzUX1jQs>) zKD|MIT6+>)BRguqdRp^k0%sJl!5SWLh8vu@jtBx80mYlp6~h-bD_EWR;`nBb?CLoP zxbb-n*06vzPr_?tzGQM>M`19#u6eOhY?28p=w0$`l66$=hdylBJ)8?P04CewPp4iT zduGf2!0ZfmRfgizDUla2B;4*9bN#+qwOC(YbxhK?Xh$ z$ZqsHNN>`g;f0P1+_H{uyOJ}Gji0P*;#qLwLEx{CXLIQ*bsPC)ZRuT?`r%FOPu)rTCAZMPt#141B`!b?%v^)_qiA7#vLDA<|s&S_3bm%iv7=rPlEV2YUtY^o&?B16=yB(z9df1VSuqu#ihG1 z=gQWTsu0)Bc!vZlkZKpNcsno9F;7P1-IKX}>w?n04Q}mlQ`a^bAKL8?ug3Oq{#9A< zT~b1qZs+8{Q`_drgUoRZ=-kOit5@n7VFmQKy<*zQP3+{8cP;#kLG~#AB+PQ1nUVaI z?Q7O8d|(&?>qWfE6XCsqQ^4%iGi~&)l$AK|AT5x z$=uWd_}`%|srn=3A2nYnu_YR3XsY-~_Lh=UAullb!V6MWM~b!tgpL2nsW}xlP3l>` z;Y?25e>nRmCp+@rY2W+JWb2=_XlcvYkg7XUwx!{e8J+$oSGM)<1}J3J2B7jChso}yP$3H;X8ecZyNP#9X)OBcZvZ? z3eny!{&q?LsSBBV9F30}rwVfe%NvXN-!^KUzU7}kH1OsVwN1QBbsHaC9*iNTkHIR6 zF+$XWO7f#Nme#^b3i=lyB?aUe(QExT0A^j)M%tB3T6j#zNwC8KFZ7cZVNyt*@xK6d zIK-@{+IX(gT8oQ`DCvb7z0!h9^8YVLY3Qv${!i_ADz9y*v{3K@dyUxs4aN>y#CV~- zV5n?~T5>rk2hZ-1wCvC7_aE`O&Q$$J_kU46*0l%&@?7KKR(c*DDY8>ZA>~RidU(XaKl9;3fe7YQrn7Et{}?vHuhvJo%mo@&9Op z(SNn!pQaFl`}v>l{tx``UdQ@ZuXi26xpG&w_%ERz*c!P(11&_eOP&8y_rFz(E%%R_ z3m_okXh}WQt=UcUzxo;L&(7#%uS8*j9{w+|lQqEqPj4{izMFqvNx%db(e>fq(6e62 z!-N*m1N?*Ql`u?@vYlA}hVHmZDkenP{{|c;SlKR>%KwJH$IJgXe8wv|m{4VV{s6Ko zcU4Q+lKg?~2RH1NwArN}M>PLSMfPvq(XnABXq&}I{=w~^Ym#?=?+SbW_f9aGm+uOW zKUXNhsq&Vl(u6QGc_ke>msU=&u*=Kh}SF z!~OMEE=PTd4z>EONAwbnHuJ8DYZc5%$|D_ZI_n^3;Pi+#=l!gp!H!%*e>gy7Z zu{uxp;$R=yu^II*_n^Pl;X1@WR+}U%?3eJ>d8Qc}us66|?Q;1>uC@6fs~WvDdz)^s zHaNAqp5y% zJ^<`l=4jJZ2Mc!8-TcFu8|#Pua(kOZupP`-{}coc?5a~Qw|U_KRxNr9FC2EpwW)sX zPvD`WP0ydeh0Xa8D}d<5bGQz5hU>*M+3F8pn}73{_tfdX*w?_Ge@f~BJGwTxu7WvH z`8UVI&Od?toAdsE0$qpdp#KCOCRo9jlQe=I>1WXN`0c@ts(-n^Rl#2lJ);0F2mnXI zzm&9&&42R)O{hvYbGCQC-F*qa;{MKMA6At`t_{3&?69LdgW;g4JEM4BHCSCmiyFMC zlR;X@s60em$go_%#$z|80B@$mXb$AMN2w0v?iN$fj+o)ElLEbli@b(=aXsyWN%gWD z%EypFECL-T4@Y-D?9H2j#&#fjWN}kbGpmv4#K<33qks)>qvr)V(9I%woR@MQtgee4HskWmSS0stnjbv zBJStQ7%zhF=X-q)*OAKlUSD8kCnK~;OvwiAk*mRH^A#2cRxTj}3vHE4CG}p$kob7^ z#*muKtKCsd2Ls(vr67{qzvcV7HD;Et5#6l+`J3iGc`32o)xogECAi(*u%)p=UoTtz zDoBXtf-O6`=_5a`^@Wh|{IUGM5%ACqUV(Ee;ZuE+ znyP%t$28f0k-rw#)jyX1MSvH-KPJHo^nWV(AJzXQ{~y)o&%J!G%Q0c+zm@!t>i?4e zd-a^af2vRU`0~jn#h=Iiw(i^RfHTiuspN2TnOm&{* z1v!#e8z0ixN2qz2pY!FM5EX_yiqKPK?G2vfQ?{_ulK@q8u}mS4dN$4oG?{}1@y>Eb^l47tA} z428e2{CA*%^)k?S`a40cepvmT9OY4-^kV@XgHQ6eInmsqgaG7Oulp+^p+(PymV0rz zQA9Q>3Kh!w#u)Y6G&E6uWO>n#$Mv}LIo6^cMiP8PiIJyO#rA4huSGYPjPbK*MWr}o z8Bylsoi)v*4g5POOWZQid9Ys{bzIoE2*IfU%gRBFW2$JBF%e_$^%(-sP?zVsUKSjqL=Z(&aif(5?%RV&PkSiv6yuip(iF46Dp$$q#R_5Eyo0IgTl+ zA!2jPr_rGAPs6!~U}IQYElRM7Nrc3O1b8e>t287%qrMv`{Ivi*?{uU!+4Ba1zs>lo z$6Ltnb`nkKrMDR|wmn~}uOgY5QNBC|zLHEpt~`odZiSr|Hoi>x>BhN&$c52_V1?`Y zP8x1QF&C+G)Q-TjN@fejt-x;9IVq|gGq0>=OFAet5!Ytrr)q`UmqoGSD7O!Blv#kW zCdTV`DCPSRA;``>{zalEP>DS&_O+k26MNjY@j-=&@{dKVYnYX)=*ylmr4jB;rncoL zl7a2F=(;4eEHv{nt$ty~zdtPYlYWYGkg?9!C_ZNRrm=G$7*am@|pq@b|K zw0yBn2KouZy2|RBvtL{DzQ7lFPYG@SCbdFjX_0iyCkFih;hnz?mve>E(n@^crn+%U z68C7Wv3r-%YK2BqV8}VLp7+@VwrfdJCw-U!$SE~O9U@AQ-nL}yEuLAjU&Bh)rb#+U zA&P#jW+#8nv5=q&0dy;E-(elzg!}@gNh-{f@r`|!s~Q0_l>Gy~MfA1q;jsWf$3n0T zB7-=AN61Y*{^vx&csVEjxjSEX*KvV|@S#kgx4pB{p6r}Sw>O7+e(jy+`yuJA-3A8? z7zwTMT!uHYj@#I&(UG;PBK6H`2}@y?=Hf7^@`WI>$0DLAki{1a zoqO0^fnT4~`yNlAoAoHd7(x@qgR(#Wpm2&Z;T}0WJ!3PnZ7|W_e@>9s?J71l zuQTQ1T+WS5b_O5?4dIpS@7(!y#O243Opt$vSygKQ7#r7u8^}Sz0fiy-{=#P%RU#5z zJJEt$S0%u`Z_@+8{jO_zhaVCBL-pIHPJBUVE`IkGGB2&YvG&KN=ikn}D97RtJKml9 zRa@w4Jw>cf^kaLM{W$f@Jz)-_?w`rWHX5IWygj8PGG_y2EiG8H>FpIsX%QB4+$OCP z35V5zd!a8ZgLryhun&8?16Sv7HCGvaaGKgVSO%~H)4`-TS9Ty}i-KG0nvSOuPNEzq3?*y}X zymY%r=A-0WZK=^C9V}Y1)XuNpver|8`e3XFOrtKZ8y7g}Ly?7igeXg5`Z{y49Gz?k z!FH;Y&}byH6+FPgXBn`s6rAi;JFV79&bm)J=YAOL`@IciY5W8$(jCh^+s0 zX)&{0O3Mm~;+Z1Ga)*;{;7BMcx#5VQZBU%x?T}}pY}|L!y+tnKxYO`h43eCO-*~p( zu=I^v-D#55UOU(m2qgg%v90zb(E@%{sDQZ~h8+R@bmYU1b{uD%1Ez-J(9*^E&CfWr z90?}tTpjXOAEFqF(ZjHB47VZTpYlv%b0V~htdEs*GceK%+3B#H029M5NOcD zi}=;*1|fV|`u6tgm1om(I>dsZenf8e;}01Mm*Q~(Dnn7fa2$@N*X#p(1o4TLl)Qk( zP?qUA3Wxb>Ze&G_9ZQG8o7*Tvy9;_3mEPbBFU_ie1iYU0&#t8(jnJ5l&O^g+yEhJ^ zAdg~aUX_NxU!mj}t-=Pr8w_#I>NEOWYaFSD$$hIb^W(amZjv}Ki2v-3PEmkp63X(A zUs9TyglZwNmEYB}wSy)_rbzA`mObx)lPfD*gYdph3ITz>#g=f6oeS5~#?adLLFyPm z@}qiqEs^zV)08A*0hH&bvPIIC5~afkP2y`YD)MVNzYx0ngmou^@L+WyWjDP}fPcbC$6AxL{yWdyh*Y{Q5Ltt#ZdZ1hB*WS-X?+^i znFtP?K=dWVc(sp?iS!{OVefS%O&+SSxTVedTJhlZDT?KHh*EOd<6&8@L1w==Bk!73 z;0i3_=B@L&hGGKWK9uGtTf+FKQE{cIY*z`RoKF|{9{yG{;Rq%=4dMa`0cJ!77nzSu z<8%;M{39VAT5+$>y(NMjbMOwF#S`Nw^mJ0Ocdp77p54i!`gua8(R1>laa3?lhoV=i z1yr|xzhM@0)YL^^vLDPtl~*xf9ph>zRG2}QYpze;6VR|cb}FN@&?=n8XHQrReR5Nu znpeN4xX?+_rP9oI{AH+?2!x#tQL-S=sPp>k%kSAVq2$Xz&B%$tFKxjhQoDWkduPS_ z*|sz%95x~~-48FA#^tmGeCY$7{7J0b%1K!T&kU7lwEVIW;YaTsLv-*pGO9tG6%M_Y z+VqoS3F9yaF=Tq*mRq?Z%<}J210&^-;3rfu&C$3}lS5BB0;@z(44~!07!mYJtt;yr zulhI0up$(gJPwaFmXve%xMU zF=n>#x#~B0t_EuerJ_`*D3s=O`yy^al9t8QZxX5-ISch+Mt*q974)zvg)^OFf!qt zGLY^VwNNFsen?ubvet#XvlAnvQAUHu?!2TDkm{OoGykzK4jf`SfbNa?p+KF=`GY*s zb;qxR$(|-dRR@7#oA%|cD=u4|%?xoKd@MQ*5*d$7#8*voh>)Y4%3ZH3)k9U7;gvxY_fP%Sk8U zOte3bzMZ<-RxD`^z7rKCQfp<0BWN#HW-dDIX0`SdCLIAdP%wU#AWapEHNI+Ow``~y z+~5uHem{(|zX~dM{+45MfeAk7bPqhZ_F7gi<}pjj8%!3Uwd~Fbu6? zunixJ{_tAIRXsm0xKS{IAIlkjX?sAkpyo^A`vxTSqD6&v@poJ)pZghS_E5w&BvJ5d zGt{QEsc0zyJ?d3S0(@&CFD|o$0uhNZ4zyf^4N6cL6T4ksJ#TCQs|<6BA6<7N2K|>~ zyYH%{4X%kWl9Ulc_-4e4ktM;FPQ+Nk?s@Vd=2hF!>Pj(Gw{Zxqg-MCVcv?h>CS^2aEfHGAwFjhxT?>ZQ%Xqi!jJQ1uB+5k`VXBG z1@%$Y&{{#`1)h+Yf*0dW!M^`7nI{^5N4=|PX+3c2a#58NBSe{xK4UkiXGkPtMX`=0 zb~9m4Bs0;!JwS>`FH4j>x-4FEu9q8M-cf%j1cR5YM(js*%_PwNwPjaoACPn6UfFwF zl~hFlTrd4n8cY~M;=$^3mt|IZY5 z0F`Dukl%>sIOt5RmmbAADIv|ZecZ8H9TbwLqMmehl74=g~jWo&K|Ir`w<4D z^i@X@k@8_oZ*fA>J-u}Hd2wdAoac(Fsrwx#PEqHDoi{R%c(MjOZQKxHC?~&&s-)&R zF{|U~y5{;Z@i{_FJD0D&JfDJpg;qj(7G*bS!fAf$ltWNsW zI2V!Xt-hh)5_lsYM<%nVW~!j+jsV~&;U7b;HiI60%k_FrOvT<}rftv^DKp~}pEmm( z!OK2;0I(AYg4i! z`=@oe(nX`JM-2|B49~Xe4i7lyI_|9Sn~Gt8TxMrz`xXb4(zTW=gZo{Q8HGlvr4ymw zsxlRVUw*&<{oN{c=#bPv>3lx`3*+<52DP`k;3red1%6;!oD|7vH;Zl3z3@3XlrAm! zHI0Prv6Do5K6+E2C!6~bcL5>Hi12u-hFNhQYVC9LLu(&xnAH!sc4zI*kOj=6q`936 z0gc#zK_vppg*kne{;q4_(UdgTwqDe?t7lU*gf0U**-qu=`pNq3ubZb0KyI>bBoQ&~ zb9R06^0FV2c`JIqS>hOl-3JNt$~+W_PCo1Y-zz?4q7sNX*lQGs=06S=lNIkyrV@AO zARzISLc)w%Aa(J-EoM*J2!srayI{StgE87za>CgLO`Cbdsm%`>b@4cVmccj(38`P% zzTLB}_-0rBl-9pD2;q*A0m$+6zoTec)27_)-g=s`5|zrs)Y*u+2`S#;ZGMoPW`94X z^;?f}d~wO*4H}WwW0cyel1lH0g4tk|-mvcSA`*konbKB5GdTe|-7BQ9*(~?1EE0v+ zH^CK|N^NN&w}Z*Z&;xYx-?e`t>1gcO^Sbo#a#8QY&=FV=moeL^rU9ivX6@YX7)Q~G z6QoJdjAO16i0kzYMoru@qLw#c>(97^e&vLll?>XTn2`k$B+0S3K6DHac4h?` z3zVWWR>L&~CA?=_S_YnG?2hYTuo7Id&3m|6>2hM+UGpbe4jJw2O@<^qnt$Y73H7$0x{|fjyM5a zgj*dW4R$L}=)zxFmHwGPIsQAvc$#dqio^uz@R$AkJK^Z`GP$CT{IUvSL|flZw;$6d zAArp+z#BliXS-+fkp05LtV1h`^E(gq%j4I?Fr{1(<*+64=Qi^SQ%Nc zNd*5sHT%1P7a5=`TbgeV>;x4(Y~$73@s$V(-4 z?gD;pq{+WAn=nTx+&s-&m#F66? zJBv`WH`&+76rT4=-4nguqH6h!KuYNSMIODmRd1uE+SP#C@p#$I=eyDgo{*Y95pzn(-;sdKh&FYv1GQ?zuqsy@`Wq?o0P*o~6wSof z;q3$oD*M)wp={+m?7g(gLM~lArLD8%472aqZgfgAj%aaslExCNQlz3J&ERTzIIbeS z_8h`1K543&dynZWCqT<&uM*`=nL6#H%BCKLGFS7#1$#ibR>TaM))v2U3un$M9U%ac zKS&!~m+KHUj+7N8AhNn1uq8RUOgvT+Ek&XlZNw()MaYl@y14!drJI*ZE#6^2Hmw0_ z;(b+-gjsUH&v0h)xe+C!HXQ73RCOxG#}kHozDI^OID7l!w>Y`o_Gfy6f}R^Conpbd zD$j_!!hpNa0Z3Wab5suMd+VF7H6RzDL!f2(k^H!!B`jm~`mq z0N#W;Q<5cUwq*w`*5}r>h4<@S2|7OMPakgkB#lbL$VMqxop=vUp+x4+lAz2P}JFWytMa zf6>is>`?YiGDLLv-d~N;(Ru$8#H{O?X)1%*=UrO?-p&Kshdtd}=7gJ-ob3jD!1{D?U3`V^Ri-Sf` zv)0QwB5%Y&gLY42VOd$pd}bkgBaql#J%hFcU0EVdi38L5m6$IaXsCmc5=K|o zsM2LnDPyP8!nI0MUAA(P6R^yeXD-T))?qo-eO2-lwEzm@_gB=Do_;}W zS$$L=pyzAYCOjiW?9|k>-)cee4%2a7Tu#f&zUzm2N4CMvJ5Eh0)DsxS@tY}JBn6F{ zNOd@acI&gG*u|I0+bBaQH2(wUAu&X9KHc8^SMN^VTC*BYlbA!l?SbpFvhFLL`0RW3 zO6Zhsue5pUy{|}J;^z@yavGlk6P3FD#!|h*aBCB_Jjyfj8D`@n-j^X_sSjH!6a+12 z(|*RB69eWN?P#C*up_O|2|e4Jbsp_IrLNxy;zs825cO0daqxxoYB)}K?z~UXEJC#K z;3FiFMu+U4R3R0^XK3MB6*mGu#yqZ3kuLD-m3G#^gFWLUYtTLcU@j_$K}1jF`wr-8 zhkr_Z`mlW$p|E4?gbSNUmQN(5&*7rfs0CT>Xjcq#!7+-4+W1z@LodBeNVk3d=uMQy zM6jN|s6^{7fjgjTxT2S7dy@Xmrq87x%ilx`WiO`Y)4=6dS(6bA@dx6%d_dgG|8-?i zPN7Mu!wqqv8uDW)fGUD;X{me~s+t)+#OF7;?WRe3x6zuh?n#Z`P_flzreeEZ%dRB! z9#ZjasBoT<4@L%!2_WeAjF{6{7f>%&boeTy(d(oy3sDosYnbCG+!jCdK62G-=ZE>~M>V%}U`Us1JGv)iD?PEV{f>9m zeP2M4$%0e{uFs8{2(ozu6hvq!#d*|ykJKrywS~femw}d_lvu=zF z1k5KdL=4v**r7oQd$~2uuWg!yYE#q?m>y{;3o;&oGlpTs&TKk;Ee+sTGt4Z3U{^+@rueH1s=UC#bQSyEc#!7oEWX>|Fn)E0TH zMk$t~ifYdjG{h_VzRqqF^j)z{uZpD$D*e)FxI$*?Qz#hq6--W8kF*Gl3{PRw|TBmH0^Wp+sbC(P;V57 zs;q>fj}EakQREacc~Dj~Wr9a%F;(;9CZN5e6Ggr7!*0Vq^x8gI@u2+9Z>{GC5h)sN zZhc|`2#Amlx)QO^GYj{uN<;SVJG>FfV8qP!s)5iHRGSf-Dw^BndEKDK7NH^E7f*+i z%s_aMLqw!MAaWt!|2l6ANiG)26C;8QUL_WS_fwtUH>|JTeC-tQLxJrO$fBGQdm99> z@%*S01y#dle5_`mR10DSHB!aS(#~n9pJ@5@zJv&s3A3h3 zU;|$-%wTk|na=hjZGT1J7Gq zWqp5P;4cjQh1tI_{}){TKyuL`l3p_95t2BdqEs}XXJGBdyWJN_B(n|z)eBFkSW!eO z`Q|NFnBF8_;>*Bpq{kSa>Sx|8b+mc7b@-l_Osy>I*%2PHBW;h~aB6&^!L9 z$oMc2tmCYsK-N09Sk|yVa(OXKeaY;rB;BUpHfL*l;*@Z7{4iWV)NNzRzs z2<#rAb`;1=#){#Xo(dG z!~tYsvn-IXm({q^{>rqv{;Wmv$@Pa2DD_*ec@)As(=D?a@et4HgAQBaPTx_p((Cn> zda=OV0EaGm93Dmyy76TxGUq6%c@p-y8rSDW?Z;b8Ly!)-fv%k#o(g18S403;a;oSZ z6zn(CeI{L|HHgRCC&&Av;A&J<2=v*-F&m&gqy23E@^a)c$q;61J5-1nX`@l_;L4$` zjO+$CA2EJquDk-lV5bY7#QCFzz?a)1+j1htl31^VD2H_kCdeV+fWdhab-)rX1KItUWW3wIGhsd}&4Q*iePKXZe9{ ztlP!xZZ%wpPJ~txN}rk#r*g>Rc$nRT;1L!4lx|PQ1NH=O!6C| z<&0dMq#+p05&aM1T0zQGyPVCC*IKQo-C0guI_T$FzHzVO*@}+V;;;!IygDcygAAj3 z=NDVp#_t|q5m7z{2CaHmn%kyCs`mnG-`_yVt#6M?L1WJ#PGHQ(3e!~6n(=A2j0kfYb?6v}a zrB(@>oII9U$WZ=>YxP{FWOF(M#t7|EEKK3*jgE;_hHju;u%Bi;u@1}zhXXON{JiFS zZ@7Pr9K%`%!OQI@4P$0IfBd=4cCIkTW=1d)qJl}jBnUG^Z!WlmCeEMl(*(+3g3h0CeOrPFp7b&o;_EcUlw93c=8{Zy$n=|n)J5Zz7fO@(UVDu|YFK2C5*q$c7k zvuDz{raS$2S0j%$bEQunK5eXk8)_%w zCgq)`8MZccCtK(D<$+HK8&yv}kB3{1{tdf$tS*u~`cR&5{OXQ7P~~mOvjS5blQk&x z7Ko{^{fMds2>EDFV$KX@xnEVQTp$$CQ?g%Ocwo#nQ4nEHB!9IUpd2C8^Ns2AU^170 zGvpF5P5+1rlCZH|e+P3gP$*?RReCBNbrs+PJ$_z2NAcYSNvkJ<@Us^NCtI{qDq?~S z)CJYhhc6l$nf~?S(F8&D9Ta>K*2%0p82MU#?}5hd%w)eSq-~)0!GB_mWpo!#^eQpL zL5)0D?rb%x8g2qvs|t#en67OsvY-+6K`Xci_K@<1-RRX<%}UM*8`VMnG@HfbV~Q$0 z(({=#U3+$mr{a$^*4($Q$R^H#)CNoCE5K}d=c-675Vj^<(;(aGC`yky|A|m49y?3LlBRPsNU6DGv^g+^0I5Q8rLiUZ z?ufs+ZNUbmU3p7Pf8f@>eCOy*hw#Z{HuUd3I5I{-ay=9kiAY~uvxxnnd(%gSoDN-K z0iDN3^On$OxktHYIeBfoyX}VxouPV!<(^_@Gu_oCf@GkYncNsLK^*C|KdqlX+YGAx zsN_BrX91tYvDBObh$hyu{<93~$CX%Y>UZQcuzC;?#1Nm7byYyS=sKAz@`|tuuqC^- zP~)+Kj)kWqHMJb(`%B z@i`VS(0-eFa-(kWc=}X);5X6Kb{@*2r)a2!JMT-?Y(Ss=+v8q2_go}D=UrGZ3%gi0 zs$M!bD-)v5&3n1g#v=;ERK{kFYT1n-=ddO!dQ2elP0p@TJSR-)_iGza%vNO97mD80 zeo^C-R`}arTuz;@k}3$$jo_#V-=>S~`2hWDT$}7S`SvLKHa(%Ln|3=8Y4c1E@`UL8 za>U|;u(p}2=}=>S6iN*C1~g_n*~$uD=<3C7B(5W5bNM=9AQNas8m$h`5 z=W&870N)ghQJ^oZ?MD_c8N%WCs_udRWC#@nx$c!t8lN*>hBj=U!LJ0i=t=6+>9}2n zZ3#k=JG1aXRSc;f^3JIU1CC~rx3$2z5bNT#A{Ud8S0Bt*XwSgh&z2(o zd>Odk>h3%VKkgHMd^Ej6@|w~M(hsxrg!ePHRfcy^%5KbSxNDIy>Q0No4_~??cDl5G z07ax21qLGNeUK_FlnTDwcho=Vbm6WI<<>ZkikR^yo9a>CTklOHpwV{@xRqLmdfBn_ zmq0=p)#5M6j00Zqu5~-bXg5RO0S~TgTkjG`dJ+@cq z3|Znxj8LTo8JlP)7CfKAq3Sar_bpo&O;Nwhjb?o$yw}EOX~)afUa^R@>R2HzEcCS}%hh$uG+!Pd+Qe*o5Pzqra0$^IW z$GOaq_e*Kzg=wx|D1^!3PY2@x$-^l=*mR{bLb8y%^r_FFJ>ycJO;);idI)S8QR_0} znILM20e|M0vP89Hr;^ie4)b$)8J^P zY`%s0prS)j#q-JK9-~1LBw<~$3*bkyTz<53-@xcA0Njyj7*5EyZx)VRg!MZtmaWza z`2kByzh&?j7sJ~@n%v2?cl(AbbPap%O3St^h#eVbrga~uL_7QljDIsP^o^%t_L(CU z!@qvi@;w?88zsD2ReIAs*cZnKQzE8Xts!=1D{ukx$ou&o4RLeK_2F|_3b5e}U)VSB z6Q_GD&J25@1R?zr*V%oPEeVavfi~H9om<3iSu4YN+T#PakniTz!bUSBZJt4P2b*-L5@ zmA)!C8BCi*LV#8u^k}4yz~V!+%u^a<&YgZo_b}iLauz9vS=edgC4My%>)aPxB;31R z24!K#1wo;!0BtmsrH3iB_ffiDz$_+nvKf4uSS;bIem?mWZI6bu%nm&HpKf;;`g%yb zeeS<^60jJM$XId{HFq7|KWf)2JN^pND}53xLBHjn-;CL8F?_tNn7KI)yQt~CIR>%$ zU7u(>^8=f|L^IB(J7Ua6aV79e&%f=GHZN?5pMqq*pD8-YoT^;PF~| zbo-X2*eA)L(c6&}6OtycU(JryTcvu$3mZOV6(F|c3}ZKt%~we?Z9oblCh##?%t4p2og1L;s6>qLfARXSSJA)mr5R6M7B9U%1!h zWXIpum)e)}P5?+kw6y?G_jwRnHja8+u9lSN4AFx5XGA4Jb7bBxDyJVmAm(|FsyMlJ zUZaLB{)9gLaqMDZS{+R_89lIEI=7U5G#4N1ArNQENf}Zg@FsueH(gy!q9QrfGz3~# zPvHX0c#dbhxxmrbYl97ksZY`OErXHY9Gb-mTo!``8b<*$mg@UXD+Q;x5v=x{uq2NH z2^VsXQ65#c_l*Kbar27nqRwR)ved9nA_MLwz+xS1J?62a$k{?W{44gT*QBNcRmVl& zxtY0y%*<}jl@La$SE0k$Ajnj`1XdhN>#}2Z7M0=T$mg*+ErqUO2uWV6@y5K-LeDJq zfpv06AT9;=LS06Vxl2l1+I3h=$y??jhKO<}G?$&@(b5UlXaZsSXx17z27AMe`-1lptydo4dc!N#ogWAy+CnyTio4saVhSu#flb+ zyR~SM;_mJgE%t4H{J))f=h@kv$;~-8ndIi4$W9%@2pfJhUpdt%5Pv_0B zd(Km7kkH400*^3KOjA z{1K}L&bP2+yszzsJmr$#PffAXpyYQDYP>fgi8N-bwDtP!_e}b=$qU(|NMZW#-)Jq$ zF=deT)t<{ZWAxRgK7m9!VB!EOzhEp4=olv`Xd|0Kx^&jtv#i$WSSR61(q@VVp;R)k zg%qjdgMz6>DhaEFiGY_*ca#tEia_Lzk{+0YndvLpb; z#=-npg}6YMR5Dd%MSjwR=0@YwpSn9_4#39zfjZ}ddRI+Ec~FsjTI@7!^P>@OX_=&o zpcB79uU?d>l^67dwC?aRToyg8G|!4Jv?7<){ebIki3fEmbaNA=Tzc%8#E`vOFA+2w z6R+igpXd;-y%Pbn<_$?N1{SYdK2t$sPzY2N|AnuDEQ?h`>A?%f&V(a_bhxKndT}V% z_b)I;2Y05FilEt)8ke@u%KrI-z{!kxdU9SgXQQ$&AtV5H%R<#d-JqxtpJ`X>5^W1& zngRGu;R4`Iy4l~$_IdBEk}+9dWmV>?=DeeY-dcOl-yff`+g({)g43z3GovP;1||N= zF6^mhUCwH8KqJjJwg?2F!Xf-tI>hvcJxr^N_un>!7z0U%{vzi{z(Hd$52!b>W1*ZCUF!peI(?sPO_1??YFYF}&9)Mn@) z>d2zi^J==*qqEWVWo6~p8E(dn$b$04W!Q?pi~P%4djS6y<}>fh(?!QweSD;mwqEdJ z^##rI^#(|5sQYQJ?~fBlcT1P|C(?b!p9Lc_bX5`+1M# zbhyBXD3IBRKBt2%4%);J>T9qA5}yt#mVsem{Z7B6mLtH6;*{UTt$AR0sDCz@J_+yOiL3FUMxDtVPp^DNK|}1qI$_+v$wEI(hCUCA^JwfCavIL7gU&uHyR!HBO^LT zCOUgsT3X5bRlx@K5}+|r8-v&;w(9ZV1$s3{EMwGmyI^+qx~UrtFzaQ@uwY` zpx9ELb&xm!aXELy@S^-IUg1v?a51X)m)^_%j%9*ktipEE;zrbFo@ov76tq$77;yM! z`2*%~dGNTp%4KzYRDav-T#`(uaKoHGyALQOqw%Ii{VI}E@E7U)0va|m&;5+D?cHN@ z;AFGixufyvCp6vl@8a!elGj7GmV#~pP8kTN^2$(Bv&mzMV$wdab2pfLNvBJP=in4c zv{zK@1f*nU1{bByjrau_&a^*vQE~{(*x-E#CAD09eg=BU`#i;9(;{r_-7*P#YoCI4 z4zorjm9-;7SHI8KPXRG!y`=^j39|?E@!duFVD9Duc z{yg8-o=(}LC3SY;Az9R!VRV;|fVeT#{}ii!7bsgS7NFB(-@OV9+8`+=bwgIgyjVq- z!FYfn$K`gFGTZFNT|;Jz(!VQ_JoEuMe5pxbS}l979lun^_|rikm|#k$HK;I_mWPq zr$AM_A1|)TK*W;V5l9we=eRBRmkmoO%lwqM+sRUCFj}KuL`6;PK6x;ifF=yu=I-82 zptK^-_eX>|{!E>@+yS0eJ@2O}Sqw9w@TVECyC{Cq)a~ifdD%%Yf7yhTn2P45YZK7_ zjIL_eb=f^4jU&_-d-k_;`EODZ%@Lh712Qi8B)cGGhz8BA4!>uI(@VtZ&+Cs9N=43t zk0#pyKuM?J^gZ@Roc-;hO)NoB?#PDy)%EdbEm*x}R?!-fz{R}5y`7(=*S~(zGKr5B zOenT$GcU-&HK(_9rJ0<=3RQO5*Yi8G3h%E*N|3mHLFIOepRpKsza#xd2CIZguH7)e zX)efz%DIaZ7}SCP8GjVZ}h{AS%zY(1gxAiJ5@;KU0i^4_;BzXyeGr;}ecp*&RH<+q7_ z>-fU;yS`PUpYxXopIbk;-BQ?K#xW|5{l)vT$#EUXS|%27vUYF zJ=a!W6IcwxPPe_y2hkTCGW~6dI8nucEA)4dWgHh13J=SQ+6_HP@GzfD>&06-%jB*O zy3*V=^GrLDDncuCnnqBomw5<;9(PR~;VvE)9TbbT2afAT#b0W-feE*))sH_C*;pgniYUWm^=U-^ROPYba!*D6+gJ;+WI^{UpRVC~dA@Z!nh8iF#V!v~ z-){gM)m-2SUu=-4O-?gj(W7HBK@=Lk?FYs@teW;6RE1K{rjdL-K$xFc@FL|eYgb`u zozsCr4`Rvl+Veo?2Q7_9zttWyMK8x}Vr$R%+((_{1DoMm5wOA|!*_S!2Cc$Etx=zK zlbl9>nDtei{OT}7OSorsuAqYbU{HkPhC9_{1X;AjieS3_0`Sg1GY*$Zie0uq$tQ)$ zsAHCC0E&0jF$igmE?*e8_2^d+oc3vAYN3xO44C$cKuNnWfU0*5Vn2AA+8XSh zT_O4XOLwJb3pUTJFUi7x=`=BUBKw7*j`jXvIsI^M)@9&?T5yQtN-WRZVq>#x^sM~P zvJ8n!kVdz+H)uIE+f@p;Q#8<}<=4tn$52gHs6%>2)ZYHUzOS#c{6((1fs0>4(pCBs zQ7uYaA18TbO9zrs!rf^uvUYYc`y7ImP-?GB_!iU~Hc=lISEA)@L&X%vpMU_655FIi z3&sVEMYy*|nF9LlD!Fh2pV40)*rR)*n{k|$&9InaC@rpNjWjygon+v`AEUrL&^ z(p(PVzyM4oiQ+XBQ8!jvo^pb&T^)hYl=rDzT4btLe9oQ*JMLFTZ}tUOe!S9UjS69R6%%H@6*|j{5HzGgjl5q~>}WpRp5%3K$yMXqhDy&Yr|YJs ziuONE`#_Liw%oaJF<3euRbpkO?>FZXR1FWg1!qNXHmMJsZu>kdR@H7V}uIBO_E|KB4ZhP6@kxBJ{auQsHpil(p=M zxqGfD$uT)v%F}{pCq=1%>X`%cAXV5=IzZ-tG63mV_{aA92h}j6|E@nJ^l)Kj{CA|9zy!`VrlmJ zTiaqroNHA&1!c0WIPQvd{H=PVmu!V!R13yHFcRuJKMf(L6OkxD?_(`-7g)k!+69MQQug|ngbNeo8TeYfw?kC1U54~iA}lLHr6 zZf8RRaGdu4OowtPl?6mD$!?e922R3<*=zN{eQBY!g(JY-QKn5Za|z|>6vK}29P zQBlj%4-42FUdv8_ndO7_(4=C^o;B*->hA8Imv|9}h~w;+nZN9uN30!Uf4y%t_Bzs~ zBcjxT0U+SC*Qsr*$Ea|0cNjZNjWZZaPZ8F0A;hEMPt z96=ybK3sP5&O0b^sce{i%yttBtg;zqYhq{?HJ7ZSXMBw1qM?M3)~Hk2cfDnC$~|UO zm*ZM+kbwXNo$7`y1I=3SVt}-@Xu0okB3D<~U4r68n&O&v@R@pP|ImFtl^Pu8gFqsL z8cMApBd)UTW{1+iaK)>8%(6++ybok~05K@{VRgW9+{f@#Np|8uo0tQrcmPeEYeAX| zHJOylDOwUEN#g=Qa&RZ|#A&jgfY_E;=5eJq12})GlK&2$^+L(uZn@%wYarq|Y$sw@ z*WSRYlmVw_Lc!k~{__B%J{G8zg<>2vHRO2ceFhUDt(c)Br5Mr1SkChCK+Hni$O0s< zF;K)#7#uG7(;kNS7xx&I;X^!4GSOUo5dTs?lzM`Ooa4w5<`SypT0R86Sp}?4FdmL3+Pa|)lfK}BRFbXz8AN5#?{Cg zf(?L9KbhfSG(M}a$*}p|Rwt|y1ll2tLIx=AjXU=o4ov~$VPIuwZqK4SVZRn$`Ri(X z!7?bYxn{942L&JaKngS-xNb&}upiRB-te)C4yvPkJ(ibuPiY~&6Z$c;y*h{1c(Rbr za?mweBm4;XcGcw&TluBNUaZL3U!NX#c6X)}R!yt2@s-`ozgIs18YBgMwf09U zRqxcF66$JNkq=HaH#p#S%Jw0IXg4&B4-|{C$xPn16g=Sd(fcws|v5@ukSzL(=U#=l@zo{xqOBYll;qmU18zZjdA$^>8 zeNkJk52kyVTJEL5^qXg0JHjt3!;? zz*BFRVsciVk}6iz=~~dDfas%s_V4@arx)}5`^Jnjj&jkCi}PR|vH(2mV2dq%KyRB| zG`^u60}tBmeaZ(V9EVA-{d+En*w+{Gg3|@{nGQMeT*2!Q`udK?TU`HQLFL*zWI&*C zFEQz90dal)6!1(SDtf2UpAZ^Xd05;X-!QS=dL!MA)~DJh<`T5oR7#&Yjz3%<1wn~I z`@3Qu8lJBjbjjEw;Frd#dTEx+Vwr+1L_ai(i!6Q#hZO ziuBTtFB8wT$nq}d`%G4tQYvIhCzA$arGGrXFRYn=(-R@Pd;1YTE_$8S@f{wzKmyf| z_SOi~DN)vihwcg#>=*9>G{n@NysAx^sJ|`8Wb^B2%0>2*YRvo4U}U=(HcbP&e1c~r zWULzmaY!#!RCeYy(m3qh3fvMAj zrzIW9Ak)2N#$?8mwgzskoCKlnW8*&IBzf=1C`HA?F*%9w9_9~-8+(+a(VGxuTb1v6WbgVX2DaN5!Q2W;zLLLxAlUQgQgG&^yU%5)ah6l z;$ZU9>zoqA)!_CIRXt3U?8YE|6|liTFa#%a813q=2=Qq2%Bpq+I{SYoiUE)&k8dWl zS24L!QwX|ZPb89c=3S(SD7_j1-GHOUAEwFc7bT-QqVwQSrOW8 zBVFIjoS-jBLYk$m?Em+TreAa?r^kc=C=~H6psiR6^ar8 zt)1d76}oZ_{Sm)5H;F}_vX81)Q-gek`hoh(HUCcWsVz)owpQoT5l8=oc~XUu#3hpGT~x@PHfOc!2se9v zC#=+tfocq=AJ&*cec#$1__2>8N!~nxASXjDD~&!5f#exkP$*)5E7!#jyl*+jYi-Oa zNirxA*{@ga#M6I^RAv&{^4Q=P&N_Ej3X4;iE>eNk1i03RQf_;)W}yZdMseei)8qX50wED8VEV`F2P^h%(H<|0ruJ9C=#=XFYU1Zlkw0uLQ9fG5HG(?(2D6aN7*>pM4mhETSKde-L+X^~A-hO8wnLy&@tCma_ihTNm4RYnk}vr9Sa$q#zdUy4 zZvAMsEQ}VTT>axqNw;SXm;(I2-5gbvCgAd9A?7l7XOT!mOcLbyo?J!%*$kLu{}@u| z@|sp$YktW+63M8qW3QCg69%oD{RwvyfZr?Jp5X@$WHGe4I2LFT$8IE7&&-b|>85n( z3Yr=iI~t@K^z7}15)1Hibvyk%lT;MBY_k^we87Yo(`S;ZWYOD_Bc4vZR?+&?2lY0T zvteKRMmyAezrE(9eKLm4bZ9HD&FfVq&Dc4nrqEJ#!9ygqTnnC=b%Guzdz962 z@Z?5zxmxQeSGsRB5CVz0UOLMggep++oI}RTKB3H}rGFV>5QZ0pq@4VMZ$Xt2gj}rE zjZ(S|}wS!RQ`P;X`knd|_zM<11%RNu-;s z)wNx++C+lv*TDyR!0B|jlfz3IRUGX#?>`~aV}M`uehtn(%CtLS z&aW^QB+TGEs2T;~TwrR$jpRSDal&w9TySuIb*ecGHSH~0qH{dfe*X0kv^J^loWJc8*9A z`~C8~YYfO>Qs%StsduL-5XL8&nVyey&sH?a{B?O=?iace@)S*0F#kk1Do$d&UU+9a zp6P0N$uEL|BQB^x)J`fk!*n=x(-I^l)35SI=NnTL6Ozy@vUY9p;(I|_Q!4RrY>xh8 zn!Gl2iiq2?vCU)P;Iz?wFvM{gXXK z=D&;XU*Oo*KI;glEZ;M@!S(JD^Hq=(4AFF-(=i+>YQ7wHS@pc6;%Z@9103nxSg2@Q zXol*wqr7Yq0lNH&Y@P>MVc?tr6I5+Xd;-J_qp2svVv+WgOqQgJ z_`N`ctCrXu5n5k9uKcdUqNMVHNJ$7M{3<2v3(s)QjoQE-!Tl?PS)Y&^RyzSV%^BnB z_>^D?=pl)=>-rRbE`s5L?5-)nB=U^=??Z*CUg&MG9RR+V?f-vECjWQBh;20 z=9oB%aT4(T!gQtrVXH<1usjP~jLfgjE~mN@5LjA1L$H)PP-mT!S&!MSix@XC2HF;< zDo=J+)$*haGERAF2FXI!t+)!2X+iv2W1F|)!Kp=?GYI5(pNYnaL*V+%jiN7{RX_3_ z_v0Hgx8jgF*HmJ9yn>8Y^f-f^Ms{XH=Cib1J@oN#Nry!|ZE~EjpeVb`)i7jV5~_HP_LviZ*h|u>+&1*p z*<#zbHa;eThfBA$qQ01JjdAk@e7N#kQ(zCo7y8!0HcWGVBoO0crp-YJ>LzbjsEHLp zXc+ZRt%qb$Q6FC9(oa%I96`oLrFtY@DECiy?*VX7278}`$D0o06Rza;H%tErqex|} zI}Ad_-=I1-@`oPT5s;xcE?%CULC~*r9SW0W@#}S7<~*%5=)Q0|kr1C5vmkvKI=Uc2 z`v%*~7zw3ztinwHtyzpb_NH#OwlglNjv4Gp>IEt?RTIVFzr+!KT(=h|PP`e&9;5-T zgV7!{Bv|gyO57hJP(NomK%R3*wit(aTU$NegxDL8rNouhR~<8|0b=yJlNhgojY_jT*!Iq zutFGhzCNs>=(%8=SX-O(=^RDTiR z`Vi@s$KpUB32VQ%^#jCVPQC3ZpuXs(uML~KSz;q4(Hv?4q4!|AQ)L-~I)cDfuoV`4o#6xP7*XkROK4@X)EVC;vLE|eXr5Ix)IgTVK@^`RNM!D2%nDKpeHOdM9lvsR#X~BtSBpTE!1QlfqfOwgC{s1?AT5 zG1;DwncBCHF!4zZI9IiLq93?VbD*xH*qVmV8>S*&k z-~dH*+!p~O#QstWuN|**Nl(99<^Jt!O2=EI-Pcj7yqIwujoo4f?4Mka7`I4h;=+7i z)2TIO{Xba&w)DI25PHK*%2mYIJZDB0(O1Nm_lE@n;!6ZBgmFb6Id{gLQywavx-azk zE1-aCpRTJ*w!!<2ZnqCa-yYxK{K;nF{uk37_#T5D^d5syhz#blABilk(8SnfA@4Dk{eBu8ba#%a5Kn{4twT(RRp06Hx!o=hH* z`6wz8h%(KbXH$K5;_30WUjYAMggEOUEh^a0is+i0u`Oeg7fVD#`W`x)m-AP1Ra-vh zKHMQW5et+=zlA7}jqAyLr|6K@aiOBAA?uyXccY@?JPq^9#@r774A}RS3%meQR?bqM z%_f?f?x1lD#dQB?4OyfV1u|GDV4;Eq01FK)bg(eM`T!OtSXf|TgM|YYE?9VA;e$m0 z7GaAN1yN2TB*nXDQr|p{M~~QA z_CsP}n|}7OKR}6snkFl~@}&_=A=5dZbd(A1*|uBXCST2H9vnuY6T1_8jNPmDl)$2d zVwz!itf&XvUP8u2ghViMfnWU-yWNb=+xo^&J}un2_{k?k&+OTV>RAujR94OL*Us-& ztbJ5GUcCBU5>km(!DtDbG_nO8>CDLczsdYbofx-pv`Y7!wTt?Q8eH`)H2JIaoL zbp!QvuJ_vSGo0Hj-QCo)2*>Qt&J=U7S+vJQaEhY2OMdF26QVu{Ab8h*jQ+tdq51M) z@_O^ebDV0Wdxw0tU=NP70)HSOXfnE%iRd7wGWM5=C?M%F5Ldup$YA;hrVQnO5PEkB z%RiTxg5{kX9^Z%2ONIcmp(aHzwWUI(_mSaS?2RbmRZ>D0M9+!|+7?PbMUvacwZgm_ zT*anFd*+6KQYoQbh&vaCxrEtGl2Im?P z1xRcsZad5-S?HrIC4BEqk85G-q+C8A)!^GIffN*j9N9-sIucvE&t_cm)JcA|cHbvq z@pL&1Lk?UXgYWzN-eBPvxkbU3{b$R!e|4Ax%RARFL0)-)4Lxk~#MtB&Q05x_jKtNm}E%`X>%D21bEgGpI}El#-!1{U7|0(MzG((_W7v;!Iu3qv-D;(erfQJ z_~013f>Eg$eT>uZDx5Q#7#OK+O%<_CGY#ZsYVi^rn<-G8^`7n^ zb0ZnIS41X%1{EE-p6X}Dh-jv$MJ?MgDf+hU)lIoP&C=1zRBXOXi}I-c)ng=mXH*^~ zA1SW14+yp$FlJV0hd%)h4x8={_$ha;VOV2B2a;JYCzz|O`>HT=cKVw zJHBnhl-!Y*P!I*Q&<>jREIN0c&V7KP zVEkI=fIvBziM`OFJWpD5^WyUIF*5H9C1d}RuE2K&B@$N%d`r4k_F0pO*a1sV_!FSw z9%G;4-W2O0)Sz&?{`~g#-}U&JbxSUcXN04(%>gVg4?@>Om7nzzXtH>jc{5$-j zw|;zxAspm3@%Nr`bub|6)_n=}ze2*IqFprGq%$Xb`=3}D=%qr5oe0K*>Fueo7kyZK zpnnsXO)XlDy-d)!yDg_1U%%cS`pA)|@z9D|jh!q#Ei}{e3Fx!Xrae~pV{BVyt`^*JAh}b z=RpO2_%sC>W<&J!7Ft>bemrdY3(ep|e*C|t^ZUKc%>QdMOJIRV^C@=60X7t|XrC~z` z!h$ivD!MmfWck3YFVHgfpl~I>FPR*-muc?z(Vj#Iom`p@!8OvN38~5ldwSXhC;&37 zBW-yqpqDAbE;e(kx(y>>WAemmLwtf3o<0ga7=q z^xqK@-npDy5Kt2zlqjJoNhuAX%?u?uVI|cWq1_lUIfdoT%-k>wEBKXk<<%3bGsw4z tu<*0(0L8%uwRplTEG!Tn?%3$yQvP+n+xPDG_>TK`JiX)P9dG|Y@PAdnrK11< From b301e6ea8ad1c212829eef33d98e8abfda0a9461 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 22 Mar 2022 09:38:13 -0500 Subject: [PATCH 15/97] Update CHANGELOG.md for v7.3.2 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8e707632..08a444863 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.2 +---------- + * Add is_system to contact groups, filter groups by group_type = M|Q|U + v7.3.1 ---------- * Simplify cron jobs and add them to the main mailroom waitgroup From 736b5c79a5fe04410ffad42758b17af7611b1745 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 22 Mar 2022 14:52:50 -0500 Subject: [PATCH 16/97] Update golang.org/x/sys --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 21ea7cad9..f305e0f67 100644 --- a/go.mod +++ b/go.mod @@ -57,7 +57,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect - golang.org/x/sys v0.0.0-20210423082822-04245dca01da // indirect + golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect golang.org/x/text v0.3.6 // indirect google.golang.org/protobuf v1.21.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/go.sum b/go.sum index fbe6edaa9..e541a07ec 100644 --- a/go.sum +++ b/go.sum @@ -238,8 +238,9 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From 25438bbd62b34535a4ff07dd69e8e4deeefd2ce1 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 23 Mar 2022 17:31:29 -0500 Subject: [PATCH 17/97] Add test for timeout task handling --- core/tasks/handler/handler_test.go | 43 +++++++++++++++++------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/core/tasks/handler/handler_test.go b/core/tasks/handler/handler_test.go index db13e5ebe..3ac05f109 100644 --- a/core/tasks/handler/handler_test.go +++ b/core/tasks/handler/handler_test.go @@ -575,6 +575,9 @@ func TestTimedEvents(t *testing.T) { // 9: start our favorite flow again {handler.MsgEventType, testdata.Cathy, "start", "What is your favorite color?", testdata.TwitterChannel.ID, testdata.Org1.ID}, + + // 10: timeout on the color question + {handler.TimeoutEventType, testdata.Cathy, "", "Sorry you can't participate right now, I'll try again later.", testdata.TwitterChannel.ID, testdata.Org1.ID}, } last := time.Now() @@ -585,25 +588,21 @@ func TestTimedEvents(t *testing.T) { time.Sleep(50 * time.Millisecond) var task *queue.Task - if tc.EventType == handler.MsgEventType { - event := &handler.MsgEvent{ - ContactID: tc.Contact.ID, - OrgID: tc.OrgID, - ChannelID: tc.ChannelID, - MsgID: flows.MsgID(1), - MsgUUID: flows.MsgUUID(uuids.New()), - URN: tc.Contact.URN, - URNID: tc.Contact.URNID, - Text: tc.Message, - } - - eventJSON, err := json.Marshal(event) - assert.NoError(t, err) + if tc.EventType == handler.MsgEventType { task = &queue.Task{ Type: tc.EventType, OrgID: int(tc.OrgID), - Task: eventJSON, + Task: jsonx.MustMarshal(&handler.MsgEvent{ + ContactID: tc.Contact.ID, + OrgID: tc.OrgID, + ChannelID: tc.ChannelID, + MsgID: flows.MsgID(1), + MsgUUID: flows.MsgUUID(uuids.New()), + URN: tc.Contact.URN, + URNID: tc.Contact.URNID, + Text: tc.Message, + }), } } else if tc.EventType == handler.ExpirationEventType { var expiration time.Time @@ -618,6 +617,14 @@ func TestTimedEvents(t *testing.T) { } task = handler.NewExpirationTask(tc.OrgID, tc.Contact.ID, sessionID, expiration) + + } else if tc.EventType == handler.TimeoutEventType { + timeoutOn := time.Now() + + // usually courier will set timeout_on after sending the last message + db.MustExec(`UPDATE flows_flowsession SET timeout_on = $2 WHERE id = $1`, sessionID, timeoutOn) + + task = handler.NewTimeoutTask(tc.OrgID, tc.Contact.ID, sessionID, timeoutOn) } err := handler.QueueHandleTask(rc, tc.Contact.ID, task) @@ -643,9 +650,9 @@ func TestTimedEvents(t *testing.T) { last = time.Now() } - // should only have a single waiting session/run per contact - assertdb.Query(t, db, `SELECT count(*) from flows_flowsession WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(1) - assertdb.Query(t, db, `SELECT count(*) from flows_flowrun WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(1) + // should have no waiting sessions or runs + assertdb.Query(t, db, `SELECT count(*) from flows_flowsession WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(0) + assertdb.Query(t, db, `SELECT count(*) from flows_flowrun WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(0) // test the case of a run and session no longer being the most recent but somehow still active, expiration should still work r, err := db.QueryContext(ctx, `SELECT id, session_id from flows_flowrun WHERE contact_id = $1 and status = 'I' order by created_on asc limit 1`, testdata.Cathy.ID) From 460cb9fb4f52aef5c9e4d2f5953834d518061594 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 29 Mar 2022 11:46:31 -0500 Subject: [PATCH 18/97] Clear session timeout if timeout resume rejected by wait --- core/handlers/msg_created.go | 2 +- core/models/sessions.go | 14 +++++++++++++- core/models/sessions_test.go | 28 ++++++++++++++++++++++++++++ core/tasks/handler/handler_test.go | 18 +++++++++++++----- core/tasks/handler/worker.go | 11 ++++++++++- go.mod | 2 +- go.sum | 4 ++-- 7 files changed, 68 insertions(+), 11 deletions(-) diff --git a/core/handlers/msg_created.go b/core/handlers/msg_created.go index 9317e8fe8..0e79d9d37 100644 --- a/core/handlers/msg_created.go +++ b/core/handlers/msg_created.go @@ -50,7 +50,7 @@ func handlePreMsgCreated(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, } // everybody else gets their timeout cleared, will be set by courier - scene.Session().ClearTimeoutOn() + scene.Session().ClearWaitTimeout(ctx, nil) return nil } diff --git a/core/models/sessions.go b/core/models/sessions.go index 647b2c512..6a7dce403 100644 --- a/core/models/sessions.go +++ b/core/models/sessions.go @@ -108,7 +108,6 @@ func (s *Session) WaitStartedOn() *time.Time { return s.s.WaitStartedOn func (s *Session) WaitTimeoutOn() *time.Time { return s.s.WaitTimeoutOn } func (s *Session) WaitExpiresOn() *time.Time { return s.s.WaitExpiresOn } func (s *Session) WaitResumeOnExpire() bool { return s.s.WaitResumeOnExpire } -func (s *Session) ClearTimeoutOn() { s.s.WaitTimeoutOn = nil } func (s *Session) CurrentFlowID() FlowID { return s.s.CurrentFlowID } func (s *Session) ConnectionID() *ConnectionID { return s.s.ConnectionID } func (s *Session) IncomingMsgID() MsgID { return s.incomingMsgID } @@ -467,6 +466,19 @@ func (s *Session) Update(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, return nil } +// ClearWaitTimeout clears the timeout on the wait on this session and is used if the engine tells us +// that the flow no longer has a timeout on that wait. It can be called without updating the session +// in the database which is used when handling msg_created events before session is updated anyway. +func (s *Session) ClearWaitTimeout(ctx context.Context, db *sqlx.DB) error { + s.s.WaitTimeoutOn = nil + + if db != nil { + _, err := db.ExecContext(ctx, `UPDATE flows_flowsession SET timeout_on = NULL WHERE id = $1`, s.ID()) + return errors.Wrap(err, "error clearing wait timeout") + } + return nil +} + // MarshalJSON is our custom marshaller so that our inner struct get output func (s *Session) MarshalJSON() ([]byte, error) { return json.Marshal(s.s) diff --git a/core/models/sessions_test.go b/core/models/sessions_test.go index 9cdc4ef06..e06b18aff 100644 --- a/core/models/sessions_test.go +++ b/core/models/sessions_test.go @@ -435,6 +435,34 @@ func TestGetSessionWaitExpiresOn(t *testing.T) { assert.Nil(t, s2Actual) } +func TestClearWaitTimeout(t *testing.T) { + ctx, rt, db, _ := testsuite.Get() + + defer testsuite.Reset(testsuite.ResetData) + + oa := testdata.Org1.Load(rt) + + _, cathy := testdata.Cathy.Load(db, oa) + + expiresOn := time.Now().Add(time.Hour) + timeoutOn := time.Now().Add(time.Minute) + testdata.InsertWaitingSession(db, testdata.Org1, testdata.Cathy, models.FlowTypeMessaging, testdata.Favorites, models.NilConnectionID, time.Now(), expiresOn, true, &timeoutOn) + + session, err := models.FindWaitingSessionForContact(ctx, db, nil, oa, models.FlowTypeMessaging, cathy) + require.NoError(t, err) + + // can be called without db connection to clear without updating db + session.ClearWaitTimeout(ctx, nil) + assert.Nil(t, session.WaitTimeoutOn()) + assert.NotNil(t, session.WaitExpiresOn()) // unaffected + + // and called with one to clear in the database as well + session.ClearWaitTimeout(ctx, db) + assert.Nil(t, session.WaitTimeoutOn()) + + assertdb.Query(t, db, `SELECT timeout_on FROM flows_flowsession WHERE id = $1`, session.ID()).Returns(nil) +} + func insertSessionAndRun(db *sqlx.DB, contact *testdata.Contact, sessionType models.FlowType, status models.SessionStatus, flow *testdata.Flow, connID models.ConnectionID) (models.SessionID, models.FlowRunID) { // create session and add a run with same status sessionID := testdata.InsertFlowSession(db, testdata.Org1, contact, sessionType, status, flow, connID) diff --git a/core/tasks/handler/handler_test.go b/core/tasks/handler/handler_test.go index 3ac05f109..2361016c6 100644 --- a/core/tasks/handler/handler_test.go +++ b/core/tasks/handler/handler_test.go @@ -535,8 +535,9 @@ func TestTimedEvents(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) - // start to start our favorites flow + // create some keyword triggers testdata.InsertKeywordTrigger(db, testdata.Org1, testdata.Favorites, "start", models.MatchOnly, nil, nil) + testdata.InsertKeywordTrigger(db, testdata.Org1, testdata.PickANumber, "pick", models.MatchOnly, nil, nil) tcs := []struct { EventType string @@ -578,6 +579,12 @@ func TestTimedEvents(t *testing.T) { // 10: timeout on the color question {handler.TimeoutEventType, testdata.Cathy, "", "Sorry you can't participate right now, I'll try again later.", testdata.TwitterChannel.ID, testdata.Org1.ID}, + + // 11: start the pick a number flow + {handler.MsgEventType, testdata.Cathy, "pick", "Pick a number between 1-10.", testdata.TwitterChannel.ID, testdata.Org1.ID}, + + // 12: try to resume with timeout even tho flow doesn't have one set + {handler.TimeoutEventType, testdata.Cathy, "", "", testdata.TwitterChannel.ID, testdata.Org1.ID}, } last := time.Now() @@ -619,7 +626,7 @@ func TestTimedEvents(t *testing.T) { task = handler.NewExpirationTask(tc.OrgID, tc.Contact.ID, sessionID, expiration) } else if tc.EventType == handler.TimeoutEventType { - timeoutOn := time.Now() + timeoutOn := time.Now().Round(time.Millisecond) // so that there's no difference between this and what we read from the db // usually courier will set timeout_on after sending the last message db.MustExec(`UPDATE flows_flowsession SET timeout_on = $2 WHERE id = $1`, sessionID, timeoutOn) @@ -650,9 +657,10 @@ func TestTimedEvents(t *testing.T) { last = time.Now() } - // should have no waiting sessions or runs - assertdb.Query(t, db, `SELECT count(*) from flows_flowsession WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(0) - assertdb.Query(t, db, `SELECT count(*) from flows_flowrun WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(0) + // should only have a single waiting session/run with no timeout + assertdb.Query(t, db, `SELECT count(*) FROM flows_flowsession WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(1) + assertdb.Query(t, db, `SELECT timeout_on FROM flows_flowsession WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(nil) + assertdb.Query(t, db, `SELECT count(*) FROM flows_flowrun WHERE status = 'W' AND contact_id = $1`, testdata.Cathy.ID).Returns(1) // test the case of a run and session no longer being the most recent but somehow still active, expiration should still work r, err := db.QueryContext(ctx, `SELECT id, session_id from flows_flowrun WHERE contact_id = $1 and status = 'I' order by created_on asc limit 1`, testdata.Cathy.ID) diff --git a/core/tasks/handler/worker.go b/core/tasks/handler/worker.go index d98e16827..121af8a70 100644 --- a/core/tasks/handler/worker.go +++ b/core/tasks/handler/worker.go @@ -12,6 +12,7 @@ import ( "github.com/nyaruka/gocommon/urns" "github.com/nyaruka/goflow/excellent/types" "github.com/nyaruka/goflow/flows" + "github.com/nyaruka/goflow/flows/engine" "github.com/nyaruka/goflow/flows/events" "github.com/nyaruka/goflow/flows/resumes" "github.com/nyaruka/goflow/flows/triggers" @@ -273,7 +274,15 @@ func handleTimedEvent(ctx context.Context, rt *runtime.Runtime, eventType string _, err = runner.ResumeFlow(ctx, rt, oa, session, modelContact, resume, nil) if err != nil { - return errors.Wrapf(err, "error resuming flow for timeout") + // if we errored, and it's the wait rejecting the timeout event, it's because it no longer exists on the flow, so clear it + // on the session + var eerr *engine.Error + if errors.As(err, &eerr) && eerr.Code() == engine.ErrorResumeRejectedByWait && resume.Type() == resumes.TypeWaitTimeout { + log.WithField("session_id", session.ID()).Info("clearing session timeout which is no longer set in flow") + return errors.Wrap(session.ClearWaitTimeout(ctx, rt.DB), "error clearing session timeout") + } + + return errors.Wrap(err, "error resuming flow for timeout") } log.WithField("elapsed", time.Since(start)).Info("handled timed event") diff --git a/go.mod b/go.mod index f305e0f67..861aa3f4a 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.17.1 - github.com/nyaruka/goflow v0.153.0 + github.com/nyaruka/goflow v0.154.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index e541a07ec..eb52258e1 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.17.1 h1:4bbNp+0/BIbne4VDiKOxh3kcbdvEu/WsrsZiG/VyRZ8= github.com/nyaruka/gocommon v1.17.1/go.mod h1:nmYyb7MZDM0iW4DYJKiBzfKuE9nbnx+xSHZasuIBOT0= -github.com/nyaruka/goflow v0.153.0 h1:ZphPN0WCod77uvBMCLOxjl9fibaHdTkcWVP3lltIgbc= -github.com/nyaruka/goflow v0.153.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= +github.com/nyaruka/goflow v0.154.0 h1:tcUVs+sDFyjWdLvyk1kf2SOkQwSGInMbzuG+trE7ZNc= +github.com/nyaruka/goflow v0.154.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 799dea8de7621a30ad995f43990f1db36b7fd02e Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 29 Mar 2022 14:01:31 -0500 Subject: [PATCH 19/97] ContactGroup.group_type can no longer be 'U' --- core/models/contacts.go | 2 +- core/models/groups.go | 2 +- mailroom_test.dump | Bin 1893113 -> 1894231 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/models/contacts.go b/core/models/contacts.go index 829508aed..1df22d5fe 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -1041,7 +1041,7 @@ func StopContact(ctx context.Context, db Queryer, orgID OrgID, contactID Contact const sqlDeleteAllContactGroups = ` DELETE FROM contacts_contactgroup_contacts WHERE contact_id = $2 AND contactgroup_id = ANY( - SELECT id from contacts_contactgroup WHERE org_id = $1 and group_type IN ('M', 'Q', 'U') + SELECT id from contacts_contactgroup WHERE org_id = $1 and group_type IN ('M', 'Q') )` const sqlDeleteAllContactTriggers = ` diff --git a/core/models/groups.go b/core/models/groups.go index e83e6dbdd..0f49c3b31 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -79,7 +79,7 @@ const selectGroupsSQL = ` SELECT ROW_TO_JSON(r) FROM ( SELECT id, uuid, name, query FROM contacts_contactgroup - WHERE org_id = $1 AND group_type IN ('M', 'Q', 'U') AND is_active = TRUE + WHERE org_id = $1 AND group_type IN ('M', 'Q') AND is_active = TRUE ORDER BY name ASC ) r;` diff --git a/mailroom_test.dump b/mailroom_test.dump index f9419696805abc7fb7433e0d72a5175ee929a68f..d0defeec0d5258de0d3f1b156a680e2c50b28cf4 100644 GIT binary patch delta 79575 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

sP8`SlNU7goUfHboFwBt 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

ZEr%5)~EC7_*^AyvCU6)5h#yjv??P9AX3ve=VD{ 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 Q0RZ%u@stW2muli1kI-!?V*mgE delta 78077 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 Date: Tue, 29 Mar 2022 15:53:12 -0500 Subject: [PATCH 20/97] Fix metrics endpoint --- testsuite/testdata/contacts.go | 7 ++- web/org/metrics.go | 80 +++++++++++----------------------- 2 files changed, 32 insertions(+), 55 deletions(-) diff --git a/testsuite/testdata/contacts.go b/testsuite/testdata/contacts.go index 8b9dcc41d..bbc742edc 100644 --- a/testsuite/testdata/contacts.go +++ b/testsuite/testdata/contacts.go @@ -58,10 +58,15 @@ func InsertContact(db *sqlx.DB, org *Org, uuid flows.ContactUUID, name string, l // InsertContactGroup inserts a contact group func InsertContactGroup(db *sqlx.DB, org *Org, uuid assets.GroupUUID, name, query string) *Group { + groupType := "M" + if query != "" { + groupType = "Q" + } + var id models.GroupID must(db.Get(&id, `INSERT INTO contacts_contactgroup(uuid, org_id, group_type, name, query, status, is_system, is_active, created_by_id, created_on, modified_by_id, modified_on) - VALUES($1, $2, 'U', $3, $4, 'R', FALSE, TRUE, 1, NOW(), 1, NOW()) RETURNING id`, uuid, org.ID, name, null.String(query), + VALUES($1, $2, $3, $4, $5, 'R', FALSE, TRUE, 1, NOW(), 1, NOW()) RETURNING id`, uuid, org.ID, groupType, name, null.String(query), )) return &Group{id, uuid} } diff --git a/web/org/metrics.go b/web/org/metrics.go index bcfe6be68..7f6617959 100644 --- a/web/org/metrics.go +++ b/web/org/metrics.go @@ -21,31 +21,18 @@ func init() { } const groupCountsSQL = ` -SELECT - g.id AS id, - g.name AS name, - g.uuid AS uuid, - g.group_type AS group_type, - COALESCE(SUM(c.count), 0) AS count -FROM - contacts_contactgroup g -LEFT OUTER JOIN - contacts_contactgroupcount c -ON - c.group_id = g.id -WHERE - g.org_id = $1 AND - g.is_active = TRUE -GROUP BY - g.id; -` + SELECT g.id, g.name, g.uuid, g.is_system, COALESCE(SUM(c.count), 0) AS count + FROM contacts_contactgroup g +LEFT OUTER JOIN contacts_contactgroupcount c ON c.group_id = g.id + WHERE g.org_id = $1 AND g.is_active = TRUE + GROUP BY g.id;` type groupCountRow struct { - ID models.GroupID `db:"id"` - Name string `db:"name"` - UUID assets.GroupUUID `db:"uuid"` - Type string `db:"group_type"` - Count int64 `db:"count"` + ID models.GroupID `db:"id"` + Name string `db:"name"` + UUID assets.GroupUUID `db:"uuid"` + IsSystem bool `db:"is_system"` + Count int64 `db:"count"` } func calculateGroupCounts(ctx context.Context, rt *runtime.Runtime, org *models.OrgReference) (*dto.MetricFamily, error) { @@ -70,26 +57,26 @@ func calculateGroupCounts(ctx context.Context, rt *runtime.Runtime, org *models. } groupType := "user" - if row.Type != "U" { + if row.IsSystem { groupType = "system" } family.Metric = append(family.Metric, &dto.Metric{ Label: []*dto.LabelPair{ - &dto.LabelPair{ + { Name: proto.String("group_name"), Value: proto.String(row.Name), }, - &dto.LabelPair{ + { Name: proto.String("group_uuid"), Value: proto.String(string(row.UUID)), }, - &dto.LabelPair{ + { Name: proto.String("group_type"), Value: proto.String(groupType), }, - &dto.LabelPair{ + { Name: proto.String("org"), Value: proto.String(org.Name), }, @@ -105,26 +92,11 @@ func calculateGroupCounts(ctx context.Context, rt *runtime.Runtime, org *models. } const channelCountsSQL = ` -SELECT - ch.id AS id, - ch.uuid AS uuid, - ch.name AS name, - ch.role AS role, - ch.channel_type AS channel_type, - c.count_type AS count_type, - COALESCE(SUM(c.count), 0) as count -FROM - channels_channel ch -LEFT OUTER JOIN - channels_channelcount c -ON - c.channel_id = ch.id -WHERE - ch.org_id = $1 AND - ch.is_active = TRUE -GROUP BY - (ch.id, c.count_type); -` + SELECT ch.id, ch.uuid, ch.name, ch.role, ch.channel_type, c.count_type, COALESCE(SUM(c.count), 0) as count + FROM channels_channel ch +LEFT OUTER JOIN channels_channelcount c ON c.channel_id = ch.id + WHERE ch.org_id = $1 AND ch.is_active = TRUE + GROUP BY ch.id, c.count_type;` type channelCountRow struct { ID models.ChannelID `db:"id"` @@ -225,27 +197,27 @@ func calculateChannelCounts(ctx context.Context, rt *runtime.Runtime, org *model family.Metric = append(family.Metric, &dto.Metric{ Label: []*dto.LabelPair{ - &dto.LabelPair{ + { Name: proto.String("channel_name"), Value: proto.String(channel.Name), }, - &dto.LabelPair{ + { Name: proto.String("channel_uuid"), Value: proto.String(string(channel.UUID)), }, - &dto.LabelPair{ + { Name: proto.String("channel_type"), Value: proto.String(channel.ChannelType), }, - &dto.LabelPair{ + { Name: proto.String("msg_direction"), Value: proto.String(direction), }, - &dto.LabelPair{ + { Name: proto.String("msg_type"), Value: proto.String(countType), }, - &dto.LabelPair{ + { Name: proto.String("org"), Value: proto.String(org.Name), }, From ecf05537540b05c7677985b60df4c7d0704a0dc6 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 29 Mar 2022 16:51:40 -0500 Subject: [PATCH 21/97] Update CHANGELOG.md for v7.3.3 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08a444863..dee550c50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v7.3.3 +---------- + * ContactGroup.group_type can no longer be 'U' + * Clear session timeout if timeout resume rejected by wait + * Update golang.org/x/sys + v7.3.2 ---------- * Add is_system to contact groups, filter groups by group_type = M|Q|U From 7841cd143ee95621bed20c632ffdfab7ad07c12d Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 4 Apr 2022 11:47:21 -0500 Subject: [PATCH 22/97] Fix unstopping of contacts who message in --- core/tasks/handler/handler_test.go | 55 ++++++++++++++++++++++++++---- core/tasks/handler/worker.go | 12 +++---- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/core/tasks/handler/handler_test.go b/core/tasks/handler/handler_test.go index 2361016c6..29ef05c97 100644 --- a/core/tasks/handler/handler_test.go +++ b/core/tasks/handler/handler_test.go @@ -71,6 +71,7 @@ func TestMsgEvents(t *testing.T) { expectedType models.MsgType expectedFlow *testdata.Flow }{ + // 0: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -79,6 +80,8 @@ func TestMsgEvents(t *testing.T) { expectedReply: "", expectedType: models.MsgTypeInbox, }, + + // 1: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -87,6 +90,8 @@ func TestMsgEvents(t *testing.T) { expectedReply: "", expectedType: models.MsgTypeInbox, }, + + // 2: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -96,6 +101,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Favorites, }, + + // 3: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -105,6 +112,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Favorites, }, + + // 4: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -114,6 +123,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Favorites, }, + + // 5: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -123,6 +134,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Favorites, }, + + // 6: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -132,6 +145,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Favorites, }, + + // 7: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -141,6 +156,7 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeInbox, }, + // 8: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -150,6 +166,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2SingleMessage, }, + + // 9: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -159,6 +177,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2Favorites, }, + + // 10: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -168,6 +188,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2Favorites, }, + + // 11: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -177,6 +199,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2Favorites, }, + + // 12: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -186,6 +210,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2Favorites, }, + + // 13: { org: testdata.Org2, channel: testdata.Org2Channel, @@ -196,6 +222,7 @@ func TestMsgEvents(t *testing.T) { expectedFlow: testdata.Org2SingleMessage, }, + // 14: { org: testdata.Org1, channel: testdata.TwitterChannel, @@ -206,7 +233,21 @@ func TestMsgEvents(t *testing.T) { expectedFlow: testdata.IVRFlow, }, - // no URN on contact but handle event, session gets started but no message created + // 15: stopped contact should be unstopped + { + preHook: func() { + db.MustExec(`UPDATE contacts_contact SET status = 'S' WHERE id = $1`, testdata.George.ID) + }, + org: testdata.Org1, + channel: testdata.TwitterChannel, + contact: testdata.George, + text: "start", + expectedReply: "What is your favorite color?", + expectedType: models.MsgTypeFlow, + expectedFlow: testdata.Favorites, + }, + + // 16: no URN on contact but handle event, session gets started but no message created { org: testdata.Org1, channel: testdata.TwilioChannel, @@ -217,7 +258,7 @@ func TestMsgEvents(t *testing.T) { expectedFlow: testdata.Favorites, }, - // start Fred back in our favorite flow, then make it inactive, will be handled by catch-all + // 17: start Fred back in our favorite flow, then make it inactive, will be handled by catch-all { org: testdata.Org2, channel: testdata.Org2Channel, @@ -227,6 +268,8 @@ func TestMsgEvents(t *testing.T) { expectedType: models.MsgTypeFlow, expectedFlow: testdata.Org2Favorites, }, + + // 18: { preHook: func() { db.MustExec(`UPDATE flows_flow SET is_active = FALSE WHERE id = $1`, testdata.Org2Favorites.ID) @@ -240,7 +283,7 @@ func TestMsgEvents(t *testing.T) { expectedFlow: testdata.Org2SingleMessage, }, - // start Fred back in our favorites flow to test retries + // 19: start Fred back in our favorites flow to test retries { preHook: func() { db.MustExec(`UPDATE flows_flow SET is_active = TRUE WHERE id = $1`, testdata.Org2Favorites.ID) @@ -303,8 +346,8 @@ func TestMsgEvents(t *testing.T) { // if we are meant to have a reply, check it if tc.expectedReply != "" { - assertdb.Query(t, db, `SELECT text FROM msgs_msg WHERE contact_id = $1 AND created_on > $2 ORDER BY id DESC LIMIT 1`, tc.contact.ID, last). - Returns(tc.expectedReply, "%d: response mismatch", i) + assertdb.Query(t, db, `SELECT text, status FROM msgs_msg WHERE contact_id = $1 AND created_on > $2 ORDER BY id DESC LIMIT 1`, tc.contact.ID, last). + Columns(map[string]interface{}{"text": tc.expectedReply, "status": "Q"}, "%d: response mismatch", i) } // check any open tickets for this contact where updated @@ -331,7 +374,7 @@ func TestMsgEvents(t *testing.T) { // check messages queued to courier testsuite.AssertCourierQueues(t, map[string][]int{ - fmt.Sprintf("msgs:%s|10/1", testdata.TwitterChannel.UUID): {1, 1, 1, 1, 1}, + fmt.Sprintf("msgs:%s|10/1", testdata.TwitterChannel.UUID): {1, 1, 1, 1, 1, 1}, fmt.Sprintf("msgs:%s|10/1", testdata.Org2Channel.UUID): {1, 1, 1, 1, 1, 1, 1, 1, 1}, }) diff --git a/core/tasks/handler/worker.go b/core/tasks/handler/worker.go index 121af8a70..166f943cd 100644 --- a/core/tasks/handler/worker.go +++ b/core/tasks/handler/worker.go @@ -514,12 +514,6 @@ func handleMsgEvent(ctx context.Context, rt *runtime.Runtime, event *MsgEvent) e } } - // build our flow contact - contact, err := modelContact.FlowContact(oa) - if err != nil { - return errors.Wrapf(err, "error creating flow contact") - } - // if this channel is no longer active or this contact is blocked, ignore this message (mark it as handled) if channel == nil || modelContact.Status() == models.ContactStatusBlocked { err := models.UpdateMessage(ctx, rt.DB, event.MsgID, models.MsgStatusHandled, models.VisibilityArchived, models.MsgTypeInbox, models.NilFlowID, topupID) @@ -540,6 +534,12 @@ func handleMsgEvent(ctx context.Context, rt *runtime.Runtime, event *MsgEvent) e newContact = true } + // build our flow contact + contact, err := modelContact.FlowContact(oa) + if err != nil { + return errors.Wrapf(err, "error creating flow contact") + } + // if this is a new contact, we need to calculate dynamic groups and campaigns if newContact { err = models.CalculateDynamicGroups(ctx, rt.DB, oa, []*flows.Contact{contact}) From e34f917eab6b7382ac5cc3912a00cdb9bee87db1 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 4 Apr 2022 12:30:45 -0500 Subject: [PATCH 23/97] Update CHANGELOG.md for v7.3.4 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dee550c50..d21b1d4d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.4 +---------- + * Fix unstopping of contacts who message in + v7.3.3 ---------- * ContactGroup.group_type can no longer be 'U' From 7823156a96e1123095c37a66daafb8c2cbe30e78 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 4 Apr 2022 14:51:48 -0500 Subject: [PATCH 24/97] Update to latest goflow which requires mapping groups and flows to ids for ES queries --- core/models/contacts.go | 9 ++- core/models/groups.go | 32 ++++++++--- core/models/search.go | 25 +++++++-- core/models/search_test.go | 15 ++--- go.mod | 2 +- go.sum | 4 +- testsuite/testdata/constants.go | 6 +- web/contact/search.go | 25 +++++++-- web/contact/search_test.go | 14 ++--- web/contact/testdata/parse_query.json | 81 +++++++++++++++++++++++++-- 10 files changed, 169 insertions(+), 44 deletions(-) diff --git a/core/models/contacts.go b/core/models/contacts.go index 1df22d5fe..8c543afcd 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -196,9 +196,12 @@ func (c *Contact) UpdatePreferredURN(ctx context.Context, db Queryer, oa *OrgAss // FlowContact converts our mailroom contact into a flow contact for use in the engine func (c *Contact) FlowContact(oa *OrgAssets) (*flows.Contact, error) { // convert our groups to a list of references - groups := make([]*assets.GroupReference, len(c.groups)) - for i, g := range c.groups { - groups[i] = assets.NewGroupReference(g.UUID(), g.Name()) + groups := make([]*assets.GroupReference, 0, len(c.groups)) + for _, g := range c.groups { + // exclude the db-trigger based status groups for now + if g.Type() == GroupTypeManual || g.Type() == GroupTypeSmart { + groups = append(groups, assets.NewGroupReference(g.UUID(), g.Name())) + } } // convert our tickets to flow tickets diff --git a/core/models/groups.go b/core/models/groups.go index 0f49c3b31..7d2259e61 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -15,6 +15,9 @@ import ( "github.com/sirupsen/logrus" ) +// GroupID is our type for group ids +type GroupID int + // GroupStatus is the current status of the passed in group type GroupStatus string @@ -24,16 +27,23 @@ const ( GroupStatusReady = GroupStatus("R") ) -// GroupID is our type for group ids -type GroupID int +// GroupType is the the type of a group +type GroupType string + +const ( + GroupTypeManual = GroupType("M") + GroupTypeSmart = GroupType("Q") +) // Group is our mailroom type for contact groups type Group struct { g struct { - ID GroupID `json:"id"` - UUID assets.GroupUUID `json:"uuid"` - Name string `json:"name"` - Query string `json:"query"` + ID GroupID `json:"id"` + UUID assets.GroupUUID `json:"uuid"` + Name string `json:"name"` + Query string `json:"query"` + Status GroupStatus `json:"status"` + Type GroupType `json:"group_type"` } } @@ -49,6 +59,12 @@ func (g *Group) Name() string { return g.g.Name } // Query returns the query string (if any) for this group func (g *Group) Query() string { return g.g.Query } +// Status returns the status of this group +func (g *Group) Status() GroupStatus { return g.g.Status } + +// Type returns the type of this group +func (g *Group) Type() GroupType { return g.g.Type } + // LoadGroups loads the groups for the passed in org func LoadGroups(ctx context.Context, db Queryer, orgID OrgID) ([]assets.Group, error) { start := time.Now() @@ -77,9 +93,9 @@ func LoadGroups(ctx context.Context, db Queryer, orgID OrgID) ([]assets.Group, e const selectGroupsSQL = ` SELECT ROW_TO_JSON(r) FROM ( - SELECT id, uuid, name, query + SELECT id, uuid, name, query, status, group_type FROM contacts_contactgroup - WHERE org_id = $1 AND group_type IN ('M', 'Q') AND is_active = TRUE + WHERE org_id = $1 AND is_active = TRUE ORDER BY name ASC ) r;` diff --git a/core/models/search.go b/core/models/search.go index 09c646313..3b2d78f6b 100644 --- a/core/models/search.go +++ b/core/models/search.go @@ -10,14 +10,27 @@ import ( "github.com/nyaruka/goflow/assets" "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/contactql/es" + "github.com/nyaruka/goflow/flows" "github.com/olivere/elastic/v7" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) +type AssetMapper struct{} + +func (m *AssetMapper) Flow(f assets.Flow) int64 { + return int64(f.(*Flow).ID()) +} + +func (m *AssetMapper) Group(g assets.Group) int64 { + return int64(g.(*flows.Group).Asset().(*Group).ID()) +} + +var assetMapper = &AssetMapper{} + // BuildElasticQuery turns the passed in contact ql query into an elastic query -func BuildElasticQuery(oa *OrgAssets, group assets.GroupUUID, status ContactStatus, excludeIDs []ContactID, query *contactql.ContactQuery) elastic.Query { +func BuildElasticQuery(oa *OrgAssets, group *Group, status ContactStatus, excludeIDs []ContactID, query *contactql.ContactQuery) elastic.Query { // filter by org and active contacts eq := elastic.NewBoolQuery().Must( elastic.NewTermQuery("org_id", oa.OrgID()), @@ -25,8 +38,8 @@ func BuildElasticQuery(oa *OrgAssets, group assets.GroupUUID, status ContactStat ) // our group if present - if group != "" { - eq = eq.Must(elastic.NewTermQuery("groups", group)) + if group != nil { + eq = eq.Must(elastic.NewTermQuery("group_ids", group.ID())) } // our status is present @@ -45,7 +58,7 @@ func BuildElasticQuery(oa *OrgAssets, group assets.GroupUUID, status ContactStat // and by our query if present if query != nil { - q := es.ToElasticQuery(oa.Env(), query) + q := es.ToElasticQuery(oa.Env(), assetMapper, query) eq = eq.Must(q) } @@ -53,7 +66,7 @@ func BuildElasticQuery(oa *OrgAssets, group assets.GroupUUID, status ContactStat } // GetContactIDsForQueryPage returns a page of contact ids for the given query and sort -func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa *OrgAssets, group assets.GroupUUID, excludeIDs []ContactID, query string, sort string, offset int, pageSize int) (*contactql.ContactQuery, []ContactID, int64, error) { +func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa *OrgAssets, group *Group, excludeIDs []ContactID, query string, sort string, offset int, pageSize int) (*contactql.ContactQuery, []ContactID, int64, error) { env := oa.Env() start := time.Now() var parsed *contactql.ContactQuery @@ -126,7 +139,7 @@ func GetContactIDsForQuery(ctx context.Context, client *elastic.Client, oa *OrgA } routing := strconv.FormatInt(int64(oa.OrgID()), 10) - eq := BuildElasticQuery(oa, "", ContactStatusActive, nil, parsed) + eq := BuildElasticQuery(oa, nil, ContactStatusActive, nil, parsed) ids := make([]ContactID, 0, 100) // if limit provided that can be done with regular search, do that diff --git a/core/models/search_test.go b/core/models/search_test.go index 19f85dd80..702d5719d 100644 --- a/core/models/search_test.go +++ b/core/models/search_test.go @@ -4,7 +4,6 @@ import ( "fmt" "testing" - "github.com/nyaruka/goflow/assets" "github.com/nyaruka/goflow/test" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/testsuite" @@ -32,7 +31,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { require.NoError(t, err) tcs := []struct { - Group assets.GroupUUID + Group *testdata.Group ExcludeIDs []models.ContactID Query string Sort string @@ -43,7 +42,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ExpectedError string }{ { - Group: testdata.AllContactsGroup.UUID, + Group: testdata.ActiveGroup, Query: "george", ExpectedESRequest: `{ "_source": false, @@ -63,7 +62,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { }, { "term": { - "groups": "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008" + "group_ids": 1 } }, { @@ -117,7 +116,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ExpectedTotal: 1, }, { - Group: testdata.BlockedContactsGroup.UUID, + Group: testdata.BlockedGroup, ExcludeIDs: []models.ContactID{testdata.Bob.ID, testdata.Cathy.ID}, Query: "age > 32", Sort: "-age", @@ -139,7 +138,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { }, { "term": { - "groups": "9295ebab-5c2d-4eb1-86f9-7c15ed2f3219" + "group_ids": 2 } }, { @@ -237,7 +236,9 @@ func TestGetContactIDsForQueryPage(t *testing.T) { for i, tc := range tcs { es.NextResponse = tc.MockedESResponse - _, ids, total, err := models.GetContactIDsForQueryPage(ctx, client, oa, tc.Group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) + group := oa.GroupByID(tc.Group.ID) + + _, ids, total, err := models.GetContactIDsForQueryPage(ctx, client, oa, group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) if tc.ExpectedError != "" { assert.EqualError(t, err, tc.ExpectedError) diff --git a/go.mod b/go.mod index 861aa3f4a..e6a1b0d50 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.17.1 - github.com/nyaruka/goflow v0.154.0 + github.com/nyaruka/goflow v0.155.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index eb52258e1..819ba4692 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.17.1 h1:4bbNp+0/BIbne4VDiKOxh3kcbdvEu/WsrsZiG/VyRZ8= github.com/nyaruka/gocommon v1.17.1/go.mod h1:nmYyb7MZDM0iW4DYJKiBzfKuE9nbnx+xSHZasuIBOT0= -github.com/nyaruka/goflow v0.154.0 h1:tcUVs+sDFyjWdLvyk1kf2SOkQwSGInMbzuG+trE7ZNc= -github.com/nyaruka/goflow v0.154.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= +github.com/nyaruka/goflow v0.155.0 h1:et7QeHEFG7WKJrR78Q2/5PkOp+3JuneFui6B7+gFibQ= +github.com/nyaruka/goflow v0.155.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= diff --git a/testsuite/testdata/constants.go b/testsuite/testdata/constants.go index 0722cea89..ea096c4dc 100644 --- a/testsuite/testdata/constants.go +++ b/testsuite/testdata/constants.go @@ -33,8 +33,10 @@ var GenderField = &Field{6, "3a5891e4-756e-4dc9-8e12-b7a766168824"} var AgeField = &Field{7, "903f51da-2717-47c7-a0d3-f2f32877013d"} var JoinedField = &Field{8, "d83aae24-4bbf-49d0-ab85-6bfd201eac6d"} -var AllContactsGroup = &Group{1, "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008"} -var BlockedContactsGroup = &Group{2, "9295ebab-5c2d-4eb1-86f9-7c15ed2f3219"} +var ActiveGroup = &Group{1, "b97f69f7-5edf-45c7-9fda-d37066eae91d"} +var BlockedGroup = &Group{2, "14f6ea01-456b-4417-b0b8-35e942f549f1"} +var StoppedGroup = &Group{3, "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008"} +var ArchivedGroup = &Group{4, "9295ebab-5c2d-4eb1-86f9-7c15ed2f3219"} var DoctorsGroup = &Group{10000, "c153e265-f7c9-4539-9dbc-9b358714b638"} var TestersGroup = &Group{10001, "5e9d8fab-5e7e-4f51-b533-261af5dea70d"} diff --git a/web/contact/search.go b/web/contact/search.go index 365733c80..20d5b9319 100644 --- a/web/contact/search.go +++ b/web/contact/search.go @@ -23,6 +23,7 @@ func init() { // // { // "org_id": 1, +// "group_id": 234, // "group_uuid": "985a83fe-2e9f-478d-a3ec-fa602d5e7ddd", // "query": "age > 10", // "sort": "-age" @@ -30,7 +31,8 @@ func init() { // type searchRequest struct { OrgID models.OrgID `json:"org_id" validate:"required"` - GroupUUID assets.GroupUUID `json:"group_uuid" validate:"required"` + GroupID models.GroupID `json:"group_id"` + GroupUUID assets.GroupUUID `json:"group_uuid"` ExcludeIDs []models.ContactID `json:"exclude_ids"` Query string `json:"query"` PageSize int `json:"page_size"` @@ -78,9 +80,15 @@ func handleSearch(ctx context.Context, rt *runtime.Runtime, r *http.Request) (in return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load org assets") } + var group *models.Group + if request.GroupID != 0 { + group = oa.GroupByID(request.GroupID) + } else if request.GroupUUID != "" { + group = oa.GroupByUUID(request.GroupUUID) + } + // perform our search - parsed, hits, total, err := models.GetContactIDsForQueryPage(ctx, rt.ES, oa, - request.GroupUUID, request.ExcludeIDs, request.Query, request.Sort, request.Offset, request.PageSize) + parsed, hits, total, err := models.GetContactIDsForQueryPage(ctx, rt.ES, oa, group, request.ExcludeIDs, request.Query, request.Sort, request.Offset, request.PageSize) if err != nil { isQueryError, qerr := contactql.IsQueryError(err) @@ -117,6 +125,7 @@ func handleSearch(ctx context.Context, rt *runtime.Runtime, r *http.Request) (in // { // "org_id": 1, // "query": "age > 10", +// "group_id": 234, // "group_uuid": "123123-123-123-" // } // @@ -124,6 +133,7 @@ type parseRequest struct { OrgID models.OrgID `json:"org_id" validate:"required"` Query string `json:"query" validate:"required"` ParseOnly bool `json:"parse_only"` + GroupID models.GroupID `json:"group_id"` GroupUUID assets.GroupUUID `json:"group_uuid"` } @@ -158,6 +168,13 @@ func handleParseQuery(ctx context.Context, rt *runtime.Runtime, r *http.Request) return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load org assets") } + var group *models.Group + if request.GroupID != 0 { + group = oa.GroupByID(request.GroupID) + } else if request.GroupUUID != "" { + group = oa.GroupByUUID(request.GroupUUID) + } + env := oa.Env() var resolver contactql.Resolver if !request.ParseOnly { @@ -179,7 +196,7 @@ func handleParseQuery(ctx context.Context, rt *runtime.Runtime, r *http.Request) var elasticSource interface{} if !request.ParseOnly { - eq := models.BuildElasticQuery(oa, request.GroupUUID, models.NilContactStatus, nil, parsed) + eq := models.BuildElasticQuery(oa, group, models.NilContactStatus, nil, parsed) elasticSource, err = eq.Source() if err != nil { return nil, http.StatusInternalServerError, errors.Wrap(err, "error getting elastic source") diff --git a/web/contact/search_test.go b/web/contact/search_test.go index 2ff3871ea..a377ec20f 100644 --- a/web/contact/search_test.go +++ b/web/contact/search_test.go @@ -99,21 +99,21 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "birthday = tomorrow", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "birthday = tomorrow", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), expectedStatus: 400, expectedError: "can't resolve 'birthday' to attribute, scheme or field", }, { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "age > tomorrow", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "age > tomorrow", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), expectedStatus: 400, expectedError: "can't convert 'tomorrow' to a number", }, { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -126,7 +126,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s", "exclude_ids": [%d, %d]}`, testdata.AllContactsGroup.UUID, testdata.Bob.ID, testdata.George.ID), + body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s", "exclude_ids": [%d, %d]}`, testdata.ActiveGroup.UUID, testdata.Bob.ID, testdata.George.ID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -153,7 +153,7 @@ func TestSearch(t *testing.T) { }, { "term": { - "groups": "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008" + "group_ids": 1 } }, { @@ -188,7 +188,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "AGE = 10 and gender = M", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "AGE = 10 and gender = M", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -204,7 +204,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, diff --git a/web/contact/testdata/parse_query.json b/web/contact/testdata/parse_query.json index a4e0d0b64..9a835e6e6 100644 --- a/web/contact/testdata/parse_query.json +++ b/web/contact/testdata/parse_query.json @@ -140,13 +140,13 @@ } }, { - "label": "valid query with group", + "label": "valid query with group by ID", "method": "POST", "path": "/mr/contact/parse_query", "body": { "org_id": 1, "query": "age > 10", - "group_uuid": "903f51da-2717-47c7-a0d3-f2f32877013d" + "group_id": 10000 }, "status": 200, "response": { @@ -166,7 +166,80 @@ }, { "term": { - "groups": "903f51da-2717-47c7-a0d3-f2f32877013d" + "group_ids": 10000 + } + }, + { + "nested": { + "path": "fields", + "query": { + "bool": { + "must": [ + { + "term": { + "fields.field": "903f51da-2717-47c7-a0d3-f2f32877013d" + } + }, + { + "range": { + "fields.number": { + "from": 10, + "include_lower": false, + "include_upper": true, + "to": null + } + } + } + ] + } + } + } + } + ] + } + }, + "metadata": { + "attributes": [], + "schemes": [], + "fields": [ + { + "key": "age", + "name": "Age" + } + ], + "groups": [], + "allow_as_group": true + } + } + }, + { + "label": "valid query with group by UUID", + "method": "POST", + "path": "/mr/contact/parse_query", + "body": { + "org_id": 1, + "query": "age > 10", + "group_uuid": "c153e265-f7c9-4539-9dbc-9b358714b638" + }, + "status": 200, + "response": { + "query": "age > 10", + "elastic_query": { + "bool": { + "must": [ + { + "term": { + "org_id": 1 + } + }, + { + "term": { + "is_active": true + } + }, + { + "term": { + "group_ids": 10000 } }, { @@ -238,7 +311,7 @@ }, { "term": { - "groups": "5e9d8fab-5e7e-4f51-b533-261af5dea70d" + "group_ids": 10001 } } ] From 39d68bb61842a929bd01613e70b694cebae143aa Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 4 Apr 2022 17:04:19 -0500 Subject: [PATCH 25/97] Update test database --- core/models/groups_test.go | 19 ++++++++++--------- core/models/search_test.go | 8 ++++---- core/models/tickets_test.go | 10 +++------- mailroom_test.dump | Bin 1894231 -> 1894478 bytes testsuite/testdata/constants.go | 14 +++++++++----- web/contact/search_test.go | 14 +++++++------- 6 files changed, 33 insertions(+), 32 deletions(-) diff --git a/core/models/groups_test.go b/core/models/groups_test.go index b4339dc73..8917aa77b 100644 --- a/core/models/groups_test.go +++ b/core/models/groups_test.go @@ -35,22 +35,23 @@ func TestLoadGroups(t *testing.T) { require.NoError(t, err) tcs := []struct { - ID models.GroupID - UUID assets.GroupUUID - Name string - Query string + id models.GroupID + uuid assets.GroupUUID + name string + query string }{ {testdata.DoctorsGroup.ID, testdata.DoctorsGroup.UUID, "Doctors", ""}, + {testdata.OpenTicketsGroup.ID, testdata.OpenTicketsGroup.UUID, "Open Tickets", "tickets > 0"}, {testdata.TestersGroup.ID, testdata.TestersGroup.UUID, "Testers", ""}, } - assert.Equal(t, 2, len(groups)) + assert.Equal(t, 3, len(groups)) for i, tc := range tcs { group := groups[i].(*models.Group) - assert.Equal(t, tc.UUID, group.UUID()) - assert.Equal(t, tc.ID, group.ID()) - assert.Equal(t, tc.Name, group.Name()) - assert.Equal(t, tc.Query, group.Query()) + assert.Equal(t, tc.uuid, group.UUID()) + assert.Equal(t, tc.id, group.ID()) + assert.Equal(t, tc.name, group.Name()) + assert.Equal(t, tc.query, group.Query()) } } diff --git a/core/models/search_test.go b/core/models/search_test.go index 19f85dd80..16a5bc2de 100644 --- a/core/models/search_test.go +++ b/core/models/search_test.go @@ -43,7 +43,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ExpectedError string }{ { - Group: testdata.AllContactsGroup.UUID, + Group: testdata.ActiveGroup.UUID, Query: "george", ExpectedESRequest: `{ "_source": false, @@ -63,7 +63,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { }, { "term": { - "groups": "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008" + "groups": "b97f69f7-5edf-45c7-9fda-d37066eae91d" } }, { @@ -117,7 +117,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ExpectedTotal: 1, }, { - Group: testdata.BlockedContactsGroup.UUID, + Group: testdata.BlockedGroup.UUID, ExcludeIDs: []models.ContactID{testdata.Bob.ID, testdata.Cathy.ID}, Query: "age > 32", Sort: "-age", @@ -139,7 +139,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { }, { "term": { - "groups": "9295ebab-5c2d-4eb1-86f9-7c15ed2f3219" + "groups": "14f6ea01-456b-4417-b0b8-35e942f549f1" } }, { diff --git a/core/models/tickets_test.go b/core/models/tickets_test.go index 10eaeb4ce..c541de906 100644 --- a/core/models/tickets_test.go +++ b/core/models/tickets_test.go @@ -282,8 +282,6 @@ func TestCloseTickets(t *testing.T) { }, })) - testdata.InsertContactGroup(db, testdata.Org1, "94c816d7-cc87-42db-a577-ce072ceaab80", "Tickets", "tickets > 0") - oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshTicketers|models.RefreshGroups) require.NoError(t, err) @@ -299,7 +297,7 @@ func TestCloseTickets(t *testing.T) { require.NoError(t, err) assert.Equal(t, "Doctors", cathy.Groups().All()[0].Name()) - assert.Equal(t, "Tickets", cathy.Groups().All()[1].Name()) + assert.Equal(t, "Open Tickets", cathy.Groups().All()[1].Name()) logger := &models.HTTPLogger{} evts, err := models.CloseTickets(ctx, rt, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2}, true, false, logger) @@ -354,8 +352,6 @@ func TestReopenTickets(t *testing.T) { }, })) - testdata.InsertContactGroup(db, testdata.Org1, "94c816d7-cc87-42db-a577-ce072ceaab80", "Two Tickets", "tickets = 2") - oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshTicketers|models.RefreshGroups) require.NoError(t, err) @@ -385,9 +381,9 @@ func TestReopenTickets(t *testing.T) { // but no events for ticket #2 which waas already open assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticketevent WHERE ticket_id = $1 AND event_type = 'R'`, ticket2.ID).Returns(0) - // check Cathy is now in the two tickets group + // check Cathy is now in the open tickets group _, cathy := testdata.Cathy.Load(db, oa) assert.Equal(t, 2, len(cathy.Groups().All())) assert.Equal(t, "Doctors", cathy.Groups().All()[0].Name()) - assert.Equal(t, "Two Tickets", cathy.Groups().All()[1].Name()) + assert.Equal(t, "Open Tickets", cathy.Groups().All()[1].Name()) } diff --git a/mailroom_test.dump b/mailroom_test.dump index d0defeec0d5258de0d3f1b156a680e2c50b28cf4..3e39779eb42107218535f89209ebb1c772d08ead 100644 GIT binary patch delta 80034 zcmaHUcX(CB7H@Vtd!Iu|CB4#nPA{Mk1W|fypaK%`Vndn*D-i6BW+Y2RDOc>2V3e^? zg1sOF6|RC*yCMX!g2MYv*(col-uL(;AA4ranwd3g)~q&j{R{dZsmVcYR>DPy>_6b+kuEb8j1#Mwo_*PM7@>93*y08 zqW%`6Mtq<)T%T#ZsCiKni$|g z|8mI=-Z=&r^w%#aGt{txf%?ZgeB-HkFPN)pgY`?gck$HR)jL-r3Wib&fQYKM+j%ut zUDc*OFEq)i8Q90I4yP3H>TRFe1)}=%-c$6N6%}rEB*o8%k$yu-{r!Ck^qTqo-I{31 z0A923k^Gu-hGx|NTCrHKd2L{>M-H;4Y-mnR&jGFLKk5ISUUTZ)TuIqrJSA9D*FURf zf7Dn1=RjMpF^0M$Pt+F=`bMwmH$oMJ{57llXV)C+lv;nz(Bpc|b?3Pif%>Wu8G6mk z3*3TW{lfDOX*C%m-GWg46Bo?TYc9XoEeO{KMh5ko+1=IfLy?pyAAVzge$By(jGBVc zMfHsrx6mcgLeZ2yytZmq-bkYXap+x?9CLBm9=503KQe5+8PGPYlIFyphOHas@7|QK;yyGae5xLycci9E?S3UTft%{>5C1_13 z&Z?hTLyCREvHF5XKUeb$$Lo(jKFF;})DK>Izp9D&>vt`mqPmL&>PI|R&v%MHmPq(h za%$$R%CGP6;sqQSMe%t3>{YjlkGMbRf2nSnAQ}E2tABRwKYTiVd_+<*`E-ufXD+&5 z&#d2B-%6m2`>`_FwD5I3uijeMQlSZjYUaGwuD^_pysg+MfKy> zhh%La7^;74<4Rc@z!n+WP^xM|(faG(-0XgYY4RUNQO#oqGis`K7SdzuthD;tcYYHM zV8;Zg>UgYX+V(Uh}2h zKGi-Hs89d$A<;e_hz9Fd>>Vz~9uNDYDH(L$y=I&GwEdUM^i99+;JC%>V!rH=zz25Y5j-DLm4K$MrasU_1x4VGrtO!+>8R(H_~ z*?dzgRzRT`E!?WNVIO$3vsEA9?|j;R(#oOPSP|NCou0wY@oHtN1*lVYhmp(fZJ`b4 zasy)x#%eug3CGV`rKr<)?Q@G-O0%#j*=&V_6Wm|2HoO>b`2T$PSEu;L8 zv^2J;gBFrhPQ;=VXy+-Qv=(M6&HDk1*m|~Bz{k;n4eg|LQix-5-fP>M4ew_#(7Kl> zPWb%+cBGqjljO!kB9YRCj&{>JP<1(IvABmePc=`3NIOf7i>5tfcvz)h8=>Zx2+;gi zW+#S)9x28fOZWqjMVr6U^Vr#8tynO2EDrQVqL3P6K>tt-q?Xb!5KJi$HS2mMQGlh| zO6aCDwN_l#P~#A-J(VtWGT6swXl+$noYR>?DPb-8YDeUF6Ttw(cqb^3P#Ea@4c3a; z0|T_tsxTZ&>A?&AtoR)5S~-2M0gDLu#R$%_A_-REKmVA33zZM{O9E(RA5 z$D(ZD)!Jsk!eGV(t$o7iKqIDWsnqfrJ(ntWXg;cV)5)g8HQJdqb-y~aX|h(wHweIE zl%8jHrz11844V9uUO>~PY8|QcdTj!wtpJbUvrg`?SR#hrm+v$?u;J6Sfo@?0e8~%G z*%Hl>cvklSm!n}zD!s&$LzOpRBLQPfE=e3yE~4eT%u-f;qt-{_iTmRz?L{GNx*6+v zc!qYP3m#7?q=n-^A#|HYtHwa(6mwcL-jhj+aNaOF)y7KwNYwrea(oX3% zRotZA)BKfMtM#F#D?I6J=v`VwG{kCzDXqlJVN37U+NchM7(2SxDHRi7Ki{i$Qj-q* zF=-F*>>Q8yS;K=`LX9gNUpH5>9%dX1QS}O=qg?A|x>Ox; za`;;Jq1&tVQX2XQ1pWRMMiz}*pj|Gf7Yk73!&(oyT-_FFog~2FDcaSvZ4rcwfbaQ$ zHjs*bH`7?}hm(|v2UvBDHc`zWmPqMDb*9m-dHEUeN#2Col%VQoP${?(6K_Y=H)GMn z;D*-dsWoHvwWeA3L3Wld29aA%(T331k7``O#r(jWa~@ZVAOZLQ+5X40&8mB_WFgI2 z0x7_GgMG1BYp)0e-DdU@t&5l;>-(fORxCz598cgtEqO}IXPcI4$JL_6W2|AhHc4%$ zM2rPjXy8JAP=yl_w)Saluxt)p5E5<9^IA5`e@?qhf<*igYJ5Q}WlNve)bSjFwUtTB zS83Vwdzzlcw3QkuU??|Ds{y=eRT3CtGJ~e48f{owofcL-1p_$Gcp+`7$HwA^I^m=g z8_QRlW~8#Zm$W|=(omSKep%bgHGO|P5(=hdaWPi*nwG^@GA&z9EE0~f4_<>9lThJE zN*;$wFZE_p-Fon!&<1XMLn~B6h(uD-so(RSEcWsS?MtZw@pCqp7q(%mH*0={IU1+U zYcc-gZ)tz3qIiJHa*bT7&bAzu_ntODELl7Pj%iC3`Bt{5p#?omn|{6+XCqD!IXSBO zK+9#j-`5J%IIw2e^7&Q)!wDN!c;c~?657AkQ%DV4G>Z)E3Jb-jKUac-{H(X z-cie_ss6rzW`C;{)Azmf+Zg`0KyHu#WG$4~BiM7*KVXHqhC=odek%N;rPh{PUK;%o zcF&~WwW6A3#bq@MzAK<@vdW>KKEie!`h&*pTt7}KuIO-F47etWu_Xe+4Nw=ba_Nt) zz%5T4AfVE5Ub|-C4vCwp4{5K7O&thCS;f!V6iFUGcGoLMv;p!f5R9(-MLSziClP>@ z9(qja35fuBAe(0YspYZ8-?X6$1Oj5_pAag7aWDQuv11|-3$XcrX{*!_>vRv5~jl$MJjBS8VFYPH@FPtHm!b2pFnl9p;G)$ z#fTO9nRLdRhC|~l+s8Vc(&7qpG$DsjKu0v3BhXglngKyEwHm5TsHt3?$MCg4%?um* zJ6)fs=z`NIwYQl=A3u$D+ukoA|4-0CpRn|=6nHem?y+@gi6sKj0Q<+$d#lFbAnV&g zPgh@&2piQ(@1fd7LbUu$vyh7CLi+A|8XM4`rf0JsTkFzpO9UVczf99tD|jr|!VG;J z#})7gq9N+{zEN0ncTp;9+eUwf1M%VjP48>AqZ1mCVpX8@L+uuHvNLRl!CiD^J4AyqR?$tDCV4CxjId+f^&&y$STqo;-3AHLy<8va zmPFX>fIe7$MM81b7}7@yUs{aI)EpW=+RA5x5_%WGGbj}DfEO<6rC+AnVQG(_p_UII z3D&bu5+`h#*%i89&LIL@X3aS;n4jzg!2^P7OYAM*>tn#4KV{N9fYO5sN?=K7XD*OARp*U_CF?yUVYrKf%V2)GtsN zaR%d9nQphCqD!!uxBz57jnbtJ9gF${r0p_tSm~v@>0(Pz<1n*WfYx53@qt>@daRzw z=8e&h@i7J9$q7>VZX=s5xlF&A_r#01^bG7aGO2h3HvVx<%jENE@bGnciv zTF;kgLjEx8K1o-Ox{yD}9-pko4HLG7>*Xb1oP-Y z3+6!mD7w(J*>kt+(nFHK2H-{`T2bX3y#;%JmVS-G2Txdgi4QgR%6?{OA$YQ_T zsedFjl~^z=+~A~*!e-ffk1mzocnktO^?rS^;Ffp{jJ@^&UHLPxz+k8Y{{}Ob&eg#H zT;+-3(5;@YHgy~)E7#Ii+1c#KLj50wB^;yW7n`Nr8L?@(ezjclNH9d{WVNYXV5Qa!+?mf{eqF0N4TaeLr}gs`U?@OUW6btK zbKxg_=`uZ?_D?WciKB=g9nD3o;yL{~)ed@T+KYNoP48EQ1du@6p4UAr{{@$Kqk%X} zTd9wdO~43j$|`-NbQwosJ@F_7ZLfoL_-2j%F9n68xpJ*OMbab+11gi!s?2P*r(Um8 zAULvGSDB^UxhBX>OV{ciI<-#EVlTd;pO9NQk$_*1yIR=?Od^LDHRNaE*YrZon-GDK zAlxGhR>8A0?R8z)1%QaN`LF9-p_CBt%xG%>aqJBjA{=EI>s^dcE7;5pfETP1z+%6@ zQPsiY>1Uw^JxlXOC9Xh(DmUxpLUx6rJ;C<`zb6fPPlqD@I?jZ;w{??BZ!j$?c~fsm zQ{L3mYd_Ho>4gTp1(m+3ALPA&qk_!)mfl&@LUi#AvxLrjTaGOj2EnJjt)DAK6AK69 zY|}d!jqDIU`XcV)1m2x<)FYRTQ_5ZOWxOoE(Wh=0#3c7g-$lx@jj=O1Pnnj zo%uch(?3*{2nQ0({~>x)^9z9|=6odQ7Z1ZwfExY)%+pzs%S=OmRLw!EycQI}2} zM2$jh{&u}W(;~F-SF41MeB!o&y^~An!<{_VfGYk0)Hgd^C`_#lO>d#KVFf$&iv)S$P~^LpI~3W&|Ix>*!Uzv! z!Eu;PSwo=H`*&iIH!U&K>B2AcUEZJ=MhMo-lS?tj;k#r92)J<>!vk*Yj$Qf)xqk6j z5R({xGbV9tH-v%@vPzH;M?%>i#Z_?}oVm32c{7jtgY#(Pc68YEoS8+v_X=Jrq7h$1 zcuec6wXEH%6Xtfy+lZ&Jy=rc7b--sNJdTgIh1_htPjNGRhGFS(tXOTfWXtyJcdKzF zIA1Mng%fwkL4C4hy#x-JO<(D^OOOOaSF!ZzO$&NF?DB8)SaK1dOH{vt*}wj+ntcM2 z0gHgy!!CDB_RF_=u}1$SJdPes(DbEnKm@*544;5Jt^6LEtzhv)#Gm4)wa+*Kmj9#v zv?zp^4z{T9(y;?SVPWJJiU--CpY^x~0(jrX7FvE-VGQATXgI82#o@TmEzZiD^h$vW zUN-LW5ni@uj$#Tv>=eEPp@5%`o(FH#$zS9g;Cc(;kaAsb9yZ{ZKFHlB2v<;G8)m%f zS9c@D5^T$_5EPCSI*`d)x-Yl(cUhl^VZ)dFt}l}liu?UACEyn8$PWLZ-=zxCVJY`< zl@SWFSlwUH^{^4{{t}b>>$n;g_6XNl)YF9g6FqU~)uJ_qY6R6Ui#N(-&ua$M#)w!6L}aMv zJS~U5)(vS{;)I9mZrprWa$?G78b(m_#uRj%mfe7Ln{OJfTL{h$)0m|BAfEZsLKsrn z41o0VxCj$L47cJBHC(p9W2oJZEduHakCEuAr(;~E7zb_grDtf3*XYg#cdt9K2q%0J zDI9TrC`rprE0dMCFop;wjf4N#oR-Eki6a7QI9s@VSXyhN1S3?;htSOQhqx;=RZb!v z!I?BQ)lgzFf-Q0|&44hQ`k2Q-&uNPQ+&04nh7Yh`h7sn>vS$Uxv?$XZ6NFcmbkTg6 zY2<6v@FLpBsB9J5n{C|o*e~tc7@ag7ftZaAKrkuWt%`?f`Wv1$wQD^s*^Ai*+>l(K z;!bpUIEHd6v?+v~o|~t7jDiYzbgIP4r!HL~E^#InQd(CixD9!R!&38&Jc%O8w`GBG z2It)&o6zTjg|g2?6zcK|g$7O-81-UrCUAgvg7`jMBzu7Z7sX<5X9(+3Y^c*Qf>1=h z^n=uuppcIgUI{-dC^N>$Ef&BQ%a{I+w4Xf=Tin*@rcuv}y__g@KZ7XWwv%1JzrYV1 zcrNl-X?tU=aEhT2ZU(OL^ov-K9X=3cTZXl-|ax}_LbjNb|U|)#&LuPjGX_RM)3E_}xfgw!3{>tme z;SVj}jB|A929SAKPh%@sU``HBgL&nOngOW3tICZkIe{RShlkW@&U-Lr$^%9RjaCJ1 zKK<1}JBMxvis^GJJ&GAsFZbrNH9@o%qBIZ>a??GN{Lgq>v1l0liS5rV?=YNpu)N!` ztr6p_Bwr(MgZd2s+CWT>2G(_yRmR*Ei-zJjB#&NTWzn6xbU#&HY*|!!q1A#OOc?33 ztdCJfPr&x3H`*AjY1sfoo~skam9AbF2~tzSDCb0rMWGgU>}6zXJ}CE`Xu*h|{^_CT z(51cIzJq>tOK&+Be=Gt!fBzW<*Ame@g8UdT)M)q+&+P-Az?o7u8hl;TS2d1A!|bKL zhEUk1UWS_E6^a)lIMg#~;g{YlR^HE$VP)7GJgO?J=EY|jQoleUpYHbW0oiJR(MHol z30gl1xcZ;1a78hUOl1w9ZRGF`y>kixRu6QCk%+R72O3!#ef%q!7Mj&mkXJj`onj!! zO3yXK$p@O?1fM?$Ut*DhG46Bb)+);!0^F{+h1nGvYH*E~TdHBmu<0kfnQYcj5Yroy z5;Pd5hMUmQ+F_z2Zl1zHG0doxd=Y{X)MG#8V_0K3SNXI@Zn7(Q`5S)35><#A( z4@h#`kzN{W1gSFUOQr6Y8d8I=9Bri1;Y*B9ILE-GCs>p3YKSCF-CFvzdsw~!foMa_l z9mkGCbzAmE6_{A_Q@0v0O34HlDNKcY*&ddlhg~`WXO_F17{dI^)sjac=dx(pDkvPg zFE`HTVj|#=Le2>>AuPM$6XhX@a_9!xwNF|(Y|9mLxlhZ7q5fAHC$zt)@6|>TUtXRG zLziD|Y(bR6e@(J1Mi*XV9QK7K`LIjzZzRo`ZDa|WHs`@`T+rwy8K3$pUBHV4pu`*w z(PP&dpJ|h6%4DO63&uDyU{W058$WH*_2ck|mQM$Yl8=lu+B(@-DFm-{B8=&huUbmdb%n@o(s*LZoKUqa+8`J;TWy752HM3nX-^|;L)MLfcgeNwIY-glc^-rQGn#z{@-aWBiBi8I%iu|(mXcp4zsT_&8+ zjSpdk8fO{LYUOnEY&EgdG6&bqHjes+x;Q2^k1y!vm>j5v;)tN+KXcR|gOCBpC0V5T z?s40_mTbopNC*ieh3twh}`-z2y*uW#uL6D z-cvm+P4>W3J_sovooUL0##_EAjSAxIBm|=S|C8*oL4UB3%I6w|g2hhD?U+2*I9Ky6 z|4iW+)I3=zIVz*0wwLB%C+6|tZlu-=6rU!NSsQfD0^>VvH#_(&toIMI8JqhCG zXl&5Kd+7Kgqflr9$i^UKW8_e{)>xtU+fTb{MGX!uQ0Jdo;~n1v-zZ#7E-sOpLEn+_ zyzg1J^7gO`EePc+*~#w$zxZ*B_<%OOpV}dda3sAQROjlK)RSmuHzvm@j% znwA+gKJ6DpyKT)=k0)~^I3V*CyD-~NgK1845dAhxH_~dC8!fn*m?h`c?kVFU{p?@p z)~6J4U{ev28*=F7r;KOy3BSg2pZP=~PM&Z+LA-pivPaC`SCs6oIvQXq0eByh} z9n|jA2GyJ(AO$s-%c07O-Tf&y6W+=6T~yU)nK6vD=#4LEhuc=ZOMR2x8B3YWS!e3ENcr9zqKHp966+pEoY_!o`7e zP497xM!YDO26kmKf#87`jV->xZXdHx>m!*rKv~v=_W(`1QA(}s-6hm%khHDh{kVEBAwri6k&Nn zSU#Vs))_A)0p3aih+uq_@uQ$4o$;!~$m8yWxO)-Z{;KhEW1uNl94 zzZ6OPDJjdF5hHbqt$*FPK-0dYwDoE~{cp5=#CnX%ZTxf+|LH;Vz8j2Jk|57E z_7_B$A>)dPZzUSH(YPZC`O0a?l96#L-DJFm@$A~9wgv*GggAH+%Wp7>wPfS^(;Fva zi4bt@TgF!3Pj1T>Ppd>W=lyRRb(-$%rQYwl zgNj7xvUiPFd>!_x&e&;9u-FJU7to7uVcyfW6KxETHQv2jpu+Dm)3DyBn3c-=O`tLd%wQHw@Z$iu)r8;#?d z-gO^!{Y0|SY2jeH`V-?hU)p{}s7}p&L=a?;ermj|C-&2!PhE7-P*OiL*7?S`ExI+2 zygANG?LULGDBWS)<(usS_BahN8SSOLJB;P}zxUIeooZ;!(Oi0Mr}2;P9k+e?X+uLK zclUpcT+MgTtqnETB9=>t<>pZN7se`m!~xp-g-anMydrQ55?y;m~ukE(_az(b_xAEbv4%2`CCSc5eOjjej@AkF?t35MqQD!ulV zu}Q!1Al>@4TlYUv)JY5M11QP=O>QfzL-Nb~55?~J$f z-@c-5-%E_Ja@`0iUH-js(wFhIqTHh9IW&hzX~_@9@4m#h3Z}*-6)a#x%3k}?&^3MJ zx3u9WMO~b1(0O2I|NfJa(DZ)aQQ&9MF*kJoJ31<~-6`uKycQqEaf^tlkJkTeTNI_MhL;t4mA0&@rJ(PJL-DG?Gfo1h=vx?HAjqkeb;wX(xhq-yd(rKbLf&L z<7w>=I@M$pDf{-c$R(Y5)Tq<5zNaHc)j*p=melnZV~rm8p6&j{IMf#In6i*LnEts` zOK0t}&Cdr*wK@?`35zgg@pw}v*}(PvIEmidHV}iZ;(y7-jvC>Xys2CNRQ4y4o~a#RvP(cnAz;)4dz1GG?WOl+8L&F zxx%dVV-#y!IUQK(%@~ECSQvh$3Q5fB7Zv}>DZ!u@8&f%%+cAF`)qktiv(u+qu z6YS~R&C3-?EY4DAnHg%TVChm=s)$tft42Ga8Nh|fs^^$0DK7x+5_cmKp>?n z50G|Y_uggpmkq**K5oC;yh(jw1xMU#KBO8z7mo9*9U+!;zbX8oNdCmxH|qft8jWy3 z#Cgv7<`|NR3m-C7l0OopXnd{NhN>%^4BB|mYQgTCYl_G{mK36J|2%VoYL6uQ?i4r! zl$y4{9O@QEFi>7dn;teDda*y!DXNzvai^)m3Cpsohs~{G1VLz(z4%=Y8Ca#&gPa03 ztwzxdk)wzlOVccPgnoO(oG51+gaE-9t7VTt#B#ce0P4C&)gs1&Q1H8oa49v6b+XvJ z$3QdQCG6%Pm{?rGsQ#CO1eL{#i4)x0IgAHRyRZdMnD2?M5)ovgUADxWA{xVF<{T=* zgomf&YQXWOE`!A3e(ri&&E?BY<*9|^4FN*LP|MlAf1Am`YAhuz3TedCro*PJFlD?i z;YS?yG8qg#e!J6#>Yg)Ay69P4dFcF%`Iek9LS89n{WlD9GYXOIGW*6mZCqu_@E&Y)KgNi-ZaJ=qcq}%1 zjiMB4ID_->D?NV?#<<`hQXzixA%wE=b|l{|o8hF1TP4&GKvrV6d!5b_WMT^|k9yDi zzd`n|HA(CUceYtJdk^K?T@%8 z@bMdFovMH#cm@SFnY}4{Gsv`Io1B1`rVT`BvSE|yr}m8|l8a_Is%*hV^HJFsRL1g6 z<|;W{9%~B9u<*$SbCMiRC>~|g-ZUHCuP{63ZM8$;FNmgert?N2?fLU}%=0-2H~jr9 z@SZtNeL?Qg`{woTm!GA7C|M60B%H3}n0=X_qFa!Y`0g**;q$Y-ZE5~cTpr6~^n4z(I6$~f!{vn8fRjkJ)3^a3SStGbKe=~$TsN>#Li-jOF zdE}bz-3C^v`~-mc?ZBniZg=+_wqwdARQ9{xj;0+nThO7;%vQAQQ$&>c2wCD&^9ebc zSR$M;5$JSkEuON)k98W=nUO zMG6>Gtl$Cc1XbOvd1(IkW(9XZWYF;4xI-e!TK{AA|7T79LP1N|Z=d^=7Z(Li)wH36OXI4C+t#1I~^u{?Mlt)1v;LH@6h47d8A`Ksz0 zC+}IwT2}Wpm<5{+&2U7F;eqoAO}j%gsneIZ8FAyc<|l5u1gImb7hK`-F^qJoYKZgn zQXUA8ENU{mRQ?s_vEU~poV@=&*lJc3lSykb)2Q)Ytrbn%?0{36kYD7#Uu(?=hlz0D zXZ~Ymu&kdC&Igm2zH@Fphg3r>9k4 zIfXRuu$j+_51VsUN8q{6$!bIqj+lJ~cfdIkW@SgE)&TM#J$JN>;?MgNY`OA!PfPmg znAw)TGjXP^$+tREond5C$!}m5Q6Z*u(=pRhJ>e?d!2ia8UB?%E!9YxG+HXj2;1^RE zFmzO;g|RZ4UqES3^Zzt+*#p0upDSeXD3I|Qh8nRgFh(4~m-55_WO>~Tme_CtgcX}x ztb*vF?oTJ3?K_S`RUCkE?4%0OgjN4--Xi4&;>_z#njX0=64*n1L{7mgJ+1piE0Bh# zp_F}yOrS3`3y~SFK!kxREK>|R8Q-=%g+Y3x9JFJ$ zV^v5jJPh7l-a)y-n}meS?=CN#T;}z*VZZyVbA(jKZ4g@euqT%`wL(~OYD-I=>$n-o zQzWVjy(Mf{E2~`f4)L3oYF(nfB0)AS&5~z1#6}<`B2x`cq+7EU2#)(XnU;)4!T}Uv zO<9&w!MLeBTHN$txC7EsDsmCf<&5O@59F%mT2ihwA-Eu^FDV#qMme$jfYA5oj!cfqWg-~Ami>DQp z@N|UZ<<=@OaCquNY<0kriW^cLBG5mp#(QyFDr}i-ObF{Hcr*aLu!pP}eU-N*t$NhT zWnYA?uu2NRzN&TaKaOyG=ps!_`siS=A*Hn>N3X0O^RBbSQcAyrX|E9QaG??VVOta@2kj(!Z`GCo?JmF%%e3v+oGIynAcwwiieR_!96~I z-vMf0c9zvn(SkohAPNb4rieB4w^CJ2l;1HtbRV)9P7DBV2-1aMS)55j$=j8#JqJ03 zw+*z!%>oPyHSKv#J63eAVkI2%K{k4j6?C&Lg5oI&nQgIVuw*grr^1sEJh>vkh7Yxb z(T750hV-I-FMAVoV>MLY zMt{QQ&SNi*u;l$SIINJud!98xkRA#5$bvW@wB-wdIzKyd0qO+fMq#Gr(}VATVAo#+ zf=Q5IkUcpPf<%3V*IjH)R`8InLwVLji0Ur3ZB}=Q^_&EYAnRn@XvM`y&`w}iuer>E zTJnk4X2oNz`xG3u)T+x|dwPtKBw7+WS4)!KMw@SRLrWYpv~K zXmK3Iy+mFIb(w16qTaQ(O{r6?bg7p?Ur|B@x5I!{T!#SQFt;l{sH2ClERRl8e2gn3 zT=wId19aKxme6H+#z&L|u9xzb`^I8y*$t9_+!>YtzaqDz9qTzmvNu9vGR@$Ww}9P$ zlO^t*^5hQgtvF!#irCJZE#a*|A&&W;BCCVGXo)P2*sTzYd~&dBxUGiNjxOxw+uXg! zGX?tc#EmZGp9S)WLlit&NJ|TS737}@D*QePS+qN6S|TMH*9DMoIxBgc;B=@+CVtTB zQePG|-l6*#_J))T@IUdaqpEJcGS>PIDkL(hz0qA{f6)8ozBX+4 zT{!*3*kjm<9c9KxYS@>-D(|tRivnh5j31-8BtU6>(Pq=VXv4Pvt`CG+tNSf!VB(9P zD5>`&`C|BkxXL*90n5*EbB|RJBC0usqhvVdu>TdvsiudJ=Ohfw?1wCIQyS2)Ye)S* zp&QrPE$RDt5N(_0TEd6|G`uPUICNVYyAXzA!vZ)KHqEz`DjI>)f1IdhsJ6J60-7)H2`AS4C<3a8*8;5jSvAGNNN z6OKYF?<`YEiXR6{N>>}yW&WIwxFkRyUg67O&n>n_NTgA?5Klf~2?q*BfPEG~c1brX zSco zHOlrqhvgGY5eURs_ZQHIU@OoXJGOeIRYW(xXq^%e{s^2!E3JMKB7i;CLp=FH<*SiT z^XDo{y1U{$N3o}@S$f>gW!J26Suy~kcM~=2y*hBC95$#?%7-`qq+QB-y=0}k<$;tA zygcn?s{^~e-YQk);A;WDX%h6|hLyzwCB$IC;(jcwxahFg z2R}{itCqTj7LEom4N+76I-kaCmfi|~@Yqi0f8Yv6ig zy@gyf(E>Z5OxE}}TIuZ61}jU|K-LE2`z{Y|LNAq@EaeU2_qDspnt8KfHl=RH7W}9| z9l*HrACQwB{H9gPy5NsmEgUVCZ&`!nR}3oGvbQbi>50d1$3=TrZcA)-_^i8%w_vF5 zJ#4|5?#}qZoC92eLNpR%5^y zzeu}zx0Olb_P~G9bB|(9>$>*YR>GxI-NyQ-4gbosX%?}vJtRGyi2!ib;IBk5`^ssF|T2Z${Kh62s zDq}qk;b7;B3ETmOB4t7Gd-;e5aPMu^5wL5IBkGg_TnNi4Y8nQ?`SwDSvdBR21Oq7~ z>*6cO`W>@gc9)4K<)c+D%l^%}LUkF82tx5EeAtrTEorKwWi(k#RexCyZTS-?O2(hc zHU)rqbH&8n7*vl?w1GoRkRgxeU*x2+{m117<4Xj5^RP8aN5Lqc`nTny+H5a8;8t{r|QK1NmTc(}3(>a$d_y;0H@H(z`v27=z#>$1jWx#gg5usYmllsaSkCg5h z87}N<9(ije4ugpu)ji5*7L4-eNBA`#T3zMjup3N|vbBT4!7MHSZL~a68%RWuC5ne- z_=`fRR{*?^?U6zmHC+1?+4G^!Y8gD{yMn;mNDQ7#;qhMXw;7R}dyXpw9>Ez{GA_09Bj z;5EEyLUqTgvpjdGLWuq@5*&r;RGNdd`B=7Rn!pwVYw|_mLu_1*N0D0P0_DyeIT}CS zs7X*o7f&0inBf$%Se{2dgM#t7=Y!T_SHQI5x0GZhJ5}H*S0jf5 zDaiY3OM8n!sH!55Fr9!5iSoDyh8l*NDGCiD!{|GoPTdFeca^UN58Hq6rPi#xj9`Sk%1BzTg^RSP*dSrwM;fs(YRB1gf7|-wS z$!4RvyG#j<0-f@wn&@~BPX>Fd2k0*LieD(};t{9TRhA@H_*M^!qhZZJQo}mU=*<7IUz@^I$OL4EKdlXD4nJdZ< z63Hk_;d`x&ds?%bV;9fOgNQ`gIr$8PN987n%& zt9#Lugs7=K6HgxHoZ*p%0kY>fqwvR{*y=Nr&`8r4k4AMMUxlXy8_-wH1mGdrLkay^ z;mKidR3zB}V!oS1)Z;9V)Z75h{X^nusisYE!_FE2mVd6l+a`+0Vh{PERCOH~uiM!! z#iBUW;aK8tO*OuRP5b0P$Pn-XW)C0LzH>Zh@k5k<1*GP5a*(I9;3Ni4>Z~gHB{42K zb`8c$Mz7(IM8U7EB8ad`QXA<(pn$l$<_rhVd^AjoIJgOL!m1kapj6)xo{JR*oUuzP z-F+W`|F4_GFk%x#`>69hL9wsmm>^qlfoG;%@kEp_47k4863ozxTtdKIhCrRD z;T~=F;Ybhe&v7o{7ZelnQK-cigWwlm?2!&l)cAo-JQp>5uY+f)F2z1Sb_q}l^#V^b ziMLUy{6hp;uNm!;`XL@ai-LdolTmbX40xnrjLY*0+#KvFYtqJHFAuxSr8#`PZ2maU zEJ-kKQ}}s6p_I}lcrw|b@mOxLHh%cn7EbUe69-{^Xrc%Wl+o;e0j}a-9-)cCbqwn& z%H8{73=XyA4?n#-5d)EEaK)$eO2{U$8~8ry$$jRf!rRXpuJZJEYl11|qK0+9##5;Z zag4QbPaUAx-B#+QJ(LJc$DG8Fpe!UiFh3q*RV`Wo3LQmvyadyR2 zPqE}CKYRk>jm$ZRoD#NXny0nu5QGjWPy0cr)!VLv)IUBwIadTsBeJ^Tdc5>A`}*Wa zu@V9K;L|)bWaf>Yp$a8ZEhD0a-9E$J_B?hFA$A4i`1vksH70imgR4%I7 z>|5L}@bC*Z7_R7*(!QHLUK(*5c*MC)?lQE&+XAY(*Gx|uyXAJ&fDnE#Zjik?Q^^%D z20uda(o+FlHXCpqW-H+dIIeApnhn(ut9Mn)6NpPG?r{(``FD7Hl==V~9-ZT4+l;r9S}(LL^&&Tqc9=YIPf%DWGEufNw* z#7W0nL?AnP4Xe8k$CwhR{6ek(&-o3HfRsD{?LuxZ$ZWiowhD+Eecm*7=Yt9nVhLfs z@leAW9`Y=65%ExjD6F2RL}(%bH5Q5!e{-tU0?C`02ULf4^3AEL*4}hBd!eghB;aCP z_ORzNtt%H`0f=2ZTum)e`I9vUg=LNSe!Nx82 zT%>3P+24c4FZPtywuc9=@o|rr{rrUI2DSc3xGCeZdCd|}8Jo8R;z_PQo+f;LDdeXV zV(@YZe*zxXYR7!bK|@&%^`F0}ODHd(C;yE|yU+}U7Qx9xr=EgJ(q}ogB5GTy@!{^~ z+NV61tEGn!f`?az9ybjRvv zeV_OAa_d5@`UTI;?pK)bg=?xSvE_LhZCx%4#GulQ(XVtyB3O(L<9Y^r+mjNt-xwUg(0uQX4Ok6j;#?2 z!iNEMpOX+@>Ts-zdEpCL=aDuX-tCM)jvz3U$0jq+D1{lyes@twRV7wy_Uo(AV$@3D z?J&L)^ZQ^Qk9j@0kMS4-F2hPscsz=XWptgzU-|N|!|Ubt1OK4264G{H`@!rgU}HB* z1snSZr*a{kYyb!D-vkQ2u*st$O9?!8T5e{sw9N`TU=!^6H$5BFs^E5G>}?N|9%WpMi*ZP2CQ4aATvI8^T*WYe>YrJfEN&EFKVJ z@w!Uzk3Yp}x#&}+%L6y90`hy~Fc%E56{Ui9s%ln!2xWgq}L6jENYmU{?OM zVhntR!5E0A70}#o!9d%-Q9OZ~2uuIYJ+Z?eR-u4n&wejOJO(CA9ohJNZz?l>l&2*u zu5gI?e}b&GFc{oGSrE3`(5aqy2yNdX^z!T>SDOn$q3xD@I?bUGhcUtI!%9m69%PRl zf#M?8A{Y*`Wlg}!r-;RlplRhXPu{v;pqEJq+zuIj4EllKK%Rpo{2-~ndGJKQuTa!g zIb=2G%+0@hidpa9r3B-njjuCLU<`h&&F)^glU`-In zE1(lMd9z>n+g3($7>kNq=lqSeO2f`$cq&^4JQDnh+L^NEglU(sJkyp@)C5<9yGUe5 zEIXa8vutU*qlW89qMJQ75+{pnTTwO)A9g2E!)80SI4NN&Bl^@;f+I?p!G81tTo4_B z4&2qZg|Gu0qEFLW+FjkcFk9XVkb+pq8J17K&b`;0Pgbfee7a~7U@g+@gldBQHzYlY z4*uSUGHkW~!gwEIbEZ8@p@V(KQ(WoEx!yu{WgA<#K_EMz|KgR696XwJMvmQz!DrG| z;YMobrW{-Ol0uOH`#aZG-hdEHn=(3(3YThiJ}5OJ-&Tq-Uc!JZ;x%k`fnCHq=ba!@ z&pSU^Xh+zdLi;PXJeVvmXD5p74l-^KhPH>>4{Z_jZ7Ku$VP$qVcTh1lyRDtgzc}77 zd!n8Fm|GWQXLLZF;EWKots?5v!7gAkI@*OUNSr;^$u4%AN7%;B_C8q`^oQ7ruJ%Xn zSD4M{Zj0B`ct=t8cu!jt2JK?@V8B+fhydc1!o|Nf z#4~Y2w(x#I901|auq}=p1j@ifU8yM>dAX%gaQpWWTOE}_#371fws0;14pwu7KU0S% z`g+@VOdxKn=tvN=ZLY~@eR|nSlMljVFPCi|Is>7*4|+@1<=7&s4eNQPExZ%F5Xm2X zY~capUtEQj9rm+9YYJ&Zf9b)If3)C6Rg z(1Pj)+huJ2V8x5EI9#mo!uH28*D%DEkvSA{Y0nF3(?)L&^AEG7qZ>7GRyABPd<@SH zu_s5U-H0!|Zo(IN;ad=C&UxrUcFm)iy!^3uu&oB1k8Q>Gc?d@d(|b>J#V|lSiWiRjwixfw2hVJUhltmqU-n z{cO`%;1v^r&cO~{Cf62&f+bW+YtI4k`i{43I#dNN99)H_;v|j15-L;GdoaBF#=CTi z!n`ZxbXvO?deZw7nma>2^5sh8#G(*c-idZVb{)fd^t(bb54wgr*^Woh@gCllN@T`x zC7x}&3QH!t$0ootMEn83ZP#$lyC%sAs43+^?kpY%Pi5Cl!T=-{V2_H0-F_{2r|w#` z5c7`3{OqI2=v;jTSlU#`4cQOG6W$Hx@BJ;920k7;%@&?vE+=Aa)^uA%(PK~q@JPiV zJWA5=8`k8n>uhB^hj47QlkfOVy8#=%?+q@75bm5*-6$nG_8)S9m(KtjVHEr;!G6C9 zqD6d#pf`-TMKUOY<*)>Vj=xv)wPWjVP2z*Yf6r~Ua`c3t@wey8aA2n0o{gC43g{3V zb>fuoH5=lqc9vWM9)gdvt+UZ1=8Z3$-vJ(w&!yr!>_Rqnj;&k~A)MfyWlf7aF`pfG zfcs<{Bx!XJHLT<=+wT@)7_xBM-8f@8jS{0GlklpqO(26<5pxOSt2q%U7!fFm9>}B&k z1@O>{=amdXGu)DRL7qt%EnFh)1RNW&5{(5h<4E+Iy-LYjfJDJ`K$S~J24F%bSKBHU z9Y_2~Y=HfB*Z{-pmxaeiMm7`Z9myo4t_1Y1W$YKur+ zXm}ZeEqWQ4FcRb`fI0fT;vT2SE+l;6RR{*Cuh-ckx&tVf^_^tuL&XKiZ5i>Z6y!W9 zB7hu@z*9)5KK>fGPeSf`_c|e47*q_X< zu-9z_9x+0=gILujS99Qx$-t$L2PE0P26@hKtXy6StTW%l5)OG&$xA${f>%B`Q@-#P z^np9x0vke(qBlrbVLxo12rX#dI}pDI-?l|uidQBuTRg~^LzCYH9pdjwO&K+?*B}Xa zP3qMc{*&*ybPQv&K=l{dU0kr@-IfpShqan%zj%Cc@heq$FDXD7TkK9^R$*+>iY@kL z4L2R_G)mu^EDx~0TOm+s!4StZ(I_Y%vwC!!&0RLY4WkPXW$g29cAf+?07ii&Fq_l1 zC!t^qZU+-4@kA(nF(8EhXZn_88LcCw!Jf z8ewxjv$x8H!5dR-ibxThI=TDoPqdnb)m96*1tmyW zJ!q7EAc-f){0Hp)Y7;ht;GS=%W6pFDR6_u5JV}B;ZGnAM_$}oOWjc`$|4eRlp zZOe38KT=1ByA}9Rhac<)jn@3+q}9B=I)l#tNpy$@UGTp1^q=f{O~+%*3%>W3(!ifp z6+Fvq;?MRbEfZ>`fhi&ROpF^#5U1D?F*V$HLgMGdBlbE$8-&DGIqCH3<;ZP6>!{lY z6rS-%?N8AMZh{u0kCDg3YNC6n@BPFrIx76t?nI4UaYtqLlU}6xPsDqMCyv=e1<7c^ zUv@gxu0ndVW+{%`>xv*!F^%b)a!BcjN*|7Ew< zIkSjyIy(G4fw_3O(DS$31UFv*6k-?u4SM@vR>_Gc=&X~rAN0qNBN2AXN&8)`rs|l7 z`fNaEVD0zb{6$wd;+{hs0w!gUxami!y3>hf12tS6Bj2xhwchzwYozApzzm-B}=e+#T=nHJ(=oop@B#&h`y$kvy+3_=@J)m=s5Qa zE}GNI>BQ9x+H@B&?ud`%=|ufxCeh3+XOlojrAP6i6rRD_{sWli@@$vzICv`P z+dFXcX-&4XxS6Zd=;b?*+&Dc~5gi5rTafGgj@Q--5&gWP7%txD^A(mD%#H!#G9qnz z7fd_9z-dLpzr%6UrNFsQqtfwSJd;zXP{p8`9Vz5QZ|dZj)GFp}O^@bdAGIuT@!^?4 zg|GDoRw^}>ICx)rBL;r>OKcYZeP#x2y$e@7cr8P1I&kH9y}CavH%0q0g((at?r@$* zR8HQucuVrjF5XOSXumjFKIRw5f)!&X&{3ckf4dFnLXPMc^<( zbz8eT>W%C$0-*zWvQsyjx&w=|$&bb1bfCIQKGFwq>t=PiGYV_}n&a_7&E*Vgp0jb(Z{WV<~^e`*$@{Q47nj3 zSsvlGZ5B-(rpC&7r#n?HGJD9fC1u{!+7Zqy;x}_?$S`LE7l;X@@v+q5PEg(q35Ri` zf4CE%7U$s#n2--Zvw+WG@}-!=g!5f$u+ww{e!m} z8%H6{0gDEPz!tD*(=Z=IWr9DvoJ$=qahpT49n##q?v#~Hr!K`_5^J~W66a9}+QS~+ z%F{9ky-hNqKSEAJCw zUydJP(MtK`Gwv{}m*nA(V@JnvVJhV4Isbtm@J(=s3`KdEY*8`6`ARdeMYeKr2 z!)~4AyrHSX7QYyQUm+YDUxC++^ z*z&3T2;2Lc?ifJ;tkpsI*O7oGXu%&j7$lG}Alo6&&8n$5Hh#Q53BoTW@-!b-e1l+^ zAx>-Fm6*!!H@aZBuXMh=&b@Djdoc95-|5ckW;j^M5t zoW(p`ka@SdxDkpNEOAf0%_Xtmd;e|Vdm7Qji*pTmxk5d>dyd--D#wLVyT(28V|a=8 zQpmnv?sPlG%c$vhIRn_#*_;a+?lY7E6N1AxdHg+pyW(W7_FW>d5wI1}&v)ah^WkDF z*l%;7|4{W2&7%dWWIQ%t%h_%pxXyt-LOMt9q3XA7Pm5;s2^xKm(^+sj&wm;&pYz6j z^8HxQxrU9G<2*KX9Ph=&^!p@6I3>bt+kK7~f?__jlHYqf`E>jNIb&2NQZA79)mOF! z)0}t^$IXIAoB=$W&7!IIJ6(xaFjRywj;x+H5NOpOaAS>aaU z!kdEWcZE87YHJLCgVMsvn=s=}CaqsQ#mvGqgT87#y z#n}U=OcdL*xp74R6RLa6oebB7Yy!wco`5N? z>^DX+u4&8MaS5r|v<#_uiDg_Rf;H1xN0(y1EqF#EK_*=w3uWgo9JuY(OW`2%IVs`k^O=#lHZwnyhub9DN0MEfNFgZK7qTkQ+WYCE>-6mo;{nt|iUiNo`^Z997 zfEL0t1i1XQqQPy1y?lQ2vjhBn0xunU3rw-(Q|y7U`81DFiNwH*?>J%I7MeDHT(h+g4>7!xtcUIXo|CQDHaRwBj`n2KeyFPO+aRpuLl~m? zu?lxc(04E98G;dZ*%s&M{}?QDzl0cZwz!z_0_wu8P6wU5Cm}W-{u1>4yfKL=ffW%C z^Se(L_*l>FoFD@Ft16JMGo~rl9#@(`iT{G`%0Pr4rQZhY%jWNJ#BX%LwSwr^_Wy9! z_J3_kk5L2{wB@7d*L*2P2Povil2N01 z={O5A54f!%d5`RM+GG3db(=%BjO96n&F>P_e&yuB*2<-me}Vs({b&y5B~;qQxfpMf zI3HSKN#ugv@|BARu7tBiZX&}20&hv?49(Lrh`w<_gp6?C7|5k=lRfG5z_(5|^|sI( zRD1CTLX7r(<8))oP$Ae1&PVBV;XfMCa5v=np6>)k{EPuu4T%M~VNZ*{S9?_|iTk~H zXL0tAP6d-^@nlf|9R9YV~;dBZ)z>^GZk{1Bh5uV zf_=*`E^(0Pd_nRNgDkrC7^uW`=9_-;F zpFbQEhyB?;JoGTuFk9l4C)sHT`b*j$u55uRI95DqKouvPZhXBN*83YJwct4!EuJ%2 z)YB?%&cUSJe+xT2mmu5WWjKYq-wS?&rPAZ1nO}PwbQ=KR{tW+-?9;fU+etM`elPFR zX1rZb!A^yQ#-VXKrVNIPs8|8vma`4u6Vhzay&8Q6#=IUaAN?c z2Vj4Io2TKBBc#cYxmzi5u;945P(nCmI_L>G#bpD)ijXNeQ^Bdy!Nif%TowUlh$^xO3%n%SiTQwAmEU$Y(vL^x3B>PUl?42 zLOr6PKzBLc!0Tf}2LaNWWEhta-XsGWvSzqU1o*9o3=p771D_k@pC2%c=`tPI9eGTU z3mzP#4@?zBg#iat7_5jR7RU#1uKce}i+X@#n(d;?NVtIZzXDY7_v{exYA#R+;lStt z3<_k}QV8(dc^DJiKM+F5Ux8damkiv2z!!>qg%#Ntc$(oF;j#sB3K15pMPMTnO;q!_t3 ziIBCS#763k%b5c-NtTijVqlCh14l>|0}ynwl9yEguYfk(S`q?i&85MbM=Cc6Mrp{C z|EGgq{b0<)GUufv#XxvN_Pm3+vKJo_p(_hPYD2&~3$Ka+OL9W)vJGJF>!D~$5P+s+ z`G0E01s@P8VButnkPGD%2qz`@#1#O))9C<14^{+2KlgaxasmgClG0@tfG|`(&uHEW zq{MS2NCBw%A_M}qjidlvPX&T{{tUoPk*p4=S}Q(-LsD85`HUfQZ~jz)*rJL7K?+Ks z1nC_$R2x9H0E-xqMj#)u1?(u4a7}fvQyDbDCf!tnq@K5iAua(g?FX^B5{>ho0a&O6 zn9@u76hQl<37+``rGSQt>>d=*fgr~WsO;b`egQpT_ts@Wa3$3kRS*GqS9Z_EY3?r^ z2>h-mSV|f?|ME$I^ZBv?T11WxWct6ML*POnBfLQGauC3oblx4rv>xO;_(CA6gp4`7 zHwKlC8Jt%N;E~8f!v;yo5^4lC49c~ccMXpr!wCYg>d2q^5+Jtlau4KIMG~dh7(pWb zbE9DbD9HKaX;9#b}dix(bed;7}@z`-MZKD~YWUH=;NV5T9>YdDC}pcWJ{JkJfndk*9Uso+UIqEv9G`v8A1N{Ilk4T5!ydN&!+_5jyC z7=YdZkV@>n|8fWdR}}!;f=6NRLxAIpNe0L}4qFhws=IeFNTl`+=zJvL%zh9aM4>N) z?%Yu>j0&gyBk4f^Q1JNwt|5PU@Rd&jE?N=>qXH(;KT01Y>KA?#2qA?BrGw9ciU@!` z0)j%I4IrbRKfKHcj$_~? z`_~%43lrDDAmAbPP=7#?WRiqO4<8J@$SeeKQ_|;5LWE(EH()LO3%wO7fiaASUw&=? z8u%LyX+eh*z`~?gQYV@%sPOH}~jY5hV8!io%F7 z8WMe>@SxiK7IV?2Fu2gV5(61R#|QiAe8qsRmZt<(%*^Ando|KQ85dcX9zHJjEg%lu{Du7%&7X|fY5Nr5m5fJdOLa_Cxo&alPa|s|tTM8gZ zfDMrU(EprwaCucAK28fSYXlPZqQ;-amo@Skop<=0nQFZZED%t?85pk`E*1#*UdS!* zAUxdc6-xgDT?4KNJyh2ajjxbe_T?yX@j(-)uOKEQ0e@3+nIA~p^M(_ncuM8Mvn8@pWXB!h?!l7{QOEOMb%10b+&HBwQ)v~KDZt!Ls)Mj#z-?~eBDpZZ=N_&{H3A^W06wb-57Gx5Q7{bv&fQL08}`IskU|^gSdQCA~q!=EC!# z{{b~xB&J#z;r#(J0Kg&7z#_A2`}ey9BCHMa5moL2M*|-9KzScs+AlK!XIE@Hq~Wq~ z=f&>;N{$HYgfOEH6LCP33#_VKV?e?KVB4MO@aLIeCF7caL!$cIWeGra(Ekmo)}$Q3`GohP_)m9%Dj3n?IUo`gSgslASQoWVDrLJ36+=-qYMM^yFf2w7%61{$Qv1S zMsb{#_JflK6)QkZ^?yZC38<;w*n_CUb^9R=C=3z?c;%RJ;M@WN5M}|O-XlrS5P$@2 z3>EJHKY}-vz9T#AWd)8^R6t#R_+m5wsE4o~hOnNGUkn%(5=eS8Dn#xNNYVN7#Q;}w zP$4jfv5TPsA{g-1z;kq0{sV;rY}!B7d<C)2w?&=7Lr=6VG1&PzEs7)1v=q#Mz+-%u)0wQlV_>tlX}k0hWZ`MDG}U4 z0ff0iXCU3cj|CjcD7ob}d)a4z16BIR$3_pgaRPEvckWV|1E>|ie(i({fy+5z^P^G` zAe9^#^sB%x*Krdt%tp>%)&=eWs{E^q0?{)MSwHVDcuW}?d_*#~0U9@4INx2+O6bz% z%&;sWX9l&$h1@|DzjFC;j0q*bXEGtTSYIM*vJK%D@r<1_|=b!S&sL#gR4wz|~X2)$W54^WFz> zlgxd{MOY0r0HoYOB<+FPz@7q!0r0tNTmbG5A!P8MKHyrG%^zT$T_hvnU8t7|y$&JG z7ur!bE|eH(E(%AGbBHOD9mezMTsk1p_`*nU7+|-9<39l16F37M(3Jx2!`5T)ZBC9L z9RHJWIgPsT>91f0K^B33sao*7JJA1pJb7oR4+!w~;QHbFGo&I3dO`&MqYa)cC`X4P zbrEEu1d{F!$)mS|4qZQY01E?VnrTev0P-*bI~R#Y`;L8C07!5J6vrNXJp}YO7#G-7 zDA|IHMQ5OcV5*l6CN?4f2O4)iE5cxT7$9N#)F=Wz6zCtmi3cS_*yBMvfdl!{?*gbG zQs0+T!?mE7ZGlB#_^%{2;u#b=i;gb@yi}-j7oY+*L&2f{f&hxtl)zwsZ=;m}ig6Ly z1F(VflNU%c6nx+p2)CS%8b|=me-#7f-bnE2M~R^*#~;Fr82aI&>%b0B`=5N^ngKDq zhYUQfh>{s7W%DOFR0jTE0#Xp4o5di30xnMk1*+&pF*T$aN{9&teC}G1A;0Vo(k}X+ zb{HuDH()6_^cDC5AoJNia4Gv!qB0|II7k3L1d_H8z8(Wu{^Y1HzW~xehwIP-IzT=u zXf{evO8_!aL=QDo6eR?}e<*>4EDP>AT=?5i;5uY6I4H)600|5iN+dY(P)Z~w!+G11 z$cIk>+UtTH5f^zI0$kPyt`ihO4*@6=jV@GutWaQH&@)|@1NTY{{tqi6C4l__s1wQ) zSHc8E`md1&JraWhFd`D?&I31=f8~)eD&)lq)N`7ERdM}deuhX3%Z34 z$LB;XSO6>p7bC2App@qyM*{fKZvDsh2q(OL*=ulYbHkJ4F|gr_I>74A69M~}2wbl~ zX!9e#m5mt|4se~IHfqZCi@L!&K~!Fc0*&<|8HI|f5WE}$aILBRM<5B8$;YKa;0r

asyfeXblP~QJZK*_jPcBmG7)fwpPU`8q6*JZ&}Aa8mg%j%u08(LDA z4Feag{{OUry7y5k1--zCO8^hB_WvXY%YZG(LIV{+R!t7?k$_%9fZsrD=I0Y|u%c9% zQQ6D7!9@iXRAB^Q(*!oyB}#%2z90`pc`3nXLwdGQjGJCJfm{D)8Bpz36+kQ>xJ^)I z5`bF@flr1S=yVx4Ge9cme<*rUU?ZR&UzNOh*(~s(Xq`6;s+yViXy;ISJ2^jr{KAj{SROT^;lk% z1y4(X^$l90fL{`vQo(I*L$92773(%M|G%!1z|-u3TIpx;udoPMN&gBX0C_4nLxHV$ zZn}btMc_qUYB-_IWk-RRTm64J3U2dI!@F%Smju|bjPRcZP~r?n(Efjk|0yOYdu=lT z_>VRWpltuLsKdPs0lo;eyJYPCHHL(tgU*q|QL}=)B?KR{zdT=25x7k-H}L-wQ0Hr? z960FyYvVFC8l?pQXd_q!z|)=yqP!$d;3NfJ&$V;S21zMh=>!E~9F#5;;RJM{wmX+o z1%|GMq;W-nOGL=8e-S<)hTrVOB}FW|K<^P?b#>wYMp*ensnKE6ow;qcb=uY;jMlvt zG!0|?*8F(!mdf+1*xnH)VHBYvOZ`v9y2K>I2M-T=a}P0asuX1jW^8zQmh4G;2=5l& zlm9rM(tISv*ejA<2hV*g+umW(LAZk*@2Ye~QK#*diuvqr4gKKfqB}BKs=G;R9&$}` zYe~#E#`I*09|Tyy#zd@JfAHUh&|(RE)eKWw!`2j^(v-#~@?ttHUR&5cdhihTcfzu~ zb0^n~y)j^v|LKzE#3(NJ!1zfewlGhu_D&n3aZ###rZ{hK6NXoLe7iv!CterPU=8O*oKXhM!r(^n5~LNBUbv@ zmA?dMkY`wdD89uG1E( zo{RLQzZEyfEBSaolQr5r2g_3C$U#z9zsPj1V{+kdfV94qiO}r9N$}9D&9_WK;VaY< zABFDPYknzYHil)Tq8A#PDF5*}eAwLd+`q!-UVkZT--M8L*~?^nchY8f1v_(8Q|0`^ z)3MvEIJs8Y&b=Emdt6-6);|0~t_NzW7M%%q$AbxlOQ>RQesAS{BWi~)>ajTVcpm#u znqIDAWUyW}S2S3JVR~@0} z#pIFKv)bSSb(rU(Ocwzr2ZgQ8RT}m%yg8K?QZ9nKz3d@!Zqv?u%sw3>J4}!2#WeA5 zwf-{eIVmE`u z^3|9sd?3E+_ICm(gP+MNyixE~teGg-yDk$KHVe0*#w$g>R z=oU^qoXVwLGVXkV$1)|<2DH96M4Acjv4%Vw1bCqH(9JGA?H8>vdVA?X)dLB0MwJyMbic%v=$Cpafx1;&9 zvuxa0HD(iszY8rwtXvG(6I{RXfp3*tRO|AUc%}6eZ;Y;JO5jHid!1hUZ#fht~h1nQaJKeEV*;g7NJNh%aJ=zJc zBW;F+cVQ41iH4AP4%>WxxwR0ZF++GQ*Lm@*C|4jOAt?v;)R#^Qnh`Jo>KUhbw*vU!y?~YTZXOy{`0y z(R(x9+a0ig2+GIi;Y?aXN~hJ(vaFIacgF;OhsQ2duD_0bgF=p;@xg10zbg*h@iSTZ zobym#Wc3Yk%(E5T??Dk7R!@z+o8bqt%ue5W=!^K29tGir^)v6xOes95Nj=c2bS4>7 z?RA^tAvohG9tfP7mdXg8SQK;Dcpo5Q%AKVjm%E7xvpEyoL$?z+Mnf26J>l$pA+d4y zAl~K+Zh$0Z>p&c-xf~VVJ{`{81ydG;r$D4@2S&XNTF9~OkKT;n&l!jvoVe?W12c9k zJv#&|5`uj?Yw=rXf_L;(#I7C)G!+W>J8ndD5f)hB%uwmaGkmxF`9e3JQMZEIK594! zYeCBE25h~#(OD#Wf7}#Of>kIpyjvyQpH`%zwHl|Cj!`BsZOC6=J|Q}V4No6``M?m` z7v(~gfh*D*ALL#>G2}I z5ENJ~NYE_uw+4pI*@zpVFSyd4nb6lzDKGGcU|>MtW{Zmh zo=G(J=eMh?igy><*qaNkW@-#@1E2Sf3fkdAoC%JU#oft?AGSn3oRvLU$uelhG0-2J z%7-xD^sKI<<7@A^o}~SH#_hP%mCU|7;`Po=4o6bapWgrB3$0&hlXg*eGzgcd+i_bb zvi_n;yuT*fs#V1G?#BCTpFaGi3o=R_nv>3_QXgf@@qESSoRiuqOtP?W+h_ZZ_DdS) z;?#zthSS^SZPf9JLvMdKc2dbHRZ3CvxSLqTZo!x;b=`vY^?$!Ht1|T4P47EgQ?Y_E|*{X>Gp4Hwoh^5>=Ck9ep!1{uSvy{TTluR#Fn_eSRFs zbR+71GUWn=UsF`>FT4GLu-~_|;gb8_nBIE@FwyUwd_FQJ3HyThmfCvu_nQ>UBkt7t zOU0Wt6ju~Gzu;~&v6WH9xBV3v6}NQnC6$m!A)9}6=la@`JO^{hAtU;OxM;z^=`gzo zNzt}}#bI`*SBWDIroc<$1kFr3jfhcm=Dj>{EC>(81k)>p+u+cpc?PK^KlOgJ>`nw( zhQ&>&*}67+)6RY!epxS5(#mR9a%Uyp5qn;X(mkuGtC51c`Pxh7p0~am>~iEarEN|` zH<|j&6XAOCzDg#Jc?5r1RNX8W;higsqsm-!6q+Vih(46OB;Iy~#+XsGyfWJ6_bJ@z zI{XvxXG?)f{N8*380z5M#Eed~Q%KkSc zWqb~VGQXA8H&)VH<-- zWxWedFHNTQD7w3q?)Pr^!&f^Y9THhW0y(=EH@|Kh1M{HW?CkPqc88ncPHo+XG zALOmj7;v{=Gr>O^C$XIxR2Ab zRl(XT?p13rT_eJ(>+d>(DefiK_-OsJ&ZBQUJN16g^$qL@8;Xj$NPTp>vq(p@M6Yb! zbpDdMFqg~lZk2JmN6<6xMsTA_W7u&JOmS|aKJv&f(F>Dy*tvIbvV>}`!;u;iOC}T- z*$y#N?qKt!RaUf%a$B+gbr`$LP^sw>>iu12UaVDQx1~P68AJ4R%2BHIhY~TQ(|LGj zZpEq4|6OimJBd#lhg)5q>Q!&yB`Iezs<=L#g`Kta{{7zrzCZY6X)R@M_D;^W!&bLx zH8sR3?EDXZ|J|m_Ww@TZg~lX(W+nZ%ya(QUYI7Q@Efk8okL!~Gk^U@~R}+7Ld5S6Z zg&;oauUX)OcvUT)y6J5xMvMrxrugl3H3@W08i|MLm}Wm)Z(pAz ziIu2=MzGFyG5Z85Wpj;uAm!BFoF$|-t@IyFeDCu#eAFPC+QXodt_|ABQNAt(>led* zt6YkPMuLXsI4??hkZ!i491kVaggub8P;|oXwb$(8J=hr`d(u~>Yl| z>HwOvMK8-7^q)3WhUlS>9=Ai}MRctb(L&okVJKOlg~^bYUt(Of-RIZu*Dq4sjy6hY5>PRJtib*|7(3sAUDV-yUbb++@)t`6#EUP@uEi!gFi3UOMrE2AcQ;=`zulZJP-MKmWh(LItv#>CL6r7EA?==MEE+kiFCX2hE{`3v zZ=(JbUqDdrBr_iWMg5R^b#BYH@CzGP%e~a?8bwRLp^C4AbfOcru=E)Sc2K9HvXx3Z z-c7krpgsiD>AH5I8;^F`fb$?@? zrA7~x#VS84*^A=!g|#g1Rhp8GL>)a1veO*rp1_<;wHO%wAp0xFRNt6EDZlpdSI5Wq zKK{)7o18W{L>c`fx*)r>Tw+$1W7yEw3+;Qrl=@$n+k z-|!#)$zZc~ZRARB@-YZ_jg=8UWGKWP>uAI1oJSV3wroRDUQ5CMHtoJ1bL#1=frP^9 za^Eg>?n^TZRn=GT4;Zu-8f0}(+Kas&R$&##DJ7H^_LxkfC6~5VqPG&X37~&!s<%ZC zjf~al`1D5B2w&C_A9gC3rP}UB{KlC$Zb)jlhbhC=Jb2-^tza?1s#Eno^S*dwN4&OI6U$`}ut@jW3QVL$K|FvM#RF=W<_`*xMU<0ea^2G3a{>O^o1?uLn z0oS5G6|h~gJ-M9}tsdoIb8?&bk$S=pYdJW(t$s>VMeeFC%bUAj=nPjLoZQ|I{t(;S z@D{&kV(7#odGYn{fpBt8h3kK#YLBzcM-7J(Qpxs5uuden^xkOorKGa?P8!Nca?N0g z_?k3Cy_?9sz1YIl2=fW2UiBT(-dt>4pM^wa@izvBQ+N8p$3I%t9UJ*s?EAJ>57w>E zhZ@1%CmYerh{mfeFf%4=6=1Vc*7cv@wC-;_nz_h(6*i{QvQF|+J)wN$M%L45>iU}* z9u}tY)(aE|5f5wJ>OP>e!S-H`+xF12f<^N-SGH0=@PDPs@q61t zH_5bbVKSGgI(f@OCrPbUp?pWm!2?pw5R$&1>CE#j57*8rgfF5ehSKGp*`8+CTl>j3#JBPlB7y+15oJc2?UkxH zDFMS*L*?tO$uMvX{JytZ^ySH2r|<9vj9bSu8uX%0bzbih=tRUHb|=u0llQq-+B|LQ z5xWhGVxj*qYlK%qS!x*dDtpWEHHpIw(+FsW&yH(pmaz4shGNoGONVQokST+j=F-JatIw-c(ms z1-|mL`j2GyTeH|p1#k=AZDB8ll5^He->ejRZt;h&aobgNqQCNHDaqvED+^wNNrTt- zt%)0oXLxOBUs;I|4adFZJ-F8=li+|3d)Sa)#rv~D+utw)`^1@N4>cOFcB{22hRjKsYjnRKQtErl_EFr8fBSkFN)3$K`o>|g&4Uwd{6ex9R9!|Ja z#5%7*>p{uit|K1l%6sl#H(#}r_&1jZ3VC}C8Gj5)nl4zPe~n$p$#6BPb4)|x&)SIB zL1KSZRApVYsIL+oqesnln}6Y?DPtHq*}T=W$ivikoUlQ6#nky98q3^4PnFuO*Xvvq z&`-y-5-T2JM3DY2!W-0nqL@S&dUyZ1&HBrcldUypr6Qbi^7eP>jM0e)Cn!5#YICnJxi)xsYA z`EdQ0E&SVVn-WH{o7p!jzvw~#150!j=Kl1XA+w`TMOF$GcXBnEl*tcbNZyw>+zDTr zdXgQl6ezWkxHP%f%Xn8|u-Gg2EDv+}PeA>j%2d0Z1lV`)2iIDfP6KGEYnqC2GG+6t zf;)PT3Zyj>I2W#TNHFU!OC}WVZ%$*)v9o?m@%Z(~(&rKPoJUHKoM~R%%>{mD&5r&7 z+v)G$@Yfc6#PuW9$zKHYn)AhcwC)V~6LQc(@PV7JDWoMOTt}+CA&Bj(CaGt}JJ)sY z4&8#E?DYPywv+2$uf2Y^D*I^e!PlLoa$^Pkul-wm>FmdYC)KgZJ%HSkmi=c=W3Z)8 zjhxikOU8=12`9xJ(teoX*YIcW5}7r`jx}(bVoBEDB4pNft)}WcbL&|Yr=+Ks2YPn~Xcs()p0%kRQz60XUN? z$qd+?oR1gxk&24IiGD*1n43WF7BL#+W)R!|Wg6 zqifdr|Dbz{scR2V+yNsgHnGt_Gs#o z^ZsDSIF@7kmGc^94L-y_5eHpVq4R&A*dMKcIa9`gWdP*HhtBjYV`-{Dr!mB;+cZIQD zjN`3fzkEKK%f627I3CPyL;*XI;n$g&sZLNzi18bjc~TRWEjc|h-FUK2lR)Ig`r#vf zI8i$l8LzTe@S(yI`W=4HE6GQ!mfD!Y9$>B_raO0ZzVi5`xpVL`bB1#w2DTKr87rob za=*93qWv{Swmu2-C1cTqL^A2rHCAjM)>hfJ^uu(0rH_Av1m`ZucA))1`||VEEJo%- z!ybcO^s=+iEuWR54D=`7(?m-?cJmg#?qeFK}jmDeYOQrNu}ZnDQZcs%?HYgojDv3~3bs5o0* zdB6?(dv`*yJK?!jKM?`il#1GF?+cQdx38>L7>@Vb%YIPKv^+1+lwf^ErHb|ChCh)Q zU-`KDN-v@HZpY{~o4f2^#^CyB>1-MsJnU!%ucyb?cs%b;{YveVr%Kq7HBnt5;S+lu zxBT3e^6FEF+g{1`LPN+THRfkA^7`b|h>DF6Ul^>yNtbxaw*+QgKWw=nMxjI8RdEdVouUD5tvCf^740KHQG1(sq~`Us6Z~hcxRzhs0+IQ^`pnQS0u%G zV9?#UdS;#6k4rZSQ#ekUwYAjpQaI>gd}jPGx@**F%_q^Xt6KE=UT2H-2ED#<$L!t5 znpYE=-81ZbxxGBu!!@2)ApV8Nl|B%Ylwp;Z)PeVSeG{p zV0caS7F^gBXH2*Gb7!Ac%tK48(Zm7LeKg7B7n|*h6`%W6h10E)`jLe9O>H6fy*#z2 zR5i`mhO#gP($j*hL-F#`8qba@4uen6T8jH`fs$xw=xDSw;7=C@8rp+rzTaKro@y}Q zY>uoK-%(hO>-$c-fgfcrW@Y!XzupB_O+nPr|A|I*?uv_S$XpIp55E&hWWZv3QuG-C zOUug3{7k<_D+cPl_0YC1Q+JM`=N5-tuI__LP=haGwu;9>v6;zUiATJi+=#~-vn_Tn zud-mz_&M5sYY=`(Y`soLL;BSephXh`d#B=YO?`vSZdL; z6(>*L)Y~5(JJi-Hxcch<`gkSYK=0-XzZ5O+b;_rG_U1$HV?AvaD;jo}?l;&mSqtL&({$a^yoQw?1=(+&x!atG~7LLTXh`jr&P|vz6R;)fbc<6H^6Pnu1Id zm;&&Y(0aWwpV3EaHk5W+=ncv@_zN$p4JNFm&5w#akN6pMBHckzY-!z8Bbp@cpybL4 zh1Tp0%T=nqI9~9a{J{EgZwd0@6YTh@2$ua8yKtmP_sm zPx7B6udT5-S-ty|R=w#d?iBMtAUR)YOa6Fa{7|!y;v9(ev4jk>o-Sf z9_Dj(^4m>owmmmCjoj0-j?d^Ja(OXT-QHX`D1QWf+wknH_%%2<=*dlxa1U;q4Yh}P zg7pp7c7h-@QkOt!_1NG+m>L;*{%}s~m`Z+l6i@wB?uqNhrp;q;EpU)Ui``Z06(iKp9iFmWDk=|rab2`8Y3rT zUXQEX!gO+%b|Y)?|Aj60sEx^A*0)N>-iW`_?a#w|?->4$sNbj^vtb}Fs-H}#Pn>r0 zPV#I!=)}uBz%4utQxw*fWmp={lDuZ-Ydtii-DqrH=ONvD>)=x)9aU2-*u^gS_arfL zetL5+aYRcjni?tV1!GX8g%?~*p*P$+2Y?bYpF!DRQmBcHdeW$kDM+I1x?$3nA1h5P zca`y_4mzoB-|sOi3NE&5=1O4){?D{RuU_4!$f%GR-fF(HDv-*miDm3!`GPkKu7pn& z?aNuCL6=TN0EzO*wh2}Rk7`niL%^sJ{$%=q7VGEX%ovW0s`Lz!zZ%vc=rFnPn~~2 zBpeVB^zh2aK*AjVLG@_bZ8hD6wj$W^r@KVnpK0Gb(C*-RHsLeMxcOv|*4h6ff!C%z z!OgMf#r9W^(mLLadK}Tb;m`T%$(GTHUuBMu_C1gfjZbJTXvW2(0b5uV-9o|Dv^)WU zu{vzJL3;>|ZHhL0=QX1FbgY_pwSj0U06vQzEhp-ccyCCL%hbg1eT{J)_G_7RSo~{c zQjXdl9&VWut2?`RjCbwFaxJ!L1_!q-&$uSn#H*4@u03X!9)6U6F?o&1EsgvKNE84V z{3t-sy0x@VVa39(HBj+fIoWq@QCBRpS2Dpcp_9i;Tp_8! z5WImN@y_O&7*XOWg=8JGm9j^BbJw^0jFX^aV=5WO$2B6grM0EGdlnLH!Fa<<+O8*9 z>1zr>aPK@QC9J~noyTPTRK=ZL3GNuSD|#|`Hk_5tOpau2Cx3Wz z?B)Kb^Z%LR5-EAJGF8&eo)YJ(&LOURe6YWYpdgPjRV-k(JLRg)m3U;jmShkUe)f>% zF!r$c)3m0O`+ob!griJBjs;4GI#MY@BIQ@AJ*ke*JkMZdXMc&$j>e}?x)HFWlwtG6 zB?j{)Ql&A7J0$wHt5($fGX~i4uV~oO*2qc4`&nwa)9zl_d)VQ-vrTK*K`xBusPk;Q zEeUp9d)Dy&U?6u>blr^J9U=;6bm*q?F@Wapn?oswIGE3lt(#BB#+2V^LnBJC?&{lG ze?dPpo`BhpC~w_1jXFEodw*!Vh}RaGe)jWC8*XT&T%oc^ zs=9e21;bZs?15|X!P@mRfvKQ|w4iCov_!`T{|Xw|-#&(~5U8lFUj?`+j$0Yl z=1xwnVW$DVtv7=bdpLidy(fI5$I~R`;QU)P63>I6M>QjE~*59w1u8fdY@O{p~R#f^m zg<&NX)FD>-JyappKv%`5z$hq*egB%ctFAPDXan`rO=tWX{l)vnF^%jj0e|uwG4nZZ zv-%Ag{H?_vdW&|0k9asw&;B@&E!=D-=}{qPdGc%BB}>;wn%3rh()igK$F0OF(}82d zx_2?Me!`>`RIO~=-#YX*FEv?VKDN3>LS_+EiBq^6I7?v2Ct9xcBdRX+HKhDU;gH4% zRkE{!#;*@#$ruDueGbeHN@m6EG@67D zALFtO$ClENLY~o;w)S90{fX-GO;4GX4Qq%xbBPb zyj`EyVk!8p{5Hl5^{|;-&Y{NI9O5~*d>0%8TEdSP_}4RncMXx!K2C2c;}4$n#qB+UZb-* zE}jf1!)78RQH6Jk?w=f2*rW9pm;4dT{F;Mx6&6YJ`@tz`->4W~T%{4GJ#4Yz;pxaB zNw3b&@IN>$Vdz_o? zP`A(g>3EbGfB0QFHVa%a4^~N%H{K4$b|^kGpmpTIp33RZ4ZQA7E8+GzfHZO`j-16)X@(0rsw09fo5hzeYy( zTN}R2eP4d3>jdN&#|l@MU5o0tU&3xVyd?Vln=(0GhYGIZ5PPpXdVcjb0VYW#b^LF+ zFuY71Hw;D!d53VK=LW5Kf#Ggr*l)btTSwl};K*ke1aV?*`?v{*#t7fDjl97v>zj$K zEx-d?%kngC#eA8@D!QH`P<;PM=7#DG)^I*shrV#eVj}mqp_JD2KWF4it~PoQ_7&NS zO1@CT;8eU7nPWmkE{kPH>@MU?Iy{9_)^Fv7YkUU2 z3k@cBVVy|IRSF)jx7bW1-iybfslAk}_AeeSG8Adh=p~yFBuLq?^kDeja}UK;x@|Vw zOw4koVX15P>K}tFUm%Q*L?i?k&@b_x?GEkvIBwqMjA%%Zwjh zlTVALHRdEY!;;F+EC0-A4P&&8mCJCa8UGskTE`vvS$oxm&rHz3P{J?C4s0i%Yq`HL z5ygfRPvU+s4dOQdNaQx1n5XCmgwO9Ues%_KQ!U);=$lz|a>>{c`Ww2KVbE8S$0R;J z^2LdSBzNqG?jbOkh#X0(;|62pFm0dVp4EC0>F50@PpIZ#QHXU+{k|j0*$r|WTO3Y7 z-gSsB6;u{Rq>!SM(VM1}hj5n->=QD6W+I}*C~TMxXHuPVx%at{mR!*9`m=O4V=yS6xgIv;j#=RogAEN*0`fW_*V3Xspfg zxU!Gxf&|@+;PvC@Wv$DrEZ3Nbj31}1hml~^dwMXqn0bXo@`~Wh6DS?xD5w-=&|^xo zl*-TIzQ$8Za|liTF!>@u_(3pYr+N^!KXye`D)@PP9ByRoouJT9qTQvU;bIi2MOdD? z*f$a*d0z$THQ7eCx3NZ*^8L}qQ>Vy(PHHkAqV%!G5bgMDt;76FEY9YPD43 z>SDi*h~nD%dVyIhn^3*BVYE(sSgthW`SU#~S`%U%^EvK6FGKasg;GvmzcRWyPr&g= zBr!Rv%IMCp&sxNut8Cg@@-F0x6=f*yT{@g`bUiw{%|Dw4iTDS2vbyD?@+WlBHu5h6 znIj8bAB8g5uqRgu&0u8beeYD{N27Qi=;8O%mFD9P=>)O1`qQYVe!;cZ9I{|T_Pd56 zT}FQ9YMlYr%=*I>ws<&bs&kmO=4B+Ijn4^h>Dn!$SB6n7E(;gGiyG;M1{2;C$ou|- z3D4lsdd!?JuZ@YZdqgZlazs^rk+-~BMTqYE4py2zE2fZdosUDYSY5{{g_iN2@;+gN z`Y91B=B>Fh3{-eugK=VoO?iHRY1hi1u;68L+245ei_GNCPb@xV96C!*d(>dUEhg#v z#$UPI+YF@{qvCzgHesukOeW6;Z{#}wgGD2klXzwI#NQR0BANJQ9?3!96#27)9f_q^ zE8SEN1mtON1XX<7kGDDVQ~8XgIBbBQzjQ|&L9)to9c!=_orx&9@FncXjRCj7^ad82 zR3*j@#dI2u=Tm>eG54Q%7`L{ehf2uRS4d58J`h){4Dpy}iy1Jbmhis&Q`vF-sbL-y z5yunU&YPyceq0@9EWnabYP7v>syLEyPbPL_S?$Q2a^^6c*BhoL1^M`x)p}c_^+hnt zt^CQ`{j|#5Vw_eR@;hGFUVLPpIQ$2aUWg6MhH(xK( z0h`?V!*Mj08XL_yg%o#$YY? zH7-9ZZgwsu;p4O`q&|7^K(I#Nd=|BW=`OpSp?&b#F6y@Am?I>$|D&3Pd4jlqMt2)4 zKds@aEH&YPX#&v?OWMy|#x^VjNp|8yw+xzx9YK2eJ83oSvNc|OwJtvmY#dwVl$W-@ zU83Hr5Bo|oD-+|wut@Ya2!Gn4I~Tf2mu6SUXMDH(Xq<<4lgi~?K_rC?1Bp<208gBY zuqx)Mr{dL63jDDfeI$ac&OP~uPe`8_^u{b<&aKLjcx-x6{`7pi@gz34fizWyti5IP zO7kbydygTu^4)w>^k^&mTz=TZk=z+$k~Qo@_ei@j>IN4R@L>=1uBmkd6Gukfb9v(Q z4GOZTKCDD*#t3=?`5=P+sm;gMF>mYjYRqC)Iljgh zF2_$h3OKWvvMOu48tiFqH@xB#@IH-7UK!nzcVE~p34f-cLWB0_VJHS^THM#V`*&L_ zZt?izz$1Ct*6we}!g>h`4SaNGO&p-=a;!!;CL!fdn%DO#fb{tE(z#B^NULsXxr5 zRLHDVEjFEje$3Ep)kOuknOZ<#*3-j8QI^Qjdue+ogpv@5N*QXRI3iV@)Pfg)p-xgC z7@@zHs3wC1O;%1yoRpTM#b~92SkR(djPv6faW7@W=O*#Y)zTG7)42Pc!Fm@=r-w_a*1TO*0^t9dMSeH8*MAne0xeWo7v1hkMNH{JUHEljm z`pKu#w?!^{CyGI2?UWhb9p0HwL6;WSKXJGZNy&F{m^dE=g>Nir{uqmHk3SpkEIXMQ zmPs=6y-50ttgR^aH7B~{4IdF0Xn z3jXa%y?*w`d3I(Hgo7@%g?^TA)x6WC+%o+}zQTPFT5Baxt=cENC`Sbi=da!zR-15k^F}!RFuIyq26--!4hBu&J>IlOg1MEDJIvht@4H z>;MIsDU;+=0TC@jSkDOlgC_Evz~_7=`gl9!4LnFtK=_R<77Z@lcDep_0iIDFq&=yMd4%C>VRW;A3QMEFI12aKj4 z)fG@hy7PqV9zkWHT8WR5yuhjv^>4#PYcL~`2b6pn$sA@PR`+tqUEUykZi`_0Rf_Jj zXCsOrI=tAW`dn!vXotRC8J;z~^)?ahX* zQ5VabHZ(865PY+Kwbw4g*Z`^~87z>_t)Dm@r(X( zP40XmKMzq=+q1To!$%L~PBsA5F!AAwoPXJ>5oP@4JTxDbRX9-7&fVTQTBuN7ehb$x zPIB1sVu-)utp-+d*X!LU!Tf^CxJ-sp5HyjfH8XZ`k98YH=s`!gU^Ueg)9G#^e zj$ciLAw$HUQxg52Lwa;c-}|ApZx9H59^{1=(c5Bdot>nI#t29rdzxz)MRj46kusO2 zU+Qe`8-#|liA5{K=tFby<2aWfiZnmvpsqSSkRn6qnww(s%Skm6{o0m&)rQOPMuVcM zd24Cc*igmqJP}{LJXcuKBjvBRO^#_*Z%<7NZf03;O*@Y(`wWCYq?toZd?2ZdZB)^Z z^t@h15PDRV#MQ$MJ8pb&r1T=JAh|h?`%9)xp~h43>>Fu98!YM9hO|=>{D7za#-?jT z0UGmpk?IS22Yz-4arC%JCswcjUeuP^{qm4tU<^|0Y#!vJq`wN6QkG;WX2QzvjaO3M z!u5)T;Zdzi+%dyL_j#%ZQdg@o5?%=TreJ<=mLh@sE4WmCPOLi+j9pcxF3d1iLT!Cl zFW*|o#@{r!tG734Pw~L^hE?@nT@cNKsWpU`@+AYeP}ZWg&2!^K=CN)X;1Z!wyY&n1 zTKmK)A>SV|fj~P*{6_16OX_dckT9nBFuzk;t99Kg*NqF^EMbAj`PkiTuL zojV)azsnzlILikbL%RMOx=EPv;FLc1Foh_Ljw@$fy?J`)azYm18Eg6N@RS$We4E)= zQ##D#vRvC@hQbbJqOETX&+d?*#BO>4g*;BM>tp(Bw|BNMmu zz>AKdE91aQ&n!bMV$koUYxgjMf*aHwH!XJIb*^%jgn)H>e3aj+`Q|Z)ii5ix#Tt7u zVsBfw&qA=Y^L6teFhdtaFijacrzWHM1{1$jc5!7u&)ctZ<9azm{Oeb;{@Q0Hc8fP}1(+YW3f zt=ouN@IdMdU%kImLC}Bg0Qlt zoh|dmpWVww>Y&DlMcCc<8-h$gbzpiXP6>xxoJS4XO|7%?m2Z z`v@hNWx%vk=~UK%PW(&i=;r&ee72G9_H}af2JnusPbm00b_3bfEz2ViTe?Y92h(zT z{&A&iiIb9#9dg2xQmX>ZgZ#qlhqlA0zNVvX%V^Bk&}IlE2<}0rKp(wr(Lz=4A*E?mCH3KG|W`908C^Ei2B08Afwb#*0m@3`Y>1}Qmc6J zJs=-1zZ;@)kQeu49?Uo$UD1N~N_D+?O@^tooSboFSq*>gc`Q}mtsA}49cCSqS-;t6 zl+N^0`5}?jHsy#h?g2zl1hIFRI!RuU5ECCdbZ&Owk0GPp@5Tj za5WM{oU%Nt?tZ2{-8I)B(`D)Q*Y(c>_0R;iGw8YY!|gbnnHDEJvs#}+a{@=5Y#2JrpE%p~DlMmFCX*TAkz+@Ek9rJ498g2EhF?D9}W zjq5!0O2&Hm@q#_+Gyx7*{VMcN0!qu{L*Yw7S7VwGii4Ivx;jiP>2$H$597cJIBBM- z%dBNzPdt1c>3Y5yYipf}VG!YPU@7&ozk-Ji(lyU zr^3&c!|Q2}q| z#lIS-VljypROQ4pp;)dUhw)E{r4Lac}9aN6}++B}hr_ zj0sk~$tW+Ehvem+ACe(2RBXk@k$*CqowP~>&WLdlD`oDFv2@Xc9Z+B5{-VClt}U`GWLMv}aIOdqnR1o251L0rz=c`U*hJ7oZ=fDgRWPo7 znoRDMkCEpdw;qDw7Ev0zMAN}|tv}uj58IVioV^4G4_Cr9-7fqv7BLW(vvLXR9wUz8 zU{w_5wBZ+T3k6}SComrs^5<&e;F8byFDwY;<_d1%ix6r(-^!L;WQeGA^WRM8R!=PGDS2(=X^;V#-r zfZn#rSIjt}aUilHGJErvjEbMld}%l$_Yhm?tVS8{mUsdZ14oTIG-#Jx-}5x1em_&5 zEg!KkFq7fRUCr-F;;e%m>L)tVLe|!80ioxLn8@E8d%rJwRhlRE4oQ-)#-O1r>pOJB z$gfIXyS5gP9|*lKx$sD<-^nf)!Qa46;~Sq8ArHtWGb{nIFvDS{@-MuG6n*qQ zOlptAJiw;^KBWgxr?>kYY7(ys^w^mmlXe$#_p!=%e;OD`U)>FzrSSToTB0tLirF=R zmRaY1eaa&1gW98^XC^W8D~{MPYDqdZvZX#aKLO?I8ryJO+?HHfKakTb4eY#`>Chb` zqp~4l4m=_Y|Vh(4>BG>ra2SQ!RB7n!MxY|-604M$=0dQs~)DNG$#-! zW+0+!?qSUp&W`#7wIC4bWIAiJRmY`T<#q82@ID#hK_d08Zjg>nEgYwVGz|3{9zGSX zV+4IISP7h@cC4SsAC8u8>?W46Z#5t?2^kQVj%N%g8e4;6#y;n{LzK^+DH%6hBwu7C z$5{3M!EZWk9`gC9bE3=3Px4kTLf;02N3o%&MI@NhOO=&938C z{sEB$L9$Ax|1Z(KW}}-H%J!Y_dVE95VrFI0N9G&T(D#7`LIQpN6Abi`W2G#hzaEH_ zKM*$V6suI9TrRVG>Zys7Ec!vJhD5HhV@UE$f6LL!|IK!83y@>99~o#Cc+;?yu&pJd zfH6V!)BkU!*`2)19pUprW#~pvL&9t7Y$Dbq3}>##(zDMO;n}l?2t^`7P&5yFnG;|buMwBh(k_@obC#s@}{w`LMaTkkD@N*u1RiLw~a>+(6ke@ z;p5S6#`xe^rGfh`Ax;um7pxON@Yjr#?DrzI9T_EGhhiZ-AM{TKLhgB@VAgc^z^RK>tejJ2 zZR3a^XeyzAYu|6uypB0jJ@82+KFYW|<_xpi!2CR z%*+{{@M6EW;>>^RBynuYcL7}SX zuDl4WB_$e;6ZrW$1sUFkj1#;gOQn3}FdDMp(*WhYPMCKLbl%K!YObc|T z0SJar$}LbafrNM2p|*&ljQ`f(TR0bJV}#Z|9Q9FZuNEMconJ zf%XNOR9a2y_wG*zQt#XYv2ar*p_H|kW{=~5YQA`>rG20??DqfG*KA$H$FPw+puCafl%CMt|4hcAE5unR7w&(E)hol zLf#x1 zw1V+xV6X}#gy?^`6%_EseO}pdsaw%{+~^~92W886Gi-!$Qbp^jOerZzhW3h%NTUB_ zCe!AF4AOf7j)BlH_uDxgTpkc-L(@*E_ciGe%o@WqpPPR*HV{ampMN3YCfE>RK9EY9uGp z;x8hsygzZAdLK{KQ7IJ*7ZiNc0EE9j9e}oMi>V|=LhTTIm%IK#3|d1MI`Nt};eyB;YANIPZ+2FC-g>`w1x67EdBZkUqzA=v$|8nTa|#Ho;QJ6j#?@F_(r1(X&Kr>( zP4;c~Bd#Gl0z%#(k(nX7AR5zM*aiW4)Midy>cUg|v}TT}rz4ZtL(4DW?FJSji!O$= z>~wUcX}ujtqXXoFsnsg2mVq&i4NE&j_N zS%i&aDqQ-&h*AS>fePR#KbEm*eTtLdiaw)le|G*8gT1a1Y!FtE=B^10G^|vS*sH*H zUs@(dJ4m~n%Ec$5lD3t7L4q~TXH8`hl^ufy2YIF?c_`*~6Lw7$Dj6b77 zFxD-}9Z1tuWCxxqpiAX#i_7OX;TDl@|rBBzDqFIC!gDtu_h^muG&H5 ztwJnpLS}_uO6NqbY~(6EK92PGPd~`FjuzXsN-OGBRs&7uRmnLnjah<;%fxKW#kXk{ zP8|bUnHO&_g#;raIM?L^ATI||(`9sAZ~J(qK!ix<8qEdrW`{{%eI7po-rBofZR3Q6 z+tD=pp07U-s^s7F5DWZq7i3T?12p3HBfH8TObLjg|IE)nh+sD_!Rb=%OY}&MUrtrz zCD!~g4VrM52+L24FFc+D= zMZqx`|C4d(ua1x2Vt++q``784eMxwrs2HLm;gla4;Pd380fs1$mT4WRaBHX!K$JhW zA9OnGNrTfUgpd2Fd!#&dCu|Bp05Lk%7Mc8ys-OsrUa3FXunQb4U0uG;93Q%iO0!3CUZF;RWl(-n$6kXvQ>Kx6ptKn_1fi23^Khi>l!U`fW(X8RU> zuwbon;YPbf*RV>n%4ESdjKHo12~0NIw$OnKn+4mJYTcSv;FM;SS<}Mls(lNuee3Fv ztQxKc5nYGUDa|a4riH`i620Krk-Qfg66VqOW6IgZIyk? zY9?632o|+oXzGo6RMpsZEVQl8&Ki&S4Nd+f$EppJwuRa?hZZ6ay^GQf z%}$H9h0EqOTfD5!1tw3=Ndx<7jqWfWyCZ_*!_>!`s!e&!izQS@4-1!Ty-M10|4vU?HM}7^otuXtI5#&mH_2mtWKBa<8fIweb zfT`9lXa8$hLKl^vtQEQtB{uVp+1uHH@1nBoTjFz9?Rvrot>1F6P#BtTUm1w}%PY3f zK2jdlUYP-+(Y60X#I;fsz%@f@hu-9Pv291chtYxu*Zs- z(Eyl{P;y;#gtTR<_w@9pDRk@v+z}7BtGPw~VDwur(|f}2WxVG1Gkp5C#q5`TRr4D1 zIQe4c$UD%c!+8AG$mmzkBTRc`rT5ITN#Xa0T>5EyFW^T&zppuv<%%Q<@Ob6_oGaiG zhGuxBWycEAj{@k=*HsH2F4N!2_f)-t6MuWPg|&9!xo_zGKr#3O+}c_|M8IhbKA|wS zviS2d^L0qU$jp7ju06umZNQHBM`XdZncnk^$FHrj<+*prfTg#H$4-#J12TYtQU4Zs zt8L#~J*@UN=HCowFUUXB$Qg(LsH{MU1Kf$-BJbige!$Ud?u1-O(*W|8o*ImvwucKo zT$UG~cD(P==4G!(h5LZ7qr#wodo=YN@()qqm-~dt)>`4?Dqwy);x!sBA^4Vh!+Bxl zED85zUu1BqApx-LK(d+13fLCoZYwrah?-k?kLxPep z8aDa+w!)H16X+6QK1?czEzx9D3ENa`_*6jWHlk2{=8R#8N@Gso(b+jz*u??(g z+v)SExqt2B+J-_1tcq*5DKz0)XJGW2VaH4$4a6Ft_tf6g3Uc{$+7TB-2QztX|6}%| zoR9$t{(4Vd4{HOX(A&5|xljq9YZ|Z6D_%4t09qKhuRL8s(LM;JpEB~|K`!s4JL26~ z(!i$-Ks>15X%`7_8rD8AdJha^_O`|mdXm@Q*$V()c=r!OyI0WPG5hEp7<~hR8BNrk zkga`mq4@;fP_$>32oR3a;s88wn%r-!4SeNZ6fFM)%g;ZF2O@mP4W5*hN|6C?oCZ&c zPIKVr?K?n~Bn7XV&jU{eBHq%N{L0(dLeT<}!J3u`z|RVcKPC3EgH?Kj zgTS*2=t56!;h=)ezuJk^@{+g zf}eFQ1@$YjfnR5q2I?1X0$&ja6KG)KBZQ#gBkrF<iJ1ngIS@s0~SM5KJ zVOZEJR|YJL`Hy1;%eIQ2;NOM7gc6uITfzP`7EId(R4b{zg&YC@Vt;NwbAyFwrC{Ov zf81BFhRyF!qkBWW&qyEF4sL?|!aWYtR|H!RSVm8yZFzgb*R9X8=>Lg?`-L|jZ$F+} zfA{VH>PVl!eLlE{AvC>&AvE%c`WtZ7$-IS?M>LRdy`B=#^@+4~`%CrdiS-r<@OX02IN&txlz9Jqwu zvkR}i6JnHl_O|PdC-evS8$@oDf}Gc6^uz^rGICNTzpTIXfRQ6+z>;qmsGphczZM4* zy>#XQ4M2Kuv#XK&y(NKd$#sb_MdzG1{zq#k>A~F!)|_hPKBT1rV-G2Nir&VG0GPF~cYDai}YD<92yn#0FUhvJ;6@K`i*h2BZ(~s>01k7IX?sQ6z1@K8dWvkMtaOX)H6)yy=K&5MN+~b!r|Bq%g;SPMqSmlS??d_+ZwPbS%K4YUb^Rnoi{71{02YXtt>yG zSFzjr|03<60eNBnH&V=a{l3S89r1~()WBT-6P#dcr8CY}LyK#J>1q<*wq?ezNc4?| z414z9mDTIIfo@KR$IS(Y{{#3uZu0qXE`@$h9P~gS;^-ET=5u%(Pm7Z^$<9Jt>Q;~vS@fUYNpC4M{SOwbujH|-E=B?LxR!Tcz1lHEiN9owr zGxyadv~Z%}0`dmyb$NbmN;UaYKuPV_L~2Md>ODIv@^n@ZNu5nwokbK7oi8L5bw0f( zyFdl+3yy1iztTPGo7T6MRaaH5N_w7@5>842W;UIB`zIHg|Lj27SpQUzBA9Bd_(Lat zv0fC_brEs-_efkJzziTRIW4XYojI^qVK@L9G(!xgqSirR$$t%0RY+4)n;Axj;1)|o zlnerOA%xq0avdrQ8gnq9z#TgKd;!qDo?yU7k9P?+?4W)x5v56uX5Pg~KvpBn`= zqlW&4JVG3*;#9OfRfZz4G-F+w%J^A^rsjKHt%E;SrxGvm55<&`ydhC{*QL!cdE3OU z<<=jHU~Ky){aWxaSA`wA)OeSgVK>JH&?!{pgl&j7a4d1TR`YzX1DDYH0V!Fp9>23A zO`RCPzl33zoXd$jeU+uT< z-LTe%gP=xT81qCOu=ic#ryOtC6;*2m*X+2@71YY3WqZ~6Yq={=7l$t8_@R`GE;IiGONV#N}5Opm|oMG`_aE6_3xY5iPFe6BB<+n&9*dVSM*03YmPuR4s;2wtc`tY>^1yy#0a0l%67g^}goP2i5r?GEFHW;{yM;->PDQw??&|ZFUcmF3#L7^<0ld6`_Jzc zGMqi!ybhBQgOhK;Gq!{S2T7g8*stx?IHOF-yZZg%o$eh6-Cl?ry-INs7&WfR8r9Lz zmjzMkC`6KMgI9liYJmMj9E(Xm+&1*EU^!|txtT7Z&NbIrx}2BmmtF3e;-{hyn5{pm z@^W)O;8BMs#QtxDclrM_?tbqh*#q^!%hX=kQ#uAt`fV8ghM&=4xw>T7PpoelT~t!p zxHZXSNH_oB;Dp0(zS7s!>r#1yygia`rjpcjcw!OQs7)q%$QruxWV;=r)XhG%Ei+cP zYT68ZmJ}r9ye_Z0H40G`{Sa6^t6|-jX6AMwZ?CPaGgPstYA=$vt;lq%-~>Jo$Gi<% zcCL z@Y6kMT)M(r(fSE!d9_#OZ~h-#N?X0_-DxMknYkwG4jwGs{OPT>;-a_}4L3GwRs%?n z^#5kJ$O-XFVi3uEi)P!jNCw7HS-L%J`~@&>Wob*GGQ8b=yi!0LZC-q|bP$smIcRBl zw(ZSvd#*L=d^orZwix;K>U^4>Vys0^i~Vl6QRK6ak)>+x@0K!MS(|$M4yi&xs_N9WY#9o?2aOAD+P?c$WlIonZ9P-&7lhd;sTr>p z_f*8(u_G}A5nAuQuKFo{byJLx#H`RiY)Ni!Ffd9>@8nha$s3~vZuRJRutO9;wKXx& z?&c;GH=LleYz5b~pMaUnzr>Y!oPdSpqbBlroSJ5<v1TMvqHYKefZF z=lAA8ho0fO127TTmUS_tgvb7N=L?B~?AAhFp2o?L3}YR0LWe8gVnuBDBVwkc3q1hqOa6J7=BrE48QN zB}FVWRK7UU5GpjN$}qvcCt+i)mOrw{)AFWAILy46*H!-lCA}fl)Zo7dnU>kJ{0^aa zo4+Xdy)}06y%h`kYI9RTF@0@nV`?ReQHXe5tI^R)IM0}CDaIoks`a4pD}bmTQT56A4JABM5SYFOm-3~Y>Jg2KKTyTx9ABs7%KC6lQVV%IMg{8 zlr4&>ypj4W3_RIR5q5kjr=jH6&0K{!s5&l@Tul6I1CEJ%o`31iCrJ3fh_^TY$s*+s z*Mxkhfc5NH%L$vA;viiS6xGn-bCG;5i_xF@PO79-$DLKKG=Ltjt(!5pCUtopP%$K~ z9fF$LY%<9&OmcYi^5u4k4N+%WVnPt#)_RwJ`-jmcr$FjJ;}Yr#bbXaL1vY-4HnCVV z(vf-=*{hHa1&p4aalJcmoE%D)%r(BdQa8AyHmAv9LiS74yefo0PBDdCDGhPx$TT9& z1V--JTrGm>FvTAH143T>9WpdznYtOv2s!+Bgp<^tLb6JY09CqTeeN z#wd{+L`%wdF-Jsq=p@)~GNxL8?IzNeJ&QD;qpVg2hCs}^mq{@J2YAK^zK0hekMOk8 zhNcyma8QKmqRp_t&1Xp1iv)04uGV27#7EQE!Re7%5fp?EZFbmS=X1j7bMBE?~nY+WcbuHgVKGQ9!BLk^zRpli(h!F6tNGanzHP+E` zxlcNW_-`5^y6#vi@c2GTTH9)YaYR|9D>ZU&ei4rx;|pu+ldVRt(cuB94)tW*XXxHN z192*E-0+_gF?J7F3+VU-g~1}7XFicr1&&%lxs&GykNZJL3PEchI#PKTu5cB`nK1&~ zh;hX;aw-htl5g7wCtg1&1!1h!Pxh?H#Y@R=8Dhl4gDT0+opPt z=RPa&fZxoNI>@HmAvn1vB6;z6#$s7EzKEI0Np2u)K>3Ta8R-8Y)RHDyX+QmD)4=^q z>Fsz$07~_aT=wj0=a6Q3^>cG?O56CL12u7TS1}5ac1|NTNOIxq_lvW3lw$7Td4rS7 zidiZHp>O(Z1e$l7-j~X5xJ02N%E?a{?f{4kKpF*_<`s{h3^atm?$ryAee(Kll#w8@ zA4rtgiIDjX$oq*=Cj~Y4_qH3T6Iw8vPXR5#t?fM$bB?~$WfM9S<#Z%>G`K|Rg$4=8 zJP;cl_(Sk#b91~l0QRw}vS8LJSTiI63bYMgf-`HVGpFkXQ`ea*lIVyAFn(gXh4+{S zIL4k{Pwt9Ag;?N+mf{0>V%F(a;6nE+fBxrTpd|Oenix%ra!ut3`MkT7J4*%UXsSFZ zx5;>Hp9H6h!i8L-v`U~wC9kmT`xYRW*Sp>C&iUOtc8Hcl*x=5UIK3dmhRlLp9JM2R z!4F<0R`|3e_F!8DnE*$bFjgK6-G>VRibQWl zJ#@Q0U3I0*l33{X1&!v9+HuXB2^f=(dl0cv!UIKus9_l@MyH;>2x^>n2XT$^EE*+j`lyup{KYF5>qnm{^alF!?!%SP~nVMFx23J)S_*G zLE@;z5w1`IFbCKb2{G6Vm(5W?!@ZQr9~Kk2oU`q@K9_yCy-&_W}cS%AFp--k5w$hF#CHT zNWUKYRj-Qe_idEE3-LUrWMdBQ?T(qzt+BL+&M3Q6T~NQm{D}~&rx&aZqVWxJgO2eb zE#xJn+1r`#pl zjm<0Cy}_q_c`PMm&Iw1u{_y@dUugnDvu&w`|KDHt@c;h0+sZ)TJry8N(-XmqvcLn| z!B78b|M3G0HX}=Aswq{PiZOjddr#h@kvJl`-M@cZh38c5$QeIsQ{GEhd*@#UY-*CQ z*ciI2Qg=N+9}YL(U#6I~fWB_sHb1!Ei_H}^^r*xT474kX$1r+*qRH`WXKi@>L6&Z9 zo3-3abIj@UZBL?9_a66_oxl74ssK8AZ<+HP5qi4|dR4o({&ng<%X>OK32GF^V;7Re ze5NbjBH6-eU;XRA_?O;&i=+lMgOrYWhhzZU@UfCE#XGL!KGX9ncRG34Sa>1a+U5?i zWNrVmbai$6dg4M=)b_SodN_FxJQxiCiPzpP-2JM%eau?p6b>@-tJnIxZsSfc$Ou^Z zXY_l^>En&uN$ae0p=|2?qEgt;O@liKujtLXhn}xLLkPNZG?llM(cr zW|e5ir~LOyBJsGvV8RyuKPiRX0fu+S1+Jyu<=URkO+S4H?}<`^4sCzmSDVzWqx<{e z-{UtunKBt)t!=Pc@5mZMyhM*&wZg`L-`qiPz=5^$8)M{Uo zIg1hJ%yUjo6T5Rbt78?zkbZ3NqbPUT(C}p7dj<;IHwhXBv6gkir&m& zG476m>kG-iM4Bxb)}}|ShG^CfyDdv@^S@D_hlscLvbe-(SK!HcgYSrs~C{srJs}zH{N=gg65hLtkINn$V#3%*PG*h$2exom4a*uWHMktYT8BPyNouJ(bA# zEImCd;m7L%sn7dqRny-W(|hJ;N8jg@i_<;g*_)wk*v4)?cuWge*vMWBR)+jWVxF2l z>8Wo9;l?X7xf|=^(&gNuwiMfJX+nM4K=o$QPPbX~@^lpDz;kaD7O2VaR<@%r&?1DE z53;<kV2+?=@y;84h3y<8NQKpgK3%+@B{&~rjUH6hoGJUDL1Z?8ck-_I zr7*{iHOUP}*sl8+AxO{gACK^K`-vQk^!sgqn|n`os(mI=e(O}HYrr8|c6bjDu#5<1 zMT>AmB`A??JcNIOP=VQa7%9>@|4xiMcNZ6AhJ%XN9J4(cXkl#Fzo^irNOfi3>SELr zG34s~XUpEPe?0%WD)U$U#{L>(?Ch5`FZa%XPm@ll5NOE{*znIkn@raa7dkhk_K8zJ zBeX?W9AqGHySh`NnfOwQ9eiayfq9mNa3vhpWj4f$-vi|;enIeKiJjE)ouOKq(sY5h z&ASXg?Yug9aBO3JlKO@0PJT4_yRftK?W0c(?@Z&mvT1Tyo!^*Jgk;&b%GX+x`t0_5 zVXu*}fbRRdRcFMf!n?w!f}#%Y%h6k%?pQ16pAVhuw%crn$W#UD?5j%aT$5~ZCS##$$cpE_L=;A(EF@mvS9p=tgS2_KmypFH&pEXq zwSHT^n!q3Cjl`$p115?lI_eOF_=KrRA8)9hv{LYYzi+UW&z&=8rl8RJPnJmi>r{{F z_t9IxJXkeBB0G{af}QMFofG~Sy5*e3#s73C_X zJIM22e+I?e!i7_5oB*Q636=yYMQ=e>nvL>%p+BO2Q_^C@F%_ODCj&WQs*4^S{w5yA z<;Ri_XO4=RfV$wHXSv+^2-52C(Tw3J3E8tnPW^$S>RbnGPo>T%1`dM}Y6nio5Lv4X zZ;FIy{0hY4Eky?CwK0o665ocE*Q;N=R&M-$pGQpm-55$2YVY)ITBgKq#7IFN6CiE!;jGBQ5Pu zw!!^;>G=N63I=9D;P)fth44@@dsjm=>f&sk0f+tUkmuCg8KhqJlLcdV7NB?Mkt5mh zw=J7Od7cfxTYi;sP|3{D{e%+DLK^LgnHaEwe=juDi;r1mm`;+cX*_bykEcDZO$K3d z*{#YkEhHZ=+~>;M6RZPS!{*w{TJ@EWR@ulJD)cCLiXkYr8X8G1yT{L~;Sd664ejY= zRbFGA{#rR_X6QMBEaSOZ9LzNe&5fz;A-2kYKOJPtmE^k7wea#sXiAqLr!BjX4Vl79 zX!aoD*joKlxF=_K4|n7haBtcC70FGH+jj3>)a#o5_K8FT#H0K}H$AXj4N);>?qzZu zNdyRgi#5^yM44*|IACcU_?P?>iWDlgg?%)P9Ir*|4BJ_(#nuo1)J>B@s4Al2A$2fc zp%g-a2DYIk+yE;Lf(*V@q*YVZV7g|+bHv69S~W-~$iGh3O%+;qm*>Y=3Dqy+l6_pg z#>?MSCDT;=Kp@kv!W=5$;gX)`ckZe>Zyh-6dBa7>Os~$4qTU{Z>%Hf>&-#~e#~Vgz zhf*bhc<}M>b@z~OXP4i!I<^lr@0R@B-DInJ-wxtjtK#7gE*_FVXF5`vcA6x2$dMRQ zn~e?(H3TMprTIRA@`RIrNp#0_21$u0Bzab}RU?cwfYx%0NVyY-sDh$E)ZHF&G2Uhp zVN<(9o(;%KRyOu9mS*#np$9rBD}Pu6lJUQghT;hTNJGO)bO9dswmvycO&*s~M6sXT zX$T@x_w0Rk#~2}gyN~?*_r>VKp&BT%3+T(Ftbg2azxN>x=_$J)adX3(&}(8Z36e!a z?+N_m0kXhw9b%Wd&%lKT5e%8ik;jHV3YT!yw5ihGxxg`dq67pDtRbX&EV#j}ipI^f zS<7RP1oq=tIMiEa4^TU)(vzX6QyuM;GRPfMmZyqQwI%8j6@Vz_1m_@sW7-!z9y*)r zOaCK~F8#ocX`{>fXAdFPnhn>NBKrHQ-~3dPJhE+f%83Wt>e zrp;tdiRqX^A&KOON=tBl(Ini}j#+v9E}rrEr*>*>VUwfz%f>b8^nvB=22%lRT@U<& zHGg}(e7o=FATPjwY9aJrG(yg87W*h48-n%O#CT?ttBZZYV@r?FsJ>75hC_zOlbzRP zaevVDELrN3=y*s@9yv7M{+aagtUib~odg;=5|~-r?)mO@rJl<2#Q+JAzk|;7#2}z_ zj4r1_B^&Kt?AhJmAD#hG;?kNpNTZQln5JBL#K36<@3)mWHYI?r^k&E{_3c$g>^<^) zDsyA%Bv+8&*C>UoCWWcj#Ga{-V!SG{&NGad>6dMEf!Gd3GR8`7?~y%J!Cg*Lt(=GU zUSQ7pGC>)CsLH6pSjd_F!`DuP26uwHy9Rd+P8c%4AVGsm0t5>X+$Fd}aCeu%-Su+Mxv%Q|_0&%r}gvtg3C9&)6hAUn0`qWfihJI`qK9f`0-G zK&BZbfQXzzU*ZC~Jqzq?U%=kr z=v}YN;&s0L`4wHg!K-cgIPARMwOS=`$u3qpkipNlbR4gli;MT6S0h+Ply?U#vN-v* zj?6X&D%%(|`6af!>sS9jYX-JZb{#I+U-K~km82h73dgt}dx4HLuNkYD9c0!tC1fE5 z86*o%rR9Wu$aV%?sW!;K1c;xdv7Ra;`*<}XCjNv$w!Zww{l6lt z_*sjJHsYN>Zgf$`I{^}lXaT_tNbQ<4@oL7HW(#)run@&xs;(~WHl|Uxh;sOd6?VYw z=9OdZ)2!QCUcR-fhn4nc`|InS-K~LwxsMY&J7KN&A4CP6v(?6vMtIBk8cL4)M|uzR zOd;iusfW!zp8m~E&ld@+u!nt$EVrK=E`QpM8Y&nAgWIRtU)z?b4t@8$eiNpRJh;Gv zUY)&;noTK0UKzLim!iU-;-BRpk8s})NR|&Q+Ynmx+acd|7mLAP?AF(ZOpiBWpZ0tA z=Qfk8n}AaSc(V-IhU-sTE<9##UO|1MKnS)$li+GZC9G#;0gH|b=%Iv+`>*p*K+jrK zfJ4Lz0c&GPd@P)8x0LGB+-_o6)exm93a~rrnw8ad)d%h4j4C-vfV1Pc;b!7-X(fiC zjyXAi!KI!d6(Ro>(Vwi^=2B+^kvjaOgS=9}Ou{TWZD|%D!O59~FC4|e&HtT?7m^nf zopFBf7F1Oe=tF{QgFF3imM!S|Qxdk{{8`Rx9dX}r!Ss*Fq86!6&5k$;pflHuoeJin4I%jsjg{eob+(R1S7 zfEwWmKqxt0tzdHV>ev!R`Yzo>B?LF995r1#Kuw&QjR%NPk~qqLCBb;iYf zKZkM?Afy*&uNzR{hI%xW(0%vyx2m|exM1Y)+jlKEz_zXb@v*dmO3~2ir101D(WUcq zmh;^5O51z_Wp#^fp662d(f7j<@7;%0cFy_KEX2qnhPj`C(HH2&`%G@M3y_+L6~~=z zwM_*J9x?I0#&x9)H*PVG4b{j&Qa;{3Gb}v*u+q(o=;xc1i<>AyThz6kYqpQRddFLP zIsYKfCm*OhzH|_&g%eIYG@ApuQMbQ%K~Yx9T&Piwm!0GokKrh#-|+>6-WKN2QmYwW zK3$g|jXPn-x3p5DTUS`(wiy==LU?htE^{?%gbLp!=U0349 zf9RRG>(J@(AfNb8v;v@w)@ni_S+~1r^;r#%Q4w}!MA?LCPBdP#Duj7|{gRmi{Ar=^ zW-(fJQE{n?=s;6AlGI{!;5)d@)LwKT7rnj!^L{j{X8N?{&iZlNHCZ*;5Wb*rSQiZ} zJVIC?{=!=ZQkF^v1b&y>)c3KbWpARd_<-o~%V>r&u)To0&t(s{KY9gM_*RWAsoUmc zgZsX%jK2_bF>XC`RtnkQ_Npi0u#ENn7YF>yEzRNN@6&0i=Rlww{Ha}o5C$+4j;7M! z*l-R1G5+`0g_}5+(Zv^Djy-Z}aj+!+Ftp3_FH)IhhYTw_ zchW~Xap9}GctF{o4#+0ucscT%r*)abx)<*>bDl zb4+_L`y1*Sh;-=a(ZjLDP(PO6i0!eC-c9fRr1*PfdX&cTI}zFx+#c4%4Iu8rJSIg& zX2A)NqS#04=K>6;zk zq6#%^Uqx((L2_Ki!qE&4+?aFKtoH>?SRW@tHGbC_{wy=hL~m>pY3Zfx_|MB(TvYyZ zIyQT|Nx>IZ##@IbjCA(!oK6#EYt?sPgp|W6_V=d8MfRz7lT8((>VaEis6Z^0ong23 zz5a2t*d9bV#_QvVTBJYO=U@XpA0$>~kb64Ehrl2R%nwee7N)r#M#;Iy{BkG2@v%n> zq8`y}2czS#4H zc)3A3ys|f(YMVC^NpY|a{_>+|!#S)q1YpjzgEiu*#BadgXl_=?#HG?3Wzi#6^l{b) zNpx?sk6Z@OvEx$&Uucdq&~PLzE>EdrBN(KTX+_hFJ~L1>R^e{lORdcFjuBDmw-wF_ za2f=RZ&Sde@Js<+dT{P$+1(mvP^`EA0WE3!nW8AA0ChnIry^_3W>i22iV-r3{hQ_HLXzJc=#j^b zldNA^!QZQtXncOwgb033#-FOcr@Xfb=1b;e5n(O!api41(#;l!Pur(<|5k@iZ$120r#@8= zWxO11$J{oDa9*p4Fx*DyOVS zpAQCr1wALbdZrft5gL>UYfp)T+yJBU z%3m4t~@P#TzCQ3wLFMCAi5sbdjZkRA-S{|yQnBDL> z3KHH#+6nJiwoX@~<*A_8&T+OteA}u4aN}B$k}A!o3HI^lZYbbT`>p5!IzrxG8m46+ zg6xhk$9wrv*KdmG`#Bo3pAC+nSH(0D_Zh7@lx6jiN|&JnCJ7W@DI2vrC(lY_U@#NIN(2|7-{vmfu}w4cV{+zql%0U&rkQ<7 zzBW95nKr3df!Ly`Eyv@UPh#XTU&ZQ>Z@j%-5dcWf6_-Cw zL_$;1p1eYEE>U0>ChLnSe^GN{9~~L#RF3tVn5}RB=NkH%ki7G3LTEI9fg>U$zAsT_ zF|~ga4AWGQyK-A~L-kI*&xx2y5>OfNF#m1ix6)D`?oTY`?tutdtGZF;+cIZ848In$ zI~4j!$%)c~(RWcdAOru>L*)2g!JBZC5;0>mx%Cix^_Yd0F^{!p;S%?UC2(z^{5L_Q zqt3oVS-fTZ6irj+BRNcowRxzTa{~-Sqv9dXw<;Ahj7!7!LJZf2P*V3zeNm{CN@$7= zl1sa5L)>B}a-D_DP2-l5m7BDhC<2mM9|t!#n|c~b&j?Kn(W_OuXM{la#Jvx(Hk^Ez zFtlK5@a6~(LN2^FEmD8YMta9$t5}Lz)6{0@YEyRc23fRZIQd1)-r1Z&l=z+@lJ3d1 z3}IyTA40(9%=j=twzv=uUB+Qd5jJ?=t$iCY-r#xVr^>+18xE&NXet(SyvSP{LH zlFKSbB4+$tnT3D$Xht$TpJ^axs7v5wc;jOV-jA9i4g-HbpfuS)MHO1`Y$ML^gQo*` z#WR~I>2}w=EFA|0A31?sh}ydnSNk^Y1IWpFf>~qnOh9h^KpUy(EO8G`pLL$jog+F>%Fr z-2wt)kh1ZoPvA#<+U-)PdZ${oQ>&qVf>k5iLYSv=hS-$49k*D8l63EUEGwEtNFB|QOvmGFTMQK zI3Y&9AZ#V|f~`CzuGd;lHBX8ApeOdpdiDNnYL>{5lfc5*%)Vmab&AekV5hLX-)AA^k;Q-DK}6dj}3dv=J5iSO`7SLCipfvfrL1n7Q# ziI8rbjh(OSt?Hf#U%M@r|7aPEzILm){VC)~Yu6dDP+Z@+=TYbwjttr}Q_UR`g?y}O zqh(v_&ZWr8B_$b!HZFfV1*B*ZS*aDZv8 z^$~{)JgJY9?G#vmPviZn*J}Xd?Pe>hI-}O$P%;2@Ks@Qx^qSV%7!P<%9#lE=P;n`u6 z8^b~oup*c6YiX)<^~a+-suclK=ThL&^0HI+17H?~pxg9MvJ&O`tds@0J$88IyxCn*EX0BmlQR(0-kvF zIt^yIc4o2jQ{DtIWO1{)wG*9_=P5% zyKQt0AkJ< zNUTC1K=<5a(#>j?!OgcEn(K@yxYt7=JikbSo44cJB~b-dhAi+%RSc#{bqh6ZhQPgS zDgDS66G~WLG^ddihEl!1xLO?C%=OGcVVF$ffRAJn7>;NvSrt%g>xBjfOZ@=h*^+T7 zdW`A;tQp>H(RaZ_)k&z{1&BI#|=-( zMkPR2gYAmu;nRb7MkwU+EdbpM|o;@(ZJ=fJu~ z>c(&Oh+fpAUxb#M2&|w`I0*`qd*AS>fH+UMpnML$Fb0> zcR=B@Puehv91zZ_G){}w{2Pg>`SmRg*$M!q=~)BCK4$D~jQif?hRbGQy?s}MYq2gB zB5YZj838vxtem9vd#J$B>f6}%hhPJBOXHNeP5O%{q3;;-KAiQ3c}26QU7*EM+B*qpBk z0Wg*mGXC<5Ao>(&heJL-y6-%OC59Y+w`7`|%(4Q&kv zd!5aVLGi5JgzqnQ`W-QM7lrnlQM2--k`E=%{dN&&$;}3Jc$wCp9U(@Ebv|A0XvJWg z)jN!tqvS(89x6PXGBJ&;&+>qq^?-k(s$TE$Q$4(lxodLX5_&ey`mWTc`@v=dW*Jt^IJl<^)|rb&%f_{a zkE`VsC#OW~tSC$7Zb2Qj_ zKWUS-i4iUW-4T8I6ttZ82eJlkXfkGg+)JcWEroJP&teM9K;%jIm~HBj8iz1ezM^gB zWbRA>t3Urn%>rjOTKy~@yh->;-t_D~fH9Ii2JINdT=xhS_ANYv)~A`&8;W)BEzXnjlo_hHrPreAAy_xc14cRh#-4NP&rG9h?s|ny!j{` z+0P?9GUlO(0I9R2IVQCezWOF%_vk2OWDaREdqFMG?~`wT>q10DMd{=Xd6~GLoMzE5 zcMs;JMn08S2>AHu?Vhvpcg%8d@Kf#I42fR-BaY7Wnq8UUihu{W|<@x2*!YN|#PJ6o%4&oq_ z1X)Xw>3Gx>o4-rTRVu$gU&hecI^ZAes`jJs4;UtWmKfxc`VJ9}W0Pvb-9M0VJQCmz zKX$+Xf1P3K+E(x@59t}FLngfNaKOY=n5vc(%ks)hB@gx<_nhXneCe>?i}Lu}X;-12 zolDe&2*EZ*z^l`Sr|f%2XrX)c=EjO2$w^%YJ}uKs@u(2g2sy=zlKnI5Z$G^$fqwN( zpZ&X^-d!Lz_3UuSG2@zxd9+JqPs!5tBeqeSCOpACG06+JfAg?0-^;RcT+m^0LM8&S zjoShOncH(AwTHSGRHls$=hey>SUc;H!#qX|5AhES(r@Hb2n-F{8O zR8Q^+_uR#4+cEkMP$uz4pK<2TjK-{@$ajt{or1|1J5yV(Fl!)~(hWRvYPgH?ELrh! z#_bl=OL|FP!I+(Y@5Y5hr=d7= zf3gaXi^g0W32kq@!PTyr76MgkAdghR!C?Ve6aGk?Wy&=~0WmV4h0ivx*c{MEO&r0$ zx8y2buhx?fqRo?)#Jl9G#s8St_(5vsNbPcWhqpT0op~PwuX5IpYu9-)Yk{2wr_=vO zIhBQX()P}OSkX)<8b^GjMd(GR}kP086C zuMMhJVq7w<3KcmF?cc#=X+fg?b>x#1lUm>x>&v$1u{Db%*K2ZGa~d}yZ*^8J_AYhL zvqk&u;;gI+)1^b#TTlIz9kNV+4aNW4!ixXue}OCHOmL9d|CH4F7IfDG!jPF8)w@DT zGE6y=t|5B}lpHK?e#_kSM|EbR`7Xoqe9LH_{d2#5xfxdul|s9QYmsEUz_ZIPxZP<-5+ zM}j;WEvr@ZU$V6IE3BCEwY4=Ah+bxSkw1^ub7_RnTU}1d?;m*; zW}=_V4))X5Rs~H*B6v>(yTU_lZIx+>IE#waKC-*MtmPkw3{_Jt**S@)Vy=;|nw$Km zz|fdZ%noV{gf**3c7P%|E2@+yeBa&+D@!~2bWeK?81DptObd&ba@TSex8NKiYI3s2 zEhG7%T=n)DR_%ji9OgZer-E*#|hf5!0| zl|b(XVIX$YJV$;Nmq^%||7V2WTb-Gpm7Np%(iUd?)7sTPje-2LVfu&S4#TJ*lJ`YA z&_x;bYQ@35PtP?050=8QK0eXIfm~nc3?%ghRMTw~;Xu!(@mI!!Q{sb2LuDHD*|~_4 zwZWU}Mp_wp2CNaw9&0}X2sp(1;-(k`MtklNPZMunQ0_~3$r>&<$lt?3i2rNel&Ivm z48rLjTU0X#E9P7*esNU$aLf=MlCZ0dF3aIFQck6RL4)~xl6=Itkkr_VtZ?}Ym%E)* zhZ>+wi>QS6T1tx&jg3lZ&7fX=p+Xpy&leNV;37aE>nM-vl5NFI>8Hab5m%N3?@YBk zUBca{W$D?|H65@ZevnYa`ZQi|l+yj^eW&Zjg>+x1Wk2_nuoQ<5RRKgl{?Xk?R2kH_2;o(VXZbMY}Ym2H(Sl>QwVEFjP;k7ao>fGMzcU z&14CMcZ4aq!`GIP_*1Ir=!<>>AL;uLH0{NCtJ|8d8}k)DB9Gx4+eAUM%A|@n5+fUu z>q)4RTSuaE5Y>9e)K?M=_FgWM;qe5{MRAoM$avv?@6^%jXrg&ySy&j-!lqq4wBeRN zENyBnn(Agn=0^jYc(`wxV`JKn{M<5id%tMKmn&+m-)@zTl`RyWS%)~y-CQ57T%oM? zkMYknq*W51^TsipMIfzM1PL-);LB>0Dis%h%QlpAqN++k?XJF4R756C#gIFQvATM# zAUtj(ZeBUz7dfR;OBLE7XMrsJ_xz4mIU{glh))>u%Mh&x~x+GLwOV$ojmcGH*ZGi^+ay|z7 zI_N9^F4a@{UCA+F36{4si5M5EJG6`#`e|Can%@%x)_?u*x%oB6Jw!G}18c&7`&h@5 zGJKvUO0|{|`d0y&EH(>W?__@sc5zY9K6HWf&B^Ndt-SwrGrRa-Qz^AKd^5Ot0Pv%D zs&oi+bS4P$_|%#po+>WBdM>V6ZeE^h&@3;gpT*uBIpKO&d5cY+O>yM?M)diXCjzc) jMwqzehy+jE5Mf?_Z!Z!+KZfA{nO0r>_kJAMCI9|Eujz&s delta 79989 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 kClFHL!Z7Z$Mr2 tomorrow", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "age > tomorrow", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), expectedStatus: 400, expectedError: "can't convert 'tomorrow' to a number", }, { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -126,7 +126,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s", "exclude_ids": [%d, %d]}`, testdata.AllContactsGroup.UUID, testdata.Bob.ID, testdata.George.ID), + body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s", "exclude_ids": [%d, %d]}`, testdata.ActiveGroup.UUID, testdata.Bob.ID, testdata.George.ID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -153,7 +153,7 @@ func TestSearch(t *testing.T) { }, { "term": { - "groups": "d1ee73f0-bdb5-47ce-99dd-0c95d4ebf008" + "groups": "b97f69f7-5edf-45c7-9fda-d37066eae91d" } }, { @@ -188,7 +188,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "AGE = 10 and gender = M", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "AGE = 10 and gender = M", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, @@ -204,7 +204,7 @@ func TestSearch(t *testing.T) { { method: "POST", url: "/mr/contact/search", - body: fmt.Sprintf(`{"org_id": 1, "query": "", "group_uuid": "%s"}`, testdata.AllContactsGroup.UUID), + body: fmt.Sprintf(`{"org_id": 1, "query": "", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), esResponse: singleESResponse, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, From 7f7487e041dfa444df2d454e6be1c55040e76b05 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 4 Apr 2022 17:30:25 -0500 Subject: [PATCH 26/97] Fix tests --- core/models/groups_test.go | 7 ++++++- core/models/search_test.go | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/models/groups_test.go b/core/models/groups_test.go index 8917aa77b..e881dac9c 100644 --- a/core/models/groups_test.go +++ b/core/models/groups_test.go @@ -40,12 +40,17 @@ func TestLoadGroups(t *testing.T) { name string query string }{ + {testdata.ActiveGroup.ID, testdata.ActiveGroup.UUID, "Active", ""}, + {testdata.ArchivedGroup.ID, testdata.ArchivedGroup.UUID, "Archived", ""}, + {testdata.BlockedGroup.ID, testdata.BlockedGroup.UUID, "Blocked", ""}, {testdata.DoctorsGroup.ID, testdata.DoctorsGroup.UUID, "Doctors", ""}, {testdata.OpenTicketsGroup.ID, testdata.OpenTicketsGroup.UUID, "Open Tickets", "tickets > 0"}, + {testdata.StoppedGroup.ID, testdata.StoppedGroup.UUID, "Stopped", ""}, {testdata.TestersGroup.ID, testdata.TestersGroup.UUID, "Testers", ""}, } - assert.Equal(t, 3, len(groups)) + assert.Equal(t, 7, len(groups)) + for i, tc := range tcs { group := groups[i].(*models.Group) assert.Equal(t, tc.uuid, group.UUID()) diff --git a/core/models/search_test.go b/core/models/search_test.go index 702d5719d..92a63320b 100644 --- a/core/models/search_test.go +++ b/core/models/search_test.go @@ -228,6 +228,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ExpectedTotal: 1, }, { + Group: testdata.ActiveGroup, Query: "goats > 2", // no such contact field ExpectedError: "error parsing query: goats > 2: can't resolve 'goats' to attribute, scheme or field", }, From 407a420fb9c1583f7ffa5110e6035ab4b860a82d Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 5 Apr 2022 11:48:45 -0500 Subject: [PATCH 27/97] Fix mapping of flow assets to their IDs --- core/handlers/base_test.go | 1 + core/models/search.go | 5 +++-- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/handlers/base_test.go b/core/handlers/base_test.go index 3af2ed672..b486e5abd 100644 --- a/core/handlers/base_test.go +++ b/core/handlers/base_test.go @@ -145,6 +145,7 @@ func createTestFlow(t *testing.T, uuid assets.FlowUUID, tc TestCase) flows.Flow definition.NewLocalization(), nodes, nil, + nil, ) require.NoError(t, err) diff --git a/core/models/search.go b/core/models/search.go index 3b2d78f6b..da0205584 100644 --- a/core/models/search.go +++ b/core/models/search.go @@ -10,13 +10,14 @@ import ( "github.com/nyaruka/goflow/assets" "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/contactql/es" - "github.com/nyaruka/goflow/flows" "github.com/olivere/elastic/v7" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) +// AssetMapper maps resolved assets in queries to how we identify them in ES which in the case +// of flows and groups is their ids. We can do this by just type cracking them to their models. type AssetMapper struct{} func (m *AssetMapper) Flow(f assets.Flow) int64 { @@ -24,7 +25,7 @@ func (m *AssetMapper) Flow(f assets.Flow) int64 { } func (m *AssetMapper) Group(g assets.Group) int64 { - return int64(g.(*flows.Group).Asset().(*Group).ID()) + return int64(g.(*Group).ID()) } var assetMapper = &AssetMapper{} diff --git a/go.mod b/go.mod index e6a1b0d50..aff5adc14 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.17.1 - github.com/nyaruka/goflow v0.155.0 + github.com/nyaruka/goflow v0.156.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index 819ba4692..2e349b7fb 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.17.1 h1:4bbNp+0/BIbne4VDiKOxh3kcbdvEu/WsrsZiG/VyRZ8= github.com/nyaruka/gocommon v1.17.1/go.mod h1:nmYyb7MZDM0iW4DYJKiBzfKuE9nbnx+xSHZasuIBOT0= -github.com/nyaruka/goflow v0.155.0 h1:et7QeHEFG7WKJrR78Q2/5PkOp+3JuneFui6B7+gFibQ= -github.com/nyaruka/goflow v0.155.0/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= +github.com/nyaruka/goflow v0.156.1 h1:bRVNuuMkbbmkKsphyLI9+F57kVGBfFfu2rjLZ+0er/U= +github.com/nyaruka/goflow v0.156.1/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 86f32ecc37b92b07779f694c29170de2cfe854a4 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 5 Apr 2022 16:38:17 -0500 Subject: [PATCH 28/97] Fix logging statement --- core/models/search.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/core/models/search.go b/core/models/search.go index da0205584..c54a7b7e1 100644 --- a/core/models/search.go +++ b/core/models/search.go @@ -111,15 +111,7 @@ func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa * return nil, nil, 0, err } - logrus.WithFields(logrus.Fields{ - "org_id": oa.OrgID(), - "parsed": parsed, - "group_uuid": group, - "query": query, - "elapsed": time.Since(start), - "page_count": len(ids), - "total_count": results.Hits.TotalHits, - }).Debug("paged contact query complete") + logrus.WithFields(logrus.Fields{"org_id": oa.OrgID(), "query": query, "elapsed": time.Since(start), "page_count": len(ids), "total_count": results.Hits.TotalHits}).Debug("paged contact query complete") return parsed, ids, results.Hits.TotalHits.Value, nil } From 57d3991b01691b45c94f1fe1da739dea4b6235fc Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 6 Apr 2022 15:51:59 -0500 Subject: [PATCH 29/97] Update CHANGELOG.md for v7.3.5 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d21b1d4d8..d0f82cc25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.5 +---------- + * Update to latest goflow which requires mapping groups and flows to ids for ES queries + v7.3.4 ---------- * Fix unstopping of contacts who message in From b4e3bff6b25eb6e342cc0e0067ab64fd84b852ee Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 8 Apr 2022 12:21:35 -0500 Subject: [PATCH 30/97] Always update modified_on when a sprint ends --- core/handlers/contact_flow_changed.go | 28 ------------------- core/handlers/contact_urns_changed_test.go | 9 ------ core/handlers/sprint_ended.go | 32 ++++++++++++++++++++++ core/hooks/commit_flow_changes.go | 4 +-- core/models/events.go | 17 ++++++------ core/models/sessions.go | 10 ++----- 6 files changed, 45 insertions(+), 55 deletions(-) delete mode 100644 core/handlers/contact_flow_changed.go create mode 100644 core/handlers/sprint_ended.go diff --git a/core/handlers/contact_flow_changed.go b/core/handlers/contact_flow_changed.go deleted file mode 100644 index 3a5ef9667..000000000 --- a/core/handlers/contact_flow_changed.go +++ /dev/null @@ -1,28 +0,0 @@ -package handlers - -import ( - "context" - - "github.com/jmoiron/sqlx" - "github.com/nyaruka/goflow/flows" - "github.com/nyaruka/mailroom/core/hooks" - "github.com/nyaruka/mailroom/core/models" - "github.com/nyaruka/mailroom/runtime" - "github.com/sirupsen/logrus" -) - -func init() { - models.RegisterEventHandler(models.TypeContactFlowChanged, handleContactFlowChanged) -} - -// handleContactFlowChanged handles contact_flow_changed events which the engine doesn't produce but we append to update a contact's current flow -func handleContactFlowChanged(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scene *models.Scene, e flows.Event) error { - event := e.(*models.ContactFlowChangedEvent) - - logrus.WithFields(logrus.Fields{"contact_uuid": scene.ContactUUID(), "session_id": scene.SessionID(), "flow_id": event.FlowID}).Debug("contact flow changed") - - scene.AppendToEventPreCommitHook(hooks.CommitFlowChangesHook, event) - scene.AppendToEventPostCommitHook(hooks.ContactModifiedHook, event) - - return nil -} diff --git a/core/handlers/contact_urns_changed_test.go b/core/handlers/contact_urns_changed_test.go index 6ccfc4054..3bd8bd021 100644 --- a/core/handlers/contact_urns_changed_test.go +++ b/core/handlers/contact_urns_changed_test.go @@ -2,7 +2,6 @@ package handlers_test import ( "testing" - "time" "github.com/nyaruka/gocommon/urns" "github.com/nyaruka/goflow/flows" @@ -20,8 +19,6 @@ func TestContactURNsChanged(t *testing.T) { // add a URN to george that cathy will steal testdata.InsertContactURN(db, testdata.Org1, testdata.George, urns.URN("tel:+12065551212"), 100) - now := time.Now() - tcs := []handlers.TestCase{ { Actions: handlers.ContactActionMap{ @@ -55,12 +52,6 @@ func TestContactURNsChanged(t *testing.T) { Args: []interface{}{testdata.George.ID}, Count: 1, }, - // two contacts updated, both cathy and evan since their URNs changed - { - SQL: "select count(*) from contacts_contact where modified_on > $1", - Args: []interface{}{now}, - Count: 2, - }, }, }, } diff --git a/core/handlers/sprint_ended.go b/core/handlers/sprint_ended.go new file mode 100644 index 000000000..b50bc7599 --- /dev/null +++ b/core/handlers/sprint_ended.go @@ -0,0 +1,32 @@ +package handlers + +import ( + "context" + + "github.com/nyaruka/goflow/flows" + "github.com/nyaruka/mailroom/core/hooks" + "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/runtime" + + "github.com/jmoiron/sqlx" +) + +func init() { + models.RegisterEventHandler(models.TypeSprintEnded, handleSprintEnded) +} + +func handleSprintEnded(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scene *models.Scene, e flows.Event) error { + event := e.(*models.SprintEndedEvent) + + // if contact's current flow has changed, add pseudo event to handle that + if scene.Session().SessionType().Interrupts() && event.Contact.CurrentFlowID() != scene.Session().CurrentFlowID() { + scene.AppendToEventPreCommitHook(hooks.CommitFlowChangesHook, scene.Session().CurrentFlowID()) + } + + // we assume that any sprint (i.e. an interaction with flows) requires an update to modified_on because + // it will have changed current flow or flow history - this isn't strictly true but maybe not worth + // optimizing because there the scenarios that violate this are so few + scene.AppendToEventPostCommitHook(hooks.ContactModifiedHook, event) + + return nil +} diff --git a/core/hooks/commit_flow_changes.go b/core/hooks/commit_flow_changes.go index 488c11428..a4335e4d2 100644 --- a/core/hooks/commit_flow_changes.go +++ b/core/hooks/commit_flow_changes.go @@ -19,8 +19,8 @@ func (h *commitFlowChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, updates := make([]interface{}, 0, len(scenes)) for s, evts := range scenes { // there is only ever one of these events per scene - event := evts[len(evts)-1].(*models.ContactFlowChangedEvent) - updates = append(updates, ¤tFlowUpdate{s.ContactID(), event.FlowID}) + flowID := evts[len(evts)-1].(models.FlowID) + updates = append(updates, ¤tFlowUpdate{s.ContactID(), flowID}) } // do our update diff --git a/core/models/events.go b/core/models/events.go index e92990d75..1260aad8d 100644 --- a/core/models/events.go +++ b/core/models/events.go @@ -260,18 +260,19 @@ func ApplyModifiers(ctx context.Context, rt *runtime.Runtime, oa *OrgAssets, mod return eventsByContact, nil } -// TypeContactFlowChanged is the type of our event that the contact flow changed -const TypeContactFlowChanged string = "contact_flow_changed" +// TypeSprintEnded is a pseudo event that lets add hooks for changes to a contacts current flow or flow history +const TypeSprintEnded string = "sprint_ended" -type ContactFlowChangedEvent struct { +type SprintEndedEvent struct { events.BaseEvent - FlowID FlowID + Contact *Contact } -func NewContactFlowChangedEvent(flowID FlowID) *ContactFlowChangedEvent { - return &ContactFlowChangedEvent{ - BaseEvent: events.NewBaseEvent(TypeContactFlowChanged), - FlowID: flowID, +// NewSprintEndedEvent creates a new sprint ended event +func NewSprintEndedEvent(c *Contact) *SprintEndedEvent { + return &SprintEndedEvent{ + BaseEvent: events.NewBaseEvent(TypeSprintEnded), + Contact: c, } } diff --git a/core/models/sessions.go b/core/models/sessions.go index 6a7dce403..c70ef2f2f 100644 --- a/core/models/sessions.go +++ b/core/models/sessions.go @@ -446,10 +446,7 @@ func (s *Session) Update(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, eventsToHandle = append(eventsToHandle, sprint.Events()...) } - // if contact's current flow has changed, add pseudo event to handle that - if s.SessionType().Interrupts() && contact.CurrentFlowID() != s.CurrentFlowID() { - eventsToHandle = append(eventsToHandle, NewContactFlowChangedEvent(s.CurrentFlowID())) - } + eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contact)) // apply all our events to generate hooks err = HandleEvents(ctx, rt, tx, oa, s.scene, eventsToHandle) @@ -708,10 +705,7 @@ func InsertSessions(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *O eventsToHandle = append(eventsToHandle, sprints[i].Events()...) } - // if contact's current flow has changed, add pseudo event to handle that - if s.SessionType().Interrupts() && contacts[i].CurrentFlowID() != s.CurrentFlowID() { - eventsToHandle = append(eventsToHandle, NewContactFlowChangedEvent(s.CurrentFlowID())) - } + eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contacts[i])) err = HandleEvents(ctx, rt, tx, oa, s.Scene(), eventsToHandle) if err != nil { From 962e373d184dd4c8f90b3cfc8340cf24ebc58f3d Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 8 Apr 2022 13:10:01 -0500 Subject: [PATCH 31/97] Optimize setting modified_on by handling flow entered events --- core/handlers/contact_status_changed_test.go | 7 +--- core/handlers/flow_entered.go | 35 ++++++++++++++++ core/handlers/flow_entered_test.go | 42 ++++++++++++++++++++ core/handlers/noop.go | 1 - core/handlers/session_triggered.go | 5 +-- core/handlers/sprint_ended.go | 15 ++++--- core/models/events.go | 6 ++- core/models/sessions.go | 4 +- 8 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 core/handlers/flow_entered.go create mode 100644 core/handlers/flow_entered_test.go diff --git a/core/handlers/contact_status_changed_test.go b/core/handlers/contact_status_changed_test.go index 93a77b600..05c7aad89 100644 --- a/core/handlers/contact_status_changed_test.go +++ b/core/handlers/contact_status_changed_test.go @@ -11,12 +11,9 @@ import ( ) func TestContactStatusChanged(t *testing.T) { - ctx, rt, db, _ := testsuite.Get() + ctx, rt, _, _ := testsuite.Get() - defer testsuite.Reset(testsuite.ResetAll) - - // make sure cathyID contact is active - db.Exec(`UPDATE contacts_contact SET status = 'A' WHERE id = $1`, testdata.Cathy.ID) + defer testsuite.Reset(testsuite.ResetData) tcs := []handlers.TestCase{ { diff --git a/core/handlers/flow_entered.go b/core/handlers/flow_entered.go new file mode 100644 index 000000000..aae420089 --- /dev/null +++ b/core/handlers/flow_entered.go @@ -0,0 +1,35 @@ +package handlers + +import ( + "context" + + "github.com/nyaruka/goflow/flows" + "github.com/nyaruka/goflow/flows/events" + "github.com/nyaruka/mailroom/core/hooks" + "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/runtime" + + "github.com/jmoiron/sqlx" + "github.com/sirupsen/logrus" +) + +func init() { + models.RegisterEventHandler(events.TypeFlowEntered, handleFlowEntered) +} + +func handleFlowEntered(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scene *models.Scene, e flows.Event) error { + event := e.(*events.FlowEnteredEvent) + + logrus.WithFields(logrus.Fields{ + "contact_uuid": scene.ContactUUID(), + "session_id": scene.SessionID(), + "flow_name": event.Flow.Name, + "flow_uuid": event.Flow.UUID, + }).Debug("flow entered") + + // we've potentially changed contact flow history.. only way to be sure would be loading contacts with their + // flow history, but not sure that is worth it given how likely we are to be updating modified_on anyway + scene.AppendToEventPreCommitHook(hooks.ContactModifiedHook, event) + + return nil +} diff --git a/core/handlers/flow_entered_test.go b/core/handlers/flow_entered_test.go new file mode 100644 index 000000000..f30f2fc42 --- /dev/null +++ b/core/handlers/flow_entered_test.go @@ -0,0 +1,42 @@ +package handlers_test + +import ( + "testing" + + "github.com/nyaruka/goflow/flows" + "github.com/nyaruka/goflow/flows/actions" + "github.com/nyaruka/mailroom/core/handlers" + "github.com/nyaruka/mailroom/testsuite" + "github.com/nyaruka/mailroom/testsuite/testdata" + "github.com/stretchr/testify/assert" +) + +func TestFlowEntered(t *testing.T) { + ctx, rt, _, _ := testsuite.Get() + + defer testsuite.Reset(testsuite.ResetAll) + + oa := testdata.Org1.Load(rt) + + flow, err := oa.FlowByID(testdata.PickANumber.ID) + assert.NoError(t, err) + + tcs := []handlers.TestCase{ + { + Actions: handlers.ContactActionMap{ + testdata.Cathy: []flows.Action{ + actions.NewEnterFlow(handlers.NewActionUUID(), flow.Reference(), false), + }, + }, + SQLAssertions: []handlers.SQLAssertion{ + { + SQL: `select count(*) from contacts_contact where current_flow_id = $1`, + Args: []interface{}{flow.ID()}, + Count: 1, + }, + }, + }, + } + + handlers.RunTestCases(t, ctx, rt, tcs) +} diff --git a/core/handlers/noop.go b/core/handlers/noop.go index a2f46c6fd..28a1471a0 100644 --- a/core/handlers/noop.go +++ b/core/handlers/noop.go @@ -16,7 +16,6 @@ func init() { models.RegisterEventHandler(events.TypeEnvironmentRefreshed, NoopHandler) models.RegisterEventHandler(events.TypeError, NoopHandler) models.RegisterEventHandler(events.TypeFailure, NoopHandler) - models.RegisterEventHandler(events.TypeFlowEntered, NoopHandler) models.RegisterEventHandler(events.TypeMsgWait, NoopHandler) models.RegisterEventHandler(events.TypeRunExpired, NoopHandler) models.RegisterEventHandler(events.TypeRunResultChanged, NoopHandler) diff --git a/core/handlers/session_triggered.go b/core/handlers/session_triggered.go index f8fdce670..50dadb317 100644 --- a/core/handlers/session_triggered.go +++ b/core/handlers/session_triggered.go @@ -17,16 +17,15 @@ func init() { models.RegisterEventHandler(events.TypeSessionTriggered, handleSessionTriggered) } -// handleSessionTriggered queues this event for being started after our scene are committed func handleSessionTriggered(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scene *models.Scene, e flows.Event) error { event := e.(*events.SessionTriggeredEvent) logrus.WithFields(logrus.Fields{ "contact_uuid": scene.ContactUUID(), "session_id": scene.SessionID(), - "flow": event.Flow.Name, + "flow_name": event.Flow.Name, "flow_uuid": event.Flow.UUID, - }).Debug("scene triggered") + }).Debug("session triggered") scene.AppendToEventPreCommitHook(hooks.InsertStartHook, event) diff --git a/core/handlers/sprint_ended.go b/core/handlers/sprint_ended.go index b50bc7599..34ec40844 100644 --- a/core/handlers/sprint_ended.go +++ b/core/handlers/sprint_ended.go @@ -18,15 +18,18 @@ func init() { func handleSprintEnded(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scene *models.Scene, e flows.Event) error { event := e.(*models.SprintEndedEvent) - // if contact's current flow has changed, add pseudo event to handle that - if scene.Session().SessionType().Interrupts() && event.Contact.CurrentFlowID() != scene.Session().CurrentFlowID() { + // if we're in a flow type that can wait then contact current flow has potentially changed + currentFlowChanged := scene.Session().SessionType().Interrupts() && event.Contact.CurrentFlowID() != scene.Session().CurrentFlowID() + + if currentFlowChanged { scene.AppendToEventPreCommitHook(hooks.CommitFlowChangesHook, scene.Session().CurrentFlowID()) } - // we assume that any sprint (i.e. an interaction with flows) requires an update to modified_on because - // it will have changed current flow or flow history - this isn't strictly true but maybe not worth - // optimizing because there the scenarios that violate this are so few - scene.AppendToEventPostCommitHook(hooks.ContactModifiedHook, event) + // if current flow has changed then we need to update modified_on, but also if this is a new session + // then flow history may have changed too in a way that won't be captured by a flow_entered event + if currentFlowChanged || !event.Resumed { + scene.AppendToEventPostCommitHook(hooks.ContactModifiedHook, event) + } return nil } diff --git a/core/models/events.go b/core/models/events.go index 1260aad8d..4a82bad7f 100644 --- a/core/models/events.go +++ b/core/models/events.go @@ -266,13 +266,15 @@ const TypeSprintEnded string = "sprint_ended" type SprintEndedEvent struct { events.BaseEvent - Contact *Contact + Contact *Contact // model contact so we can access current flow + Resumed bool // whether this was a resume } // NewSprintEndedEvent creates a new sprint ended event -func NewSprintEndedEvent(c *Contact) *SprintEndedEvent { +func NewSprintEndedEvent(c *Contact, resumed bool) *SprintEndedEvent { return &SprintEndedEvent{ BaseEvent: events.NewBaseEvent(TypeSprintEnded), Contact: c, + Resumed: resumed, } } diff --git a/core/models/sessions.go b/core/models/sessions.go index c70ef2f2f..d2975f1e6 100644 --- a/core/models/sessions.go +++ b/core/models/sessions.go @@ -446,7 +446,7 @@ func (s *Session) Update(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, eventsToHandle = append(eventsToHandle, sprint.Events()...) } - eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contact)) + eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contact, true)) // apply all our events to generate hooks err = HandleEvents(ctx, rt, tx, oa, s.scene, eventsToHandle) @@ -705,7 +705,7 @@ func InsertSessions(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *O eventsToHandle = append(eventsToHandle, sprints[i].Events()...) } - eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contacts[i])) + eventsToHandle = append(eventsToHandle, NewSprintEndedEvent(contacts[i], false)) err = HandleEvents(ctx, rt, tx, oa, s.Scene(), eventsToHandle) if err != nil { From 9682d1d34a4f3b9f4d09484583f25b2c46dc01ec Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 11 Apr 2022 09:30:09 -0500 Subject: [PATCH 32/97] Update CHANGELOG.md for v7.3.6 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0f82cc25..fb7f5e4a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.6 +---------- + * Update modified_on for flow history changes by handling flow entered and sprint ended +events + v7.3.5 ---------- * Update to latest goflow which requires mapping groups and flows to ids for ES queries From dffc4980bcf948f5c36ee12d1869a0cbdc6d9164 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 12 Apr 2022 12:04:25 -0500 Subject: [PATCH 33/97] Update to latest goflow and start using httpx.DetectContentType --- core/ivr/ivr.go | 2 +- core/models/orgs.go | 2 +- go.mod | 5 +++-- go.sum | 11 +++++++---- web/ivr/ivr.go | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/ivr/ivr.go b/core/ivr/ivr.go index 7b5d36147..0ef5ab086 100644 --- a/core/ivr/ivr.go +++ b/core/ivr/ivr.go @@ -450,7 +450,7 @@ func ResumeIVRFlow( if body != nil { // guess our content type and set it - contentType := http.DetectContentType(body) + contentType := httpx.DetectContentType(body) w.Header().Set("Content-Type", contentType) _, err := w.Write(body) return err diff --git a/core/models/orgs.go b/core/models/orgs.go index 41d4bc59f..bf623166f 100644 --- a/core/models/orgs.go +++ b/core/models/orgs.go @@ -181,7 +181,7 @@ func (o *Org) StoreAttachment(ctx context.Context, rt *runtime.Runtime, filename content.Close() if contentType == "" { - contentType = http.DetectContentType(contentBytes) + contentType = httpx.DetectContentType(contentBytes) contentType, _, _ = mime.ParseMediaType(contentType) } diff --git a/go.mod b/go.mod index aff5adc14..1e96ab1aa 100644 --- a/go.mod +++ b/go.mod @@ -19,8 +19,8 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.17.1 - github.com/nyaruka/goflow v0.156.1 + github.com/nyaruka/gocommon v1.18.0 + github.com/nyaruka/goflow v0.157.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 @@ -41,6 +41,7 @@ require ( github.com/blevesearch/segment v0.9.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structs v1.0.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/go-mail/mail v2.3.1+incompatible // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect diff --git a/go.sum b/go.sum index 2e349b7fb..c87783649 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,8 @@ github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= +github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d h1:CIp8WnfXz70wJVQ0ytr3dswFYGoJbAxWgNvaLpiu3sY= github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= @@ -133,10 +135,10 @@ github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4 github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= -github.com/nyaruka/gocommon v1.17.1 h1:4bbNp+0/BIbne4VDiKOxh3kcbdvEu/WsrsZiG/VyRZ8= -github.com/nyaruka/gocommon v1.17.1/go.mod h1:nmYyb7MZDM0iW4DYJKiBzfKuE9nbnx+xSHZasuIBOT0= -github.com/nyaruka/goflow v0.156.1 h1:bRVNuuMkbbmkKsphyLI9+F57kVGBfFfu2rjLZ+0er/U= -github.com/nyaruka/goflow v0.156.1/go.mod h1:HhK+wn4aRji8qJgJR8l48hPiZxnwVDdWa0Ogy5ifnSQ= +github.com/nyaruka/gocommon v1.18.0 h1:pRSV63w449FVHrjeXJNNIyoD0k47ruqPq3fROuHBjD0= +github.com/nyaruka/gocommon v1.18.0/go.mod h1:+jVWR2FB6XTqFz7fjvVIZMFwp2B6uoaCk7NVLGnfPFM= +github.com/nyaruka/goflow v0.157.0 h1:t8ilxL1Fi38Y/fiYBTB8o+jknxeRwKprgxaXkIhjfqM= +github.com/nyaruka/goflow v0.157.0/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= @@ -220,6 +222,7 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200925080053-05aa5d4ee321/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= diff --git a/web/ivr/ivr.go b/web/ivr/ivr.go index 7120f8a6a..360f1bdad 100644 --- a/web/ivr/ivr.go +++ b/web/ivr/ivr.go @@ -362,7 +362,7 @@ func handleStatus(ctx context.Context, rt *runtime.Runtime, r *http.Request, w h return channel, nil, provider.WriteErrorResponse(w, errors.Wrapf(err, "error while preprocessing status")) } if len(body) > 0 { - contentType := http.DetectContentType(body) + contentType := httpx.DetectContentType(body) w.Header().Set("Content-Type", contentType) _, err := w.Write(body) return channel, nil, err From 2cbcc021237489993779efeefc37a299f153c923 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 12 Apr 2022 12:18:56 -0500 Subject: [PATCH 34/97] Update CHANGELOG.md for v7.3.7 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7f5e4a7..eecfc70c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.7 +---------- + * Update to latest goflow and start using httpx.DetectContentType + v7.3.6 ---------- * Update modified_on for flow history changes by handling flow entered and sprint ended From 09d368a1d0a1ae010a384b616787854a5244cfb6 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 14 Apr 2022 10:51:05 -0500 Subject: [PATCH 35/97] Update to codecov action v2 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4839a0f2f..db1b4fd6f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,9 +50,9 @@ jobs: - name: Upload coverage if: success() - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v2 with: - fail_ci_if_error: false + fail_ci_if_error: true release: name: Release From fe7ee45d8d33a3428b9200027f6c34c60c0ff7d7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 14 Apr 2022 11:34:38 -0500 Subject: [PATCH 36/97] Remove unused function --- core/models/contacts.go | 9 --------- core/models/contacts_test.go | 21 --------------------- 2 files changed, 30 deletions(-) diff --git a/core/models/contacts.go b/core/models/contacts.go index 8c543afcd..22ca0d506 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -1353,15 +1353,6 @@ func GetContactLocker(orgID OrgID, contactID ContactID) *redisx.Locker { return redisx.NewLocker(key, time.Minute*5) } -// UpdateContactModifiedBy updates modified by the passed user id on the passed in contacts -func UpdateContactModifiedBy(ctx context.Context, db Queryer, contactIDs []ContactID, userID UserID) error { - if userID == NilUserID || len(contactIDs) == 0 { - return nil - } - _, err := db.ExecContext(ctx, `UPDATE contacts_contact SET modified_on = NOW(), modified_by_id = $2 WHERE id = ANY($1)`, pq.Array(contactIDs), userID) - return err -} - // ContactStatusChange struct used for our contact status change type ContactStatusChange struct { ContactID ContactID diff --git a/core/models/contacts_test.go b/core/models/contacts_test.go index 8a34a0aca..d9b93b6bb 100644 --- a/core/models/contacts_test.go +++ b/core/models/contacts_test.go @@ -509,27 +509,6 @@ func TestUpdateContactLastSeenAndModifiedOn(t *testing.T) { assert.True(t, cathy.ModifiedOn().After(t2)) } -func TestUpdateContactModifiedBy(t *testing.T) { - ctx, _, db, _ := testsuite.Get() - - defer testsuite.Reset(testsuite.ResetAll) - - err := models.UpdateContactModifiedBy(ctx, db, []models.ContactID{}, models.UserID(0)) - assert.NoError(t, err) - - assertdb.Query(t, db, `SELECT count(*) FROM contacts_contact WHERE id = $1 AND modified_by_id = NULL`, testdata.Cathy.ID).Returns(0) - - err = models.UpdateContactModifiedBy(ctx, db, []models.ContactID{testdata.Cathy.ID}, models.UserID(0)) - assert.NoError(t, err) - - assertdb.Query(t, db, `SELECT count(*) FROM contacts_contact WHERE id = $1 AND modified_by_id = NULL`, testdata.Cathy.ID).Returns(0) - - err = models.UpdateContactModifiedBy(ctx, db, []models.ContactID{testdata.Cathy.ID}, models.UserID(1)) - assert.NoError(t, err) - - assertdb.Query(t, db, `SELECT count(*) FROM contacts_contact WHERE id = $1 AND modified_by_id = 1`, testdata.Cathy.ID).Returns(1) -} - func TestUpdateContactStatus(t *testing.T) { ctx, _, db, _ := testsuite.Get() From f53a2606cc19904c97003017dfe6a0db59e903b7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 14 Apr 2022 14:47:34 -0500 Subject: [PATCH 37/97] Use new contactfield.name and is_system fields --- core/models/fields.go | 51 +++++++++++++++++------------------------- mailroom_test.dump | Bin 1894478 -> 1894644 bytes 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/core/models/fields.go b/core/models/fields.go index 2a5658e87..f634a51a2 100644 --- a/core/models/fields.go +++ b/core/models/fields.go @@ -17,12 +17,12 @@ type FieldID int // Field is our mailroom type for contact field types type Field struct { f struct { - ID FieldID `json:"id"` - UUID assets.FieldUUID `json:"uuid"` - Key string `json:"key"` - Name string `json:"name"` - FieldType assets.FieldType `json:"field_type"` - System bool `json:"is_system"` + ID FieldID `json:"id"` + UUID assets.FieldUUID `json:"uuid"` + Key string `json:"key"` + Name string `json:"name"` + Type assets.FieldType `json:"field_type"` + System bool `json:"is_system"` } } @@ -39,7 +39,7 @@ func (f *Field) Key() string { return f.f.Key } func (f *Field) Name() string { return f.f.Name } // Type returns the value type for this field -func (f *Field) Type() assets.FieldType { return f.f.FieldType } +func (f *Field) Type() assets.FieldType { return f.f.Type } // System returns whether this is a system field func (f *Field) System() bool { return f.f.System } @@ -77,26 +77,17 @@ func loadFields(ctx context.Context, db sqlx.Queryer, orgID OrgID) ([]assets.Fie } const sqlSelectFields = ` -SELECT ROW_TO_JSON(f) FROM (SELECT - id, - uuid, - key, - label as name, - (SELECT CASE value_type - WHEN 'T' THEN 'text' - WHEN 'N' THEN 'number' - WHEN 'D' THEN 'datetime' - WHEN 'S' THEN 'state' - WHEN 'I' THEN 'district' - WHEN 'W' THEN 'ward' - END) as field_type, - field_type = 'S' as is_system -FROM - contacts_contactfield -WHERE - org_id = $1 AND - is_active = TRUE -ORDER BY - key ASC -) f; -` +SELECT ROW_TO_JSON(f) FROM ( + SELECT id, uuid, key, name, is_system, + (SELECT CASE value_type + WHEN 'T' THEN 'text' + WHEN 'N' THEN 'number' + WHEN 'D' THEN 'datetime' + WHEN 'S' THEN 'state' + WHEN 'I' THEN 'district' + WHEN 'W' THEN 'ward' + END) as field_type + FROM contacts_contactfield + WHERE org_id = $1 AND is_active = TRUE + ORDER BY key ASC +) f;` diff --git a/mailroom_test.dump b/mailroom_test.dump index 3e39779eb42107218535f89209ebb1c772d08ead..3d0f35b6998bbb44b605a9d81c49f049e74ab1ba 100644 GIT binary patch delta 69225 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 From f03cee139da0acbe781021c0c444fa612399a3e3 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 18 Apr 2022 10:57:19 -0500 Subject: [PATCH 38/97] Update CHANGELOG.md for v7.3.8 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eecfc70c7..db3e423da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.8 +---------- + * Use new contactfield.name and is_system fields + v7.3.7 ---------- * Update to latest goflow and start using httpx.DetectContentType From 0ad3b2ee2639df8f7b3dfd53d46bcfb05733b271 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 19 Apr 2022 17:42:14 -0500 Subject: [PATCH 39/97] Add endpoint to generate a flow start preview (WIP) --- core/models/groups_test.go | 52 +----- core/models/search.go | 2 +- core/models/search_test.go | 159 ++---------------- .../contacts/populate_dynamic_group_test.go | 43 +---- core/tasks/starts/worker_test.go | 54 ++---- testsuite/elastic.go | 55 +++++- web/contact/search_test.go | 64 ++----- web/flow/start.go | 151 +++++++++++++++++ web/flow/start_test.go | 25 +++ web/flow/testdata/preview_start.json | 150 +++++++++++++++++ 10 files changed, 436 insertions(+), 319 deletions(-) create mode 100644 web/flow/start.go create mode 100644 web/flow/start_test.go create mode 100644 web/flow/testdata/preview_start.json diff --git a/core/models/groups_test.go b/core/models/groups_test.go index e881dac9c..0cadd675a 100644 --- a/core/models/groups_test.go +++ b/core/models/groups_test.go @@ -12,7 +12,6 @@ import ( "github.com/nyaruka/mailroom/testsuite/testdata" "github.com/lib/pq" - "github.com/olivere/elastic/v7" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -60,7 +59,7 @@ func TestLoadGroups(t *testing.T) { } } -func TestDynamicGroups(t *testing.T) { +func TestSmartGroups(t *testing.T) { ctx, rt, db, _ := testsuite.Get() defer testsuite.Reset(testsuite.ResetAll) @@ -82,68 +81,32 @@ func TestDynamicGroups(t *testing.T) { oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshCampaigns|models.RefreshGroups) assert.NoError(t, err) - esServer := testsuite.NewMockElasticServer() - defer esServer.Close() + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() - es, err := elastic.NewClient( - elastic.SetURL(esServer.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) - assert.NoError(t, err) - - contactHit := `{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }` + es := mockES.Client() - cathyHit := fmt.Sprintf(contactHit, testdata.Cathy.ID) - bobHit := fmt.Sprintf(contactHit, testdata.Bob.ID) + mockES.AddResponse(testdata.Cathy.ID) + mockES.AddResponse(testdata.Bob.ID) + mockES.AddResponse(testdata.Bob.ID) tcs := []struct { Query string - ESResponse string ContactIDs []models.ContactID EventContactIDs []models.ContactID }{ { "cathy", - cathyHit, []models.ContactID{testdata.Cathy.ID}, []models.ContactID{}, }, { "bob", - bobHit, []models.ContactID{testdata.Bob.ID}, []models.ContactID{testdata.Bob.ID}, }, { "unchanged", - bobHit, []models.ContactID{testdata.Bob.ID}, []models.ContactID{testdata.Bob.ID}, }, @@ -153,7 +116,6 @@ func TestDynamicGroups(t *testing.T) { err := models.UpdateGroupStatus(ctx, db, testdata.DoctorsGroup.ID, models.GroupStatusInitializing) assert.NoError(t, err) - esServer.NextResponse = tc.ESResponse count, err := models.PopulateDynamicGroup(ctx, db, es, oa, testdata.DoctorsGroup.ID, tc.Query) assert.NoError(t, err, "error populating dynamic group for: %s", tc.Query) diff --git a/core/models/search.go b/core/models/search.go index c54a7b7e1..f56929a26 100644 --- a/core/models/search.go +++ b/core/models/search.go @@ -111,7 +111,7 @@ func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa * return nil, nil, 0, err } - logrus.WithFields(logrus.Fields{"org_id": oa.OrgID(), "query": query, "elapsed": time.Since(start), "page_count": len(ids), "total_count": results.Hits.TotalHits}).Debug("paged contact query complete") + logrus.WithFields(logrus.Fields{"org_id": oa.OrgID(), "query": query, "elapsed": time.Since(start), "page_count": len(ids), "total_count": results.Hits.TotalHits.Value}).Debug("paged contact query complete") return parsed, ids, results.Hits.TotalHits.Value, nil } diff --git a/core/models/search_test.go b/core/models/search_test.go index 92a63320b..4ed19c040 100644 --- a/core/models/search_test.go +++ b/core/models/search_test.go @@ -1,7 +1,6 @@ package models_test import ( - "fmt" "testing" "github.com/nyaruka/goflow/test" @@ -17,15 +16,13 @@ import ( func TestGetContactIDsForQueryPage(t *testing.T) { ctx, rt, _, _ := testsuite.Get() - es := testsuite.NewMockElasticServer() - defer es.Close() + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() - client, err := elastic.NewClient( - elastic.SetURL(es.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) - require.NoError(t, err) + mockES.AddResponse(testdata.George.ID) + mockES.AddResponse(testdata.George.ID) + + es := mockES.Client() oa, err := models.GetOrgAssets(ctx, rt, testdata.Org1.ID) require.NoError(t, err) @@ -36,7 +33,6 @@ func TestGetContactIDsForQueryPage(t *testing.T) { Query string Sort string ExpectedESRequest string - MockedESResponse string ExpectedContacts []models.ContactID ExpectedTotal int64 ExpectedError string @@ -85,33 +81,6 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ], "track_total_hits": true }`, - MockedESResponse: fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.George.ID), ExpectedContacts: []models.ContactID{testdata.George.ID}, ExpectedTotal: 1, }, @@ -197,33 +166,6 @@ func TestGetContactIDsForQueryPage(t *testing.T) { ], "track_total_hits": true }`, - MockedESResponse: fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.George.ID), ExpectedContacts: []models.ContactID{testdata.George.ID}, ExpectedTotal: 1, }, @@ -235,11 +177,9 @@ func TestGetContactIDsForQueryPage(t *testing.T) { } for i, tc := range tcs { - es.NextResponse = tc.MockedESResponse - group := oa.GroupByID(tc.Group.ID) - _, ids, total, err := models.GetContactIDsForQueryPage(ctx, client, oa, group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) + _, ids, total, err := models.GetContactIDsForQueryPage(ctx, es, oa, group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) if tc.ExpectedError != "" { assert.EqualError(t, err, tc.ExpectedError) @@ -248,7 +188,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { assert.Equal(t, tc.ExpectedContacts, ids, "%d: ids mismatch", i) assert.Equal(t, tc.ExpectedTotal, total, "%d: total mismatch", i) - test.AssertEqualJSON(t, []byte(tc.ExpectedESRequest), []byte(es.LastRequestBody), "%d: ES request mismatch", i) + test.AssertEqualJSON(t, []byte(tc.ExpectedESRequest), []byte(mockES.LastRequestBody), "%d: ES request mismatch", i) } } } @@ -256,14 +196,14 @@ func TestGetContactIDsForQueryPage(t *testing.T) { func TestGetContactIDsForQuery(t *testing.T) { ctx, rt, _, _ := testsuite.Get() - es := testsuite.NewMockElasticServer() - defer es.Close() + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() - client, err := elastic.NewClient( - elastic.SetURL(es.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) + mockES.AddResponse(testdata.George.ID) + mockES.AddResponse() + mockES.AddResponse(testdata.George.ID) + + es, err := elastic.NewClient(elastic.SetURL(mockES.URL()), elastic.SetHealthcheck(false), elastic.SetSniff(false)) require.NoError(t, err) oa, err := models.GetOrgAssets(ctx, rt, 1) @@ -314,33 +254,6 @@ func TestGetContactIDsForQuery(t *testing.T) { }, "sort":["_doc"] }`, - mockedESResponse: fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.George.ID), expectedContacts: []models.ContactID{testdata.George.ID}, }, { query: "nobody", @@ -378,22 +291,6 @@ func TestGetContactIDsForQuery(t *testing.T) { }, "sort":["_doc"] }`, - mockedESResponse: `{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 0, - "max_score": null, - "hits": [] - } - }`, expectedContacts: []models.ContactID{}, }, { @@ -433,24 +330,6 @@ func TestGetContactIDsForQuery(t *testing.T) { }, "size": 1 }`, - mockedESResponse: fmt.Sprintf(`{ - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.George.ID), expectedContacts: []models.ContactID{testdata.George.ID}, }, { @@ -461,9 +340,7 @@ func TestGetContactIDsForQuery(t *testing.T) { } for i, tc := range tcs { - es.NextResponse = tc.mockedESResponse - - ids, err := models.GetContactIDsForQuery(ctx, client, oa, tc.query, tc.limit) + ids, err := models.GetContactIDsForQuery(ctx, es, oa, tc.query, tc.limit) if tc.expectedError != "" { assert.EqualError(t, err, tc.expectedError) @@ -471,8 +348,8 @@ func TestGetContactIDsForQuery(t *testing.T) { assert.NoError(t, err, "%d: error encountered performing query", i) assert.Equal(t, tc.expectedContacts, ids, "%d: ids mismatch", i) - assert.Equal(t, tc.expectedRequestURL, es.LastRequestURL, "%d: request URL mismatch", i) - test.AssertEqualJSON(t, []byte(tc.expectedRequestBody), []byte(es.LastRequestBody), "%d: request body mismatch", i) + assert.Equal(t, tc.expectedRequestURL, mockES.LastRequestURL, "%d: request URL mismatch", i) + test.AssertEqualJSON(t, []byte(tc.expectedRequestBody), []byte(mockES.LastRequestBody), "%d: request body mismatch", i) } } } diff --git a/core/tasks/contacts/populate_dynamic_group_test.go b/core/tasks/contacts/populate_dynamic_group_test.go index 5398f0167..caefa03b0 100644 --- a/core/tasks/contacts/populate_dynamic_group_test.go +++ b/core/tasks/contacts/populate_dynamic_group_test.go @@ -1,7 +1,6 @@ package contacts_test import ( - "fmt" "testing" "github.com/nyaruka/gocommon/dates" @@ -10,7 +9,6 @@ import ( "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" - "github.com/olivere/elastic/v7" "github.com/stretchr/testify/require" ) @@ -19,41 +17,12 @@ func TestPopulateTask(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) - mes := testsuite.NewMockElasticServer() - defer mes.Close() - es, err := elastic.NewClient( - elastic.SetURL(mes.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) - require.NoError(t, err) - rt.ES = es + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() + + mockES.AddResponse(testdata.Cathy.ID) - mes.NextResponse = fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [15124352] - } - ] - } - }`, testdata.Cathy.ID) + rt.ES = mockES.Client() group := testdata.InsertContactGroup(db, testdata.Org1, "e52fee05-2f95-4445-aef6-2fe7dac2fd56", "Women", "gender = F") start := dates.Now() @@ -62,7 +31,7 @@ func TestPopulateTask(t *testing.T) { GroupID: group.ID, Query: "gender = F", } - err = task.Perform(ctx, rt, testdata.Org1.ID) + err := task.Perform(ctx, rt, testdata.Org1.ID) require.NoError(t, err) assertdb.Query(t, db, `SELECT count(*) FROM contacts_contactgroup_contacts WHERE contactgroup_id = $1`, group.ID).Returns(1) diff --git a/core/tasks/starts/worker_test.go b/core/tasks/starts/worker_test.go index 81d3e37cd..1308353c7 100644 --- a/core/tasks/starts/worker_test.go +++ b/core/tasks/starts/worker_test.go @@ -2,7 +2,6 @@ package starts import ( "encoding/json" - "fmt" "testing" "github.com/nyaruka/gocommon/dbutil/assertdb" @@ -14,7 +13,6 @@ import ( "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" - "github.com/olivere/elastic/v7" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -26,16 +24,10 @@ func TestStarts(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) - mes := testsuite.NewMockElasticServer() - defer mes.Close() + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() - es, err := elastic.NewClient( - elastic.SetURL(mes.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) - require.NoError(t, err) - rt.ES = es + rt.ES = mockES.Client() // convert our single message flow to an actual background flow that shouldn't interrupt db.MustExec(`UPDATE flows_flow SET flow_type = 'B' WHERE id = $1`, testdata.SingleMessage.ID) @@ -54,7 +46,7 @@ func TestStarts(t *testing.T) { contactIDs []models.ContactID createContact bool query string - queryResponse string + queryResult []models.ContactID restartParticipants bool includeActive bool queue string @@ -159,36 +151,10 @@ func TestStarts(t *testing.T) { expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Query start", - flowID: testdata.Favorites.ID, - query: "bob", - queryResponse: fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.Bob.ID), + label: "Query start", + flowID: testdata.Favorites.ID, + query: "bob", + queryResult: []models.ContactID{testdata.Bob.ID}, restartParticipants: true, includeActive: true, queue: queue.HandlerQueue, @@ -263,7 +229,9 @@ func TestStarts(t *testing.T) { } for _, tc := range tcs { - mes.NextResponse = tc.queryResponse + if tc.queryResult != nil { + mockES.AddResponse(tc.queryResult...) + } // handle our start task start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, tc.flowID, tc.restartParticipants, tc.includeActive). diff --git a/testsuite/elastic.go b/testsuite/elastic.go index 0683fa2bc..d87e9357d 100644 --- a/testsuite/elastic.go +++ b/testsuite/elastic.go @@ -1,9 +1,14 @@ package testsuite import ( + "fmt" "io" "net/http" "net/http/httptest" + + "github.com/nyaruka/gocommon/jsonx" + "github.com/nyaruka/mailroom/core/models" + "github.com/olivere/elastic/v7" ) // MockElasticServer is a mock HTTP server/endpoint that can be used to test elastic queries @@ -11,7 +16,7 @@ type MockElasticServer struct { Server *httptest.Server LastRequestURL string LastRequestBody string - NextResponse string + Responses [][]byte } // NewMockElasticServer creates a new mock elastic server @@ -48,13 +53,24 @@ func NewMockElasticServer() *MockElasticServer { body, _ := io.ReadAll(r.Body) m.LastRequestBody = string(body) + if len(m.Responses) == 0 { + panic("mock elastic server has no more queued responses") + } + + var response []byte + response, m.Responses = m.Responses[0], m.Responses[1:] + w.WriteHeader(200) - w.Write([]byte(m.NextResponse)) - m.NextResponse = "" + w.Write(response) })) return m } +func (m *MockElasticServer) Client() *elastic.Client { + c, _ := elastic.NewClient(elastic.SetURL(m.URL()), elastic.SetHealthcheck(false), elastic.SetSniff(false)) + return c +} + // Close closes our HTTP server func (m *MockElasticServer) Close() { m.Server.Close() @@ -64,3 +80,36 @@ func (m *MockElasticServer) Close() { func (m *MockElasticServer) URL() string { return m.Server.URL } + +// AddResponse adds a mock response to the server's queue +func (m *MockElasticServer) AddResponse(ids ...models.ContactID) { + hits := make([]map[string]interface{}, len(ids)) + for i := range ids { + hits[i] = map[string]interface{}{ + "_index": "contacts", + "_type": "_doc", + "_id": fmt.Sprintf("%d", ids[i]), + "_score": nil, + "_routing": "1", + "sort": []int{15124352}, + } + } + + response := jsonx.MustMarshal(map[string]interface{}{ + "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", + "took": 2, + "timed_out": false, + "_shards": map[string]interface{}{ + "total": 1, + "successful": 1, + "skipped": 0, + "failed": 0, + }, + "hits": map[string]interface{}{ + "total": len(ids), + "max_score": nil, + "hits": hits, + }, + }) + m.Responses = append(m.Responses, response) +} diff --git a/web/contact/search_test.go b/web/contact/search_test.go index a377ec20f..1713b0dfe 100644 --- a/web/contact/search_test.go +++ b/web/contact/search_test.go @@ -18,26 +18,18 @@ import ( "github.com/nyaruka/mailroom/testsuite/testdata" "github.com/nyaruka/mailroom/web" - "github.com/olivere/elastic/v7" "github.com/stretchr/testify/assert" ) -func TestSearch(t *testing.T) { +func TestContactSearch(t *testing.T) { ctx, rt, _, _ := testsuite.Get() wg := &sync.WaitGroup{} - es := testsuite.NewMockElasticServer() - defer es.Close() + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() - client, err := elastic.NewClient( - elastic.SetURL(es.URL()), - elastic.SetHealthcheck(false), - elastic.SetSniff(false), - ) - assert.NoError(t, err) - - rt.ES = client + rt.ES = mockES.Client() server := web.NewServer(ctx, rt, wg) server.Start() @@ -47,39 +39,11 @@ func TestSearch(t *testing.T) { defer server.Stop() - singleESResponse := fmt.Sprintf(`{ - "_scroll_id": "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAbgc0WS1hqbHlfb01SM2lLTWJRMnVOSVZDdw==", - "took": 2, - "timed_out": false, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": 1, - "max_score": null, - "hits": [ - { - "_index": "contacts", - "_type": "_doc", - "_id": "%d", - "_score": null, - "_routing": "1", - "sort": [ - 15124352 - ] - } - ] - } - }`, testdata.Cathy.ID) - tcs := []struct { method string url string body string - esResponse string + mockResult []models.ContactID expectedStatus int expectedError string expectedHits []models.ContactID @@ -114,7 +78,7 @@ func TestSearch(t *testing.T) { method: "POST", url: "/mr/contact/search", body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), - esResponse: singleESResponse, + mockResult: []models.ContactID{testdata.Cathy.ID}, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, expectedQuery: `name ~ "Cathy"`, @@ -127,9 +91,9 @@ func TestSearch(t *testing.T) { method: "POST", url: "/mr/contact/search", body: fmt.Sprintf(`{"org_id": 1, "query": "Cathy", "group_uuid": "%s", "exclude_ids": [%d, %d]}`, testdata.ActiveGroup.UUID, testdata.Bob.ID, testdata.George.ID), - esResponse: singleESResponse, + mockResult: []models.ContactID{testdata.George.ID}, expectedStatus: 200, - expectedHits: []models.ContactID{testdata.Cathy.ID}, + expectedHits: []models.ContactID{testdata.George.ID}, expectedQuery: `name ~ "Cathy"`, expectedAttributes: []string{"name"}, expectedFields: []*assets.FieldReference{}, @@ -189,7 +153,7 @@ func TestSearch(t *testing.T) { method: "POST", url: "/mr/contact/search", body: fmt.Sprintf(`{"org_id": 1, "query": "AGE = 10 and gender = M", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), - esResponse: singleESResponse, + mockResult: []models.ContactID{testdata.Cathy.ID}, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, expectedQuery: `age = 10 AND gender = "M"`, @@ -205,7 +169,7 @@ func TestSearch(t *testing.T) { method: "POST", url: "/mr/contact/search", body: fmt.Sprintf(`{"org_id": 1, "query": "", "group_uuid": "%s"}`, testdata.ActiveGroup.UUID), - esResponse: singleESResponse, + mockResult: []models.ContactID{testdata.Cathy.ID}, expectedStatus: 200, expectedHits: []models.ContactID{testdata.Cathy.ID}, expectedQuery: ``, @@ -217,9 +181,11 @@ func TestSearch(t *testing.T) { } for i, tc := range tcs { - var body io.Reader - es.NextResponse = tc.esResponse + if tc.mockResult != nil { + mockES.AddResponse(tc.mockResult...) + } + var body io.Reader if tc.body != "" { body = bytes.NewReader([]byte(tc.body)) } @@ -251,7 +217,7 @@ func TestSearch(t *testing.T) { } if tc.expectedESRequest != "" { - test.AssertEqualJSON(t, []byte(tc.expectedESRequest), []byte(es.LastRequestBody), "elastic request mismatch") + test.AssertEqualJSON(t, []byte(tc.expectedESRequest), []byte(mockES.LastRequestBody), "elastic request mismatch") } } else { r := &web.ErrorResponse{} diff --git a/web/flow/start.go b/web/flow/start.go new file mode 100644 index 000000000..193b13f2e --- /dev/null +++ b/web/flow/start.go @@ -0,0 +1,151 @@ +package flow + +import ( + "context" + "fmt" + "net/http" + "strings" + "time" + + "github.com/nyaruka/gocommon/dates" + "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/goflow/utils" + "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/runtime" + "github.com/nyaruka/mailroom/web" + "github.com/pkg/errors" +) + +func init() { + web.RegisterJSONRoute(http.MethodPost, "/mr/flow/preview_start", web.RequireAuthToken(handlePreviewStart)) +} + +// Generates a preview of which contacts will be started in the given flow. +// +// { +// "org_id": 1, +// "flow_id": 2, +// "contact_ids": [12, 34], +// "group_ids": [123, 345], +// "urns": ["tel:+1234567890"], +// "user_query": "", +// "exclusions": { +// "non_active": false, +// "in_a_flow": false, +// "started_previously": true, +// "not_seen_recently": false +// } +// } +// +// { +// "query": "(id = 12 OR id = 34 OR group = "No Age" OR group = "No Name" OR tel = "+1234567890") AND history != \"Registration\"", +// "count": 567, +// "sample": [12, 34, 56, 67, 78] +// } +// +type previewStartRequest struct { + OrgID models.OrgID `json:"org_id" validate:"required"` + FlowID models.FlowID `json:"flow_id" validate:"required"` + ContactIDs []models.ContactID `json:"contact_ids"` + GroupIDs []models.GroupID `json:"group_ids"` + URNs []urns.URN `json:"urns"` + Query string `json:"query"` + Exclusions Exclusions `json:"exclusions"` +} + +type previewStartResponse struct { + Query string `json:"query"` + Count int `json:"count"` + Sample []models.ContactID `json:"sample"` +} + +func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Request) (interface{}, int, error) { + request := &previewStartRequest{} + if err := utils.UnmarshalAndValidateWithLimit(r.Body, request, web.MaxRequestBytes); err != nil { + return errors.Wrapf(err, "request failed validation"), http.StatusBadRequest, nil + } + + oa, err := models.GetOrgAssets(ctx, rt, request.OrgID) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load org assets") + } + + flow, err := oa.FlowByID(request.FlowID) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load flow") + } + + query := BuildStartQuery(oa, flow, request.Query, request.GroupIDs, request.ContactIDs, request.URNs, request.Exclusions) + if query == "" { + return &previewStartResponse{Query: "", Count: 0, Sample: []models.ContactID{}}, http.StatusOK, nil + } + + parsedQuery, sampleIDs, count, err := models.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, 5) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "error querying preview") + } + + return &previewStartResponse{Query: parsedQuery.String(), Count: int(count), Sample: sampleIDs}, http.StatusOK, nil +} + +//////////////// Query building support ////////////// + +// Exclusions are preset exclusion conditions +type Exclusions struct { + NonActive bool `json:"non_active"` // contacts who are blocked, stopped or archived + InAFlow bool `json:"in_a_flow"` // contacts who are currently in a flow (including this one) + StartedPreviously bool `json:"started_previously"` // contacts who have been in this flow in the last 90 days + NotSeenRecently bool `json:"not_seen_recently"` // contacts who have not been seen for more than 90 days +} + +// BuildStartQuery builds a start query for the given flow and start options +func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, userQuery string, groupIDs []models.GroupID, contactIDs []models.ContactID, urnz []urns.URN, excs Exclusions) string { + inclusions := make([]string, 0, 10) + if userQuery != "" { + inclusions = append(inclusions, fmt.Sprintf("(%s)", userQuery)) + } + for _, groupID := range groupIDs { + group := oa.GroupByID(groupID) + if group != nil { + inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) + } + } + for _, contactID := range contactIDs { + inclusions = append(inclusions, fmt.Sprintf("id = %d", contactID)) + } + for _, urn := range urnz { + scheme, path, _, _ := urn.ToParts() + inclusions = append(inclusions, fmt.Sprintf("%s = \"%s\"", scheme, path)) + } + + exclusions := make([]string, 0, 10) + if excs.NonActive { + exclusions = append(exclusions, "status = \"A\"") + } + if excs.InAFlow { + exclusions = append(exclusions, "flow = \"\"") + } + if excs.StartedPreviously { + exclusions = append(exclusions, fmt.Sprintf("history != \"%s\"", flow.Name())) + } + if excs.NotSeenRecently { + seenSince := dates.Now().Add(-time.Hour * 24 * 90) + exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(oa, seenSince))) + } + + conditions := make([]string, 0, 10) + if len(inclusions) == 1 { + conditions = append(conditions, inclusions[0]) + } else if len(inclusions) > 1 { + conditions = append(conditions, fmt.Sprintf("(%s)", strings.Join(inclusions, " OR "))) + } + conditions = append(conditions, exclusions...) + + return strings.Join(conditions, " AND ") +} + +func formatQueryDate(oa *models.OrgAssets, t time.Time) string { + d := dates.ExtractDate(t.In(oa.Env().Timezone())) + s, _ := d.Format(string(oa.Env().DateFormat()), oa.Env().DefaultLocale().ToBCP47()) + return s +} diff --git a/web/flow/start_test.go b/web/flow/start_test.go new file mode 100644 index 000000000..6e2fac073 --- /dev/null +++ b/web/flow/start_test.go @@ -0,0 +1,25 @@ +package flow_test + +import ( + "testing" + + "github.com/nyaruka/mailroom/testsuite" + "github.com/nyaruka/mailroom/testsuite/testdata" + "github.com/nyaruka/mailroom/web" +) + +func TestPreviewStart(t *testing.T) { + ctx, rt, _, _ := testsuite.Get() + + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() + + rt.ES = mockES.Client() + + mockES.AddResponse(testdata.Cathy.ID) + mockES.AddResponse(testdata.Bob.ID) + mockES.AddResponse(testdata.George.ID) + mockES.AddResponse(testdata.Alexandria.ID) + + web.RunWebTests(t, ctx, rt, "testdata/preview_start.json", nil) +} diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json new file mode 100644 index 000000000..98f861d06 --- /dev/null +++ b/web/flow/testdata/preview_start.json @@ -0,0 +1,150 @@ +[ + { + "label": "illegal method", + "method": "GET", + "path": "/mr/flow/preview_start", + "status": 405, + "response": { + "error": "illegal method: GET" + } + }, + { + "label": "missing org or flow id", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": {}, + "status": 400, + "response": { + "error": "request failed validation: field 'org_id' is required, field 'flow_id' is required" + } + }, + { + "label": "no inclusions or exclusions", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001 + }, + "status": 200, + "response": { + "query": "", + "count": 0, + "sample": [] + } + }, + { + "label": "manual inclusions, no exclusions", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "group_ids": [ + 10000, + 10001 + ], + "contact_ids": [ + 1234, + 3456 + ], + "urns": [ + "tel:+1234567890", + "facebook:9876543210" + ], + "query": "" + }, + "status": 200, + "response": { + "query": "group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210", + "count": 1, + "sample": [ + 10000 + ] + } + }, + { + "label": "query inclusion, no exclusions", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "group_ids": [], + "contact_ids": [], + "urns": [], + "query": "gender = M" + }, + "status": 200, + "response": { + "query": "gender = \"M\"", + "count": 1, + "sample": [ + 10001 + ] + } + }, + { + "label": "manual inclusions, all exclusions", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "group_ids": [ + 10000, + 10001 + ], + "contact_ids": [ + 1234, + 3456 + ], + "urns": [ + "tel:+1234567890", + "facebook:9876543210" + ], + "query": "", + "exclusions": { + "non_active": true, + "in_a_flow": true, + "started_previously": true, + "not_seen_recently": true + } + }, + "status": 200, + "response": { + "query": "(group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"A\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", + "count": 1, + "sample": [ + 10002 + ] + } + }, + { + "label": "query inclusion, all exclusions", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "group_ids": [], + "contact_ids": [], + "urns": [], + "query": "gender = M", + "exclusions": { + "non_active": true, + "in_a_flow": true, + "started_previously": true, + "not_seen_recently": true + } + }, + "status": 200, + "response": { + "query": "gender = \"M\" AND status = \"A\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", + "count": 1, + "sample": [ + 10003 + ] + } + } +] \ No newline at end of file From 57a1381c9cf8055ca8e16e46aa8f85c32d70bc55 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 19 Apr 2022 18:38:56 -0500 Subject: [PATCH 40/97] Update to latest goflow --- go.mod | 2 +- go.sum | 4 ++-- web/flow/start.go | 2 +- web/flow/testdata/preview_start.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 1e96ab1aa..0ba683103 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.18.0 - github.com/nyaruka/goflow v0.157.0 + github.com/nyaruka/goflow v0.158.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index c87783649..3fe6e046f 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.18.0 h1:pRSV63w449FVHrjeXJNNIyoD0k47ruqPq3fROuHBjD0= github.com/nyaruka/gocommon v1.18.0/go.mod h1:+jVWR2FB6XTqFz7fjvVIZMFwp2B6uoaCk7NVLGnfPFM= -github.com/nyaruka/goflow v0.157.0 h1:t8ilxL1Fi38Y/fiYBTB8o+jknxeRwKprgxaXkIhjfqM= -github.com/nyaruka/goflow v0.157.0/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= +github.com/nyaruka/goflow v0.158.0 h1:LQbZBUnW6AiAm3WB56pEEOPUfwggDxkluh5zjovfLf8= +github.com/nyaruka/goflow v0.158.0/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= diff --git a/web/flow/start.go b/web/flow/start.go index 193b13f2e..043a93a4c 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -120,7 +120,7 @@ func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, userQuery string, exclusions := make([]string, 0, 10) if excs.NonActive { - exclusions = append(exclusions, "status = \"A\"") + exclusions = append(exclusions, "status = \"active\"") } if excs.InAFlow { exclusions = append(exclusions, "flow = \"\"") diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 98f861d06..ff5dde7ca 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -113,7 +113,7 @@ }, "status": 200, "response": { - "query": "(group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"A\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", + "query": "(group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", "count": 1, "sample": [ 10002 @@ -140,7 +140,7 @@ }, "status": 200, "response": { - "query": "gender = \"M\" AND status = \"A\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", + "query": "gender = \"M\" AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", "count": 1, "sample": [ 10003 From c4bc1e781d7713d02fb28afed005315659146942 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 20 Apr 2022 10:40:59 -0500 Subject: [PATCH 41/97] Update test database --- mailroom_test.dump | Bin 1894644 -> 1894543 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index 3d0f35b6998bbb44b605a9d81c49f049e74ab1ba..59bdd8828cd6a5cf7f9a4397dfd572b0cedea379 100644 GIT binary patch delta 68903 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 z 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 delta 68769 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 From 7d9028ed6f932a656dbe15ce108d9b4b832acf7b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 20 Apr 2022 14:08:25 -0500 Subject: [PATCH 42/97] Move search into its own package and add more tests --- core/models/groups.go | 91 ---------------- core/models/groups_test.go | 81 -------------- core/search/groups.go | 102 ++++++++++++++++++ core/search/groups_test.go | 92 ++++++++++++++++ core/search/queries.go | 81 ++++++++++++++ core/search/queries_test.go | 77 +++++++++++++ core/{models => search}/search.go | 28 ++--- core/{models => search}/search_test.go | 8 +- core/tasks/contacts/populate_dynamic_group.go | 11 +- core/tasks/starts/worker.go | 3 +- web/contact/search.go | 13 ++- web/flow/start.go | 77 ++----------- 12 files changed, 390 insertions(+), 274 deletions(-) create mode 100644 core/search/groups.go create mode 100644 core/search/groups_test.go create mode 100644 core/search/queries.go create mode 100644 core/search/queries_test.go rename core/{models => search}/search.go (82%) rename core/{models => search}/search_test.go (97%) diff --git a/core/models/groups.go b/core/models/groups.go index 7d2259e61..d2371e4b5 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -10,7 +10,6 @@ import ( "github.com/jmoiron/sqlx" "github.com/lib/pq" - "github.com/olivere/elastic/v7" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -338,93 +337,3 @@ func AddContactsToGroupAndCampaigns(ctx context.Context, db *sqlx.DB, oa *OrgAss return nil } - -// PopulateDynamicGroup calculates which members should be part of a group and populates the contacts -// for that group by performing the minimum number of inserts / deletes. -func PopulateDynamicGroup(ctx context.Context, db *sqlx.DB, es *elastic.Client, oa *OrgAssets, groupID GroupID, query string) (int, error) { - err := UpdateGroupStatus(ctx, db, groupID, GroupStatusEvaluating) - if err != nil { - return 0, errors.Wrapf(err, "error marking dynamic group as evaluating") - } - - start := time.Now() - - // we have a bit of a race with the indexer process.. we want to make sure that any contacts that changed - // before this group was updated but after the last index are included, so if a contact was modified - // more recently than 10 seconds ago, we wait that long before starting in populating our group - newest, err := GetNewestContactModifiedOn(ctx, db, oa) - if err != nil { - return 0, errors.Wrapf(err, "error getting most recent contact modified_on for org: %d", oa.OrgID()) - } - if newest != nil { - n := *newest - - // if it was more recent than 10 seconds ago, sleep until it has been 10 seconds - if n.Add(time.Second * 10).After(start) { - sleep := n.Add(time.Second * 10).Sub(start) - logrus.WithField("sleep", sleep).Info("sleeping before evaluating dynamic group") - time.Sleep(sleep) - } - } - - // get current set of contacts in our group - ids, err := ContactIDsForGroupIDs(ctx, db, []GroupID{groupID}) - if err != nil { - return 0, errors.Wrapf(err, "unable to look up contact ids for group: %d", groupID) - } - present := make(map[ContactID]bool, len(ids)) - for _, i := range ids { - present[i] = true - } - - // calculate new set of ids - new, err := GetContactIDsForQuery(ctx, es, oa, query, -1) - if err != nil { - return 0, errors.Wrapf(err, "error performing query: %s for group: %d", query, groupID) - } - - // find which contacts need to be added or removed - adds := make([]ContactID, 0, 100) - for _, id := range new { - if !present[id] { - adds = append(adds, id) - } - delete(present, id) - } - - // build our list of removals - removals := make([]ContactID, 0, len(present)) - for id := range present { - removals = append(removals, id) - } - - // first remove all the contacts - err = RemoveContactsFromGroupAndCampaigns(ctx, db, oa, groupID, removals) - if err != nil { - return 0, errors.Wrapf(err, "error removing contacts from group: %d", groupID) - } - - // then add them all - err = AddContactsToGroupAndCampaigns(ctx, db, oa, groupID, adds) - if err != nil { - return 0, errors.Wrapf(err, "error adding contacts to group: %d", groupID) - } - - // mark our group as no longer evaluating - err = UpdateGroupStatus(ctx, db, groupID, GroupStatusReady) - if err != nil { - return 0, errors.Wrapf(err, "error marking dynamic group as ready") - } - - // finally update modified_on for all affected contacts to ensure these changes are seen by rp-indexer - changed := make([]ContactID, 0, len(adds)) - changed = append(changed, adds...) - changed = append(changed, removals...) - - err = UpdateContactModifiedOn(ctx, db, changed) - if err != nil { - return 0, errors.Wrapf(err, "error updating contact modified_on after group population") - } - - return len(new), nil -} diff --git a/core/models/groups_test.go b/core/models/groups_test.go index 0cadd675a..fee836534 100644 --- a/core/models/groups_test.go +++ b/core/models/groups_test.go @@ -2,16 +2,13 @@ package models_test import ( "errors" - "fmt" "testing" - "github.com/nyaruka/gocommon/dbutil/assertdb" "github.com/nyaruka/goflow/assets" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" - "github.com/lib/pq" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -58,81 +55,3 @@ func TestLoadGroups(t *testing.T) { assert.Equal(t, tc.query, group.Query()) } } - -func TestSmartGroups(t *testing.T) { - ctx, rt, db, _ := testsuite.Get() - - defer testsuite.Reset(testsuite.ResetAll) - - // insert an event on our campaign - newEvent := testdata.InsertCampaignFlowEvent(db, testdata.RemindersCampaign, testdata.Favorites, testdata.JoinedField, 1000, "W") - - // clear Cathy's value - db.MustExec( - `update contacts_contact set fields = fields - $2 - WHERE id = $1`, testdata.Cathy.ID, testdata.JoinedField.UUID) - - // and populate Bob's - db.MustExec( - fmt.Sprintf(`update contacts_contact set fields = fields || - '{"%s": { "text": "2029-09-15T12:00:00+00:00", "datetime": "2029-09-15T12:00:00+00:00" }}'::jsonb - WHERE id = $1`, testdata.JoinedField.UUID), testdata.Bob.ID) - - oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshCampaigns|models.RefreshGroups) - assert.NoError(t, err) - - mockES := testsuite.NewMockElasticServer() - defer mockES.Close() - - es := mockES.Client() - - mockES.AddResponse(testdata.Cathy.ID) - mockES.AddResponse(testdata.Bob.ID) - mockES.AddResponse(testdata.Bob.ID) - - tcs := []struct { - Query string - ContactIDs []models.ContactID - EventContactIDs []models.ContactID - }{ - { - "cathy", - []models.ContactID{testdata.Cathy.ID}, - []models.ContactID{}, - }, - { - "bob", - []models.ContactID{testdata.Bob.ID}, - []models.ContactID{testdata.Bob.ID}, - }, - { - "unchanged", - []models.ContactID{testdata.Bob.ID}, - []models.ContactID{testdata.Bob.ID}, - }, - } - - for _, tc := range tcs { - err := models.UpdateGroupStatus(ctx, db, testdata.DoctorsGroup.ID, models.GroupStatusInitializing) - assert.NoError(t, err) - - count, err := models.PopulateDynamicGroup(ctx, db, es, oa, testdata.DoctorsGroup.ID, tc.Query) - assert.NoError(t, err, "error populating dynamic group for: %s", tc.Query) - - assert.Equal(t, count, len(tc.ContactIDs)) - - // assert the current group membership - contactIDs, err := models.ContactIDsForGroupIDs(ctx, db, []models.GroupID{testdata.DoctorsGroup.ID}) - assert.NoError(t, err) - assert.Equal(t, tc.ContactIDs, contactIDs) - - assertdb.Query(t, db, `SELECT count(*) from contacts_contactgroup WHERE id = $1 AND status = 'R'`, testdata.DoctorsGroup.ID). - Returns(1, "wrong number of contacts in group for query: %s", tc.Query) - - assertdb.Query(t, db, `SELECT count(*) from campaigns_eventfire WHERE event_id = $1`, newEvent.ID). - Returns(len(tc.EventContactIDs), "wrong number of contacts with events for query: %s", tc.Query) - - assertdb.Query(t, db, `SELECT count(*) from campaigns_eventfire WHERE event_id = $1 AND contact_id = ANY($2)`, newEvent.ID, pq.Array(tc.EventContactIDs)). - Returns(len(tc.EventContactIDs), "wrong contacts with events for query: %s", tc.Query) - } -} diff --git a/core/search/groups.go b/core/search/groups.go new file mode 100644 index 000000000..8e5d9b698 --- /dev/null +++ b/core/search/groups.go @@ -0,0 +1,102 @@ +package search + +import ( + "context" + "time" + + "github.com/jmoiron/sqlx" + "github.com/nyaruka/mailroom/core/models" + "github.com/olivere/elastic/v7" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" +) + +// PopulateSmartGroup calculates which members should be part of a group and populates the contacts +// for that group by performing the minimum number of inserts / deletes. +func PopulateSmartGroup(ctx context.Context, db *sqlx.DB, es *elastic.Client, oa *models.OrgAssets, groupID models.GroupID, query string) (int, error) { + err := models.UpdateGroupStatus(ctx, db, groupID, models.GroupStatusEvaluating) + if err != nil { + return 0, errors.Wrapf(err, "error marking dynamic group as evaluating") + } + + start := time.Now() + + // we have a bit of a race with the indexer process.. we want to make sure that any contacts that changed + // before this group was updated but after the last index are included, so if a contact was modified + // more recently than 10 seconds ago, we wait that long before starting in populating our group + newest, err := models.GetNewestContactModifiedOn(ctx, db, oa) + if err != nil { + return 0, errors.Wrapf(err, "error getting most recent contact modified_on for org: %d", oa.OrgID()) + } + if newest != nil { + n := *newest + + // if it was more recent than 10 seconds ago, sleep until it has been 10 seconds + if n.Add(time.Second * 10).After(start) { + sleep := n.Add(time.Second * 10).Sub(start) + logrus.WithField("sleep", sleep).Info("sleeping before evaluating dynamic group") + time.Sleep(sleep) + } + } + + // get current set of contacts in our group + ids, err := models.ContactIDsForGroupIDs(ctx, db, []models.GroupID{groupID}) + if err != nil { + return 0, errors.Wrapf(err, "unable to look up contact ids for group: %d", groupID) + } + present := make(map[models.ContactID]bool, len(ids)) + for _, i := range ids { + present[i] = true + } + + // calculate new set of ids + new, err := GetContactIDsForQuery(ctx, es, oa, query, -1) + if err != nil { + return 0, errors.Wrapf(err, "error performing query: %s for group: %d", query, groupID) + } + + // find which contacts need to be added or removed + adds := make([]models.ContactID, 0, 100) + for _, id := range new { + if !present[id] { + adds = append(adds, id) + } + delete(present, id) + } + + // build our list of removals + removals := make([]models.ContactID, 0, len(present)) + for id := range present { + removals = append(removals, id) + } + + // first remove all the contacts + err = models.RemoveContactsFromGroupAndCampaigns(ctx, db, oa, groupID, removals) + if err != nil { + return 0, errors.Wrapf(err, "error removing contacts from group: %d", groupID) + } + + // then add them all + err = models.AddContactsToGroupAndCampaigns(ctx, db, oa, groupID, adds) + if err != nil { + return 0, errors.Wrapf(err, "error adding contacts to group: %d", groupID) + } + + // mark our group as no longer evaluating + err = models.UpdateGroupStatus(ctx, db, groupID, models.GroupStatusReady) + if err != nil { + return 0, errors.Wrapf(err, "error marking dynamic group as ready") + } + + // finally update modified_on for all affected contacts to ensure these changes are seen by rp-indexer + changed := make([]models.ContactID, 0, len(adds)) + changed = append(changed, adds...) + changed = append(changed, removals...) + + err = models.UpdateContactModifiedOn(ctx, db, changed) + if err != nil { + return 0, errors.Wrapf(err, "error updating contact modified_on after group population") + } + + return len(new), nil +} diff --git a/core/search/groups_test.go b/core/search/groups_test.go new file mode 100644 index 000000000..25c22931b --- /dev/null +++ b/core/search/groups_test.go @@ -0,0 +1,92 @@ +package search_test + +import ( + "fmt" + "testing" + + "github.com/lib/pq" + "github.com/nyaruka/gocommon/dbutil/assertdb" + "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" + "github.com/nyaruka/mailroom/testsuite" + "github.com/nyaruka/mailroom/testsuite/testdata" + "github.com/stretchr/testify/assert" +) + +func TestSmartGroups(t *testing.T) { + ctx, rt, db, _ := testsuite.Get() + + defer testsuite.Reset(testsuite.ResetAll) + + // insert an event on our campaign + newEvent := testdata.InsertCampaignFlowEvent(db, testdata.RemindersCampaign, testdata.Favorites, testdata.JoinedField, 1000, "W") + + // clear Cathy's value + db.MustExec( + `update contacts_contact set fields = fields - $2 + WHERE id = $1`, testdata.Cathy.ID, testdata.JoinedField.UUID) + + // and populate Bob's + db.MustExec( + fmt.Sprintf(`update contacts_contact set fields = fields || + '{"%s": { "text": "2029-09-15T12:00:00+00:00", "datetime": "2029-09-15T12:00:00+00:00" }}'::jsonb + WHERE id = $1`, testdata.JoinedField.UUID), testdata.Bob.ID) + + oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshCampaigns|models.RefreshGroups) + assert.NoError(t, err) + + mockES := testsuite.NewMockElasticServer() + defer mockES.Close() + + es := mockES.Client() + + mockES.AddResponse(testdata.Cathy.ID) + mockES.AddResponse(testdata.Bob.ID) + mockES.AddResponse(testdata.Bob.ID) + + tcs := []struct { + Query string + ContactIDs []models.ContactID + EventContactIDs []models.ContactID + }{ + { + "cathy", + []models.ContactID{testdata.Cathy.ID}, + []models.ContactID{}, + }, + { + "bob", + []models.ContactID{testdata.Bob.ID}, + []models.ContactID{testdata.Bob.ID}, + }, + { + "unchanged", + []models.ContactID{testdata.Bob.ID}, + []models.ContactID{testdata.Bob.ID}, + }, + } + + for _, tc := range tcs { + err := models.UpdateGroupStatus(ctx, db, testdata.DoctorsGroup.ID, models.GroupStatusInitializing) + assert.NoError(t, err) + + count, err := search.PopulateSmartGroup(ctx, db, es, oa, testdata.DoctorsGroup.ID, tc.Query) + assert.NoError(t, err, "error populating smart group for: %s", tc.Query) + + assert.Equal(t, count, len(tc.ContactIDs)) + + // assert the current group membership + contactIDs, err := models.ContactIDsForGroupIDs(ctx, db, []models.GroupID{testdata.DoctorsGroup.ID}) + assert.NoError(t, err) + assert.Equal(t, tc.ContactIDs, contactIDs) + + assertdb.Query(t, db, `SELECT count(*) from contacts_contactgroup WHERE id = $1 AND status = 'R'`, testdata.DoctorsGroup.ID). + Returns(1, "wrong number of contacts in group for query: %s", tc.Query) + + assertdb.Query(t, db, `SELECT count(*) from campaigns_eventfire WHERE event_id = $1`, newEvent.ID). + Returns(len(tc.EventContactIDs), "wrong number of contacts with events for query: %s", tc.Query) + + assertdb.Query(t, db, `SELECT count(*) from campaigns_eventfire WHERE event_id = $1 AND contact_id = ANY($2)`, newEvent.ID, pq.Array(tc.EventContactIDs)). + Returns(len(tc.EventContactIDs), "wrong contacts with events for query: %s", tc.Query) + } +} diff --git a/core/search/queries.go b/core/search/queries.go new file mode 100644 index 000000000..31daf5b5c --- /dev/null +++ b/core/search/queries.go @@ -0,0 +1,81 @@ +package search + +import ( + "fmt" + "strings" + "time" + + "github.com/nyaruka/gocommon/dates" + "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/mailroom/core/models" +) + +// Exclusions are preset exclusion conditions +type Exclusions struct { + NonActive bool `json:"non_active"` // contacts who are blocked, stopped or archived + InAFlow bool `json:"in_a_flow"` // contacts who are currently in a flow (including this one) + StartedPreviously bool `json:"started_previously"` // contacts who have been in this flow in the last 90 days + NotSeenRecently bool `json:"not_seen_recently"` // contacts who have not been seen for more than 90 days +} + +// BuildStartQuery builds a start query for the given flow and start options +func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, groupIDs []models.GroupID, contactIDs []models.ContactID, urnz []urns.URN, userQuery string, excs Exclusions) string { + inclusions := make([]string, 0, 10) + + for _, groupID := range groupIDs { + group := oa.GroupByID(groupID) + if group != nil { + inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) + } + } + for _, contactID := range contactIDs { + inclusions = append(inclusions, fmt.Sprintf("id = %d", contactID)) + } + for _, urn := range urnz { + scheme, path, _, _ := urn.ToParts() + inclusions = append(inclusions, fmt.Sprintf("%s = \"%s\"", scheme, path)) + } + if userQuery != "" { + if len(inclusions) > 0 { + userQuery = fmt.Sprintf("(%s)", userQuery) + } + inclusions = append(inclusions, userQuery) + } + + exclusions := make([]string, 0, 10) + if excs.NonActive { + exclusions = append(exclusions, "status = \"active\"") + } + if excs.InAFlow { + exclusions = append(exclusions, "flow = \"\"") + } + if excs.StartedPreviously { + exclusions = append(exclusions, fmt.Sprintf("history != \"%s\"", flow.Name())) + } + if excs.NotSeenRecently { + seenSince := dates.Now().Add(-time.Hour * 24 * 90) + exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(oa, seenSince))) + } + + inclusionCmp := strings.Join(inclusions, " OR ") + exclusionCmp := strings.Join(exclusions, " AND ") + + if len(inclusions) > 1 && len(exclusions) > 0 { + inclusionCmp = fmt.Sprintf("(%s)", inclusionCmp) + } + + conditions := make([]string, 0, 2) + if inclusionCmp != "" { + conditions = append(conditions, inclusionCmp) + } + if exclusionCmp != "" { + conditions = append(conditions, exclusionCmp) + } + return strings.Join(conditions, " AND ") +} + +func formatQueryDate(oa *models.OrgAssets, t time.Time) string { + d := dates.ExtractDate(t.In(oa.Env().Timezone())) + s, _ := d.Format(string(oa.Env().DateFormat()), oa.Env().DefaultLocale().ToBCP47()) + return s +} diff --git a/core/search/queries_test.go b/core/search/queries_test.go new file mode 100644 index 000000000..fdb2a627b --- /dev/null +++ b/core/search/queries_test.go @@ -0,0 +1,77 @@ +package search_test + +import ( + "testing" + + "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" + "github.com/nyaruka/mailroom/testsuite" + "github.com/nyaruka/mailroom/testsuite/testdata" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestBuildStartQuery(t *testing.T) { + _, rt, _, _ := testsuite.Get() + + oa := testdata.Org1.Load(rt) + flow, err := oa.FlowByID(testdata.Favorites.ID) + require.NoError(t, err) + + tcs := []struct { + groupIDs []models.GroupID + contactIDs []models.ContactID + urns []urns.URN + userQuery string + exclusions search.Exclusions + expected string + }{ + { + groupIDs: []models.GroupID{testdata.DoctorsGroup.ID, testdata.TestersGroup.ID}, + contactIDs: []models.ContactID{testdata.Cathy.ID, testdata.George.ID}, + urns: []urns.URN{"tel:+1234567890", "telegram:9876543210"}, + exclusions: search.Exclusions{}, + expected: `group = "Doctors" OR group = "Testers" OR id = 10000 OR id = 10002 OR tel = "+1234567890" OR telegram = "9876543210"`, + }, + { + groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, + contactIDs: []models.ContactID{testdata.Cathy.ID}, + urns: []urns.URN{"tel:+1234567890"}, + exclusions: search.Exclusions{ + NonActive: true, + InAFlow: true, + StartedPreviously: true, + NotSeenRecently: true, + }, + expected: `(group = "Doctors" OR id = 10000 OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, + }, + { + contactIDs: []models.ContactID{testdata.Cathy.ID}, + exclusions: search.Exclusions{ + NonActive: true, + }, + expected: `id = 10000 AND status = "active"`, + }, + { + userQuery: "gender = M", + exclusions: search.Exclusions{}, + expected: "gender = M", + }, + { + userQuery: "gender = M", + exclusions: search.Exclusions{ + NonActive: true, + InAFlow: true, + StartedPreviously: true, + NotSeenRecently: true, + }, + expected: `gender = M AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, + }, + } + + for _, tc := range tcs { + actual := search.BuildStartQuery(oa, flow, tc.groupIDs, tc.contactIDs, tc.urns, tc.userQuery, tc.exclusions) + assert.Equal(t, tc.expected, actual) + } +} diff --git a/core/models/search.go b/core/search/search.go similarity index 82% rename from core/models/search.go rename to core/search/search.go index f56929a26..dc74525bb 100644 --- a/core/models/search.go +++ b/core/search/search.go @@ -1,4 +1,4 @@ -package models +package search import ( "context" @@ -10,7 +10,7 @@ import ( "github.com/nyaruka/goflow/assets" "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/contactql/es" - + "github.com/nyaruka/mailroom/core/models" "github.com/olivere/elastic/v7" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -21,17 +21,17 @@ import ( type AssetMapper struct{} func (m *AssetMapper) Flow(f assets.Flow) int64 { - return int64(f.(*Flow).ID()) + return int64(f.(*models.Flow).ID()) } func (m *AssetMapper) Group(g assets.Group) int64 { - return int64(g.(*Group).ID()) + return int64(g.(*models.Group).ID()) } var assetMapper = &AssetMapper{} // BuildElasticQuery turns the passed in contact ql query into an elastic query -func BuildElasticQuery(oa *OrgAssets, group *Group, status ContactStatus, excludeIDs []ContactID, query *contactql.ContactQuery) elastic.Query { +func BuildElasticQuery(oa *models.OrgAssets, group *models.Group, status models.ContactStatus, excludeIDs []models.ContactID, query *contactql.ContactQuery) elastic.Query { // filter by org and active contacts eq := elastic.NewBoolQuery().Must( elastic.NewTermQuery("org_id", oa.OrgID()), @@ -44,7 +44,7 @@ func BuildElasticQuery(oa *OrgAssets, group *Group, status ContactStatus, exclud } // our status is present - if status != NilContactStatus { + if status != models.NilContactStatus { eq = eq.Must(elastic.NewTermQuery("status", status)) } @@ -67,7 +67,7 @@ func BuildElasticQuery(oa *OrgAssets, group *Group, status ContactStatus, exclud } // GetContactIDsForQueryPage returns a page of contact ids for the given query and sort -func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa *OrgAssets, group *Group, excludeIDs []ContactID, query string, sort string, offset int, pageSize int) (*contactql.ContactQuery, []ContactID, int64, error) { +func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa *models.OrgAssets, group *models.Group, excludeIDs []models.ContactID, query string, sort string, offset int, pageSize int) (*contactql.ContactQuery, []models.ContactID, int64, error) { env := oa.Env() start := time.Now() var parsed *contactql.ContactQuery @@ -84,7 +84,7 @@ func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa * } } - eq := BuildElasticQuery(oa, group, NilContactStatus, excludeIDs, parsed) + eq := BuildElasticQuery(oa, group, models.NilContactStatus, excludeIDs, parsed) fieldSort, err := es.ToElasticFieldSort(sort, oa.SessionAssets()) if err != nil { @@ -105,7 +105,7 @@ func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa * return nil, nil, 0, errors.Wrapf(err, "error performing query: %s", ee.Details.Reason) } - ids := make([]ContactID, 0, pageSize) + ids := make([]models.ContactID, 0, pageSize) ids, err = appendIDsFromHits(ids, results.Hits.Hits) if err != nil { return nil, nil, 0, err @@ -117,7 +117,7 @@ func GetContactIDsForQueryPage(ctx context.Context, client *elastic.Client, oa * } // GetContactIDsForQuery returns up to limit the contact ids that match the given query without sorting. Limit of -1 means return all. -func GetContactIDsForQuery(ctx context.Context, client *elastic.Client, oa *OrgAssets, query string, limit int) ([]ContactID, error) { +func GetContactIDsForQuery(ctx context.Context, client *elastic.Client, oa *models.OrgAssets, query string, limit int) ([]models.ContactID, error) { env := oa.Env() start := time.Now() @@ -132,8 +132,8 @@ func GetContactIDsForQuery(ctx context.Context, client *elastic.Client, oa *OrgA } routing := strconv.FormatInt(int64(oa.OrgID()), 10) - eq := BuildElasticQuery(oa, nil, ContactStatusActive, nil, parsed) - ids := make([]ContactID, 0, 100) + eq := BuildElasticQuery(oa, nil, models.ContactStatusActive, nil, parsed) + ids := make([]models.ContactID, 0, 100) // if limit provided that can be done with regular search, do that if limit >= 0 && limit <= 10000 { @@ -171,14 +171,14 @@ func GetContactIDsForQuery(ctx context.Context, client *elastic.Client, oa *OrgA } // utility to convert search hits to contact IDs and append them to the given slice -func appendIDsFromHits(ids []ContactID, hits []*elastic.SearchHit) ([]ContactID, error) { +func appendIDsFromHits(ids []models.ContactID, hits []*elastic.SearchHit) ([]models.ContactID, error) { for _, hit := range hits { id, err := strconv.Atoi(hit.Id) if err != nil { return nil, errors.Wrapf(err, "unexpected non-integer contact id: %s", hit.Id) } - ids = append(ids, ContactID(id)) + ids = append(ids, models.ContactID(id)) } return ids, nil } diff --git a/core/models/search_test.go b/core/search/search_test.go similarity index 97% rename from core/models/search_test.go rename to core/search/search_test.go index 4ed19c040..c3cb5769e 100644 --- a/core/models/search_test.go +++ b/core/search/search_test.go @@ -1,13 +1,13 @@ -package models_test +package search_test import ( "testing" "github.com/nyaruka/goflow/test" "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" - "github.com/olivere/elastic/v7" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -179,7 +179,7 @@ func TestGetContactIDsForQueryPage(t *testing.T) { for i, tc := range tcs { group := oa.GroupByID(tc.Group.ID) - _, ids, total, err := models.GetContactIDsForQueryPage(ctx, es, oa, group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) + _, ids, total, err := search.GetContactIDsForQueryPage(ctx, es, oa, group, tc.ExcludeIDs, tc.Query, tc.Sort, 0, 50) if tc.ExpectedError != "" { assert.EqualError(t, err, tc.ExpectedError) @@ -340,7 +340,7 @@ func TestGetContactIDsForQuery(t *testing.T) { } for i, tc := range tcs { - ids, err := models.GetContactIDsForQuery(ctx, es, oa, tc.query, tc.limit) + ids, err := search.GetContactIDsForQuery(ctx, es, oa, tc.query, tc.limit) if tc.expectedError != "" { assert.EqualError(t, err, tc.expectedError) diff --git a/core/tasks/contacts/populate_dynamic_group.go b/core/tasks/contacts/populate_dynamic_group.go index 0ee825dd3..b12baf1fb 100644 --- a/core/tasks/contacts/populate_dynamic_group.go +++ b/core/tasks/contacts/populate_dynamic_group.go @@ -6,6 +6,7 @@ import ( "time" "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/core/tasks" "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/redisx" @@ -39,7 +40,7 @@ func (t *PopulateDynamicGroupTask) Perform(ctx context.Context, rt *runtime.Runt locker := redisx.NewLocker(fmt.Sprintf(populateLockKey, t.GroupID), time.Hour) lock, err := locker.Grab(rt.RP, time.Minute*5) if err != nil { - return errors.Wrapf(err, "error grabbing lock to repopulate dynamic group: %d", t.GroupID) + return errors.Wrapf(err, "error grabbing lock to repopulate smart group: %d", t.GroupID) } defer locker.Release(rt.RP, lock) @@ -50,18 +51,18 @@ func (t *PopulateDynamicGroupTask) Perform(ctx context.Context, rt *runtime.Runt "query": t.Query, }) - log.Info("starting population of dynamic group") + log.Info("starting population of smart group") oa, err := models.GetOrgAssets(ctx, rt, orgID) if err != nil { return errors.Wrapf(err, "unable to load org when populating group: %d", t.GroupID) } - count, err := models.PopulateDynamicGroup(ctx, rt.DB, rt.ES, oa, t.GroupID, t.Query) + count, err := search.PopulateSmartGroup(ctx, rt.DB, rt.ES, oa, t.GroupID, t.Query) if err != nil { - return errors.Wrapf(err, "error populating dynamic group: %d", t.GroupID) + return errors.Wrapf(err, "error populating smart group: %d", t.GroupID) } - logrus.WithField("elapsed", time.Since(start)).WithField("count", count).Info("completed populating dynamic group") + logrus.WithField("elapsed", time.Since(start)).WithField("count", count).Info("completed populating smart group") return nil } diff --git a/core/tasks/starts/worker.go b/core/tasks/starts/worker.go index 45c3a509e..a652ee147 100644 --- a/core/tasks/starts/worker.go +++ b/core/tasks/starts/worker.go @@ -11,6 +11,7 @@ import ( "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/core/runner" + "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/runtime" "github.com/lib/pq" @@ -120,7 +121,7 @@ func CreateFlowBatches(ctx context.Context, rt *runtime.Runtime, start *models.F if start.Type() == models.StartTypeFlowAction { limit = 1 } - matches, err := models.GetContactIDsForQuery(ctx, rt.ES, oa, start.Query(), limit) + matches, err := search.GetContactIDsForQuery(ctx, rt.ES, oa, start.Query(), limit) if err != nil { return errors.Wrapf(err, "error performing search for start: %d", start.ID()) } diff --git a/web/contact/search.go b/web/contact/search.go index 20d5b9319..aff32ae23 100644 --- a/web/contact/search.go +++ b/web/contact/search.go @@ -8,6 +8,7 @@ import ( "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/utils" "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/mailroom/web" @@ -24,7 +25,6 @@ func init() { // { // "org_id": 1, // "group_id": 234, -// "group_uuid": "985a83fe-2e9f-478d-a3ec-fa602d5e7ddd", // "query": "age > 10", // "sort": "-age" // } @@ -32,7 +32,7 @@ func init() { type searchRequest struct { OrgID models.OrgID `json:"org_id" validate:"required"` GroupID models.GroupID `json:"group_id"` - GroupUUID assets.GroupUUID `json:"group_uuid"` + GroupUUID assets.GroupUUID `json:"group_uuid"` // deprecated ExcludeIDs []models.ContactID `json:"exclude_ids"` Query string `json:"query"` PageSize int `json:"page_size"` @@ -88,7 +88,7 @@ func handleSearch(ctx context.Context, rt *runtime.Runtime, r *http.Request) (in } // perform our search - parsed, hits, total, err := models.GetContactIDsForQueryPage(ctx, rt.ES, oa, group, request.ExcludeIDs, request.Query, request.Sort, request.Offset, request.PageSize) + parsed, hits, total, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, group, request.ExcludeIDs, request.Query, request.Sort, request.Offset, request.PageSize) if err != nil { isQueryError, qerr := contactql.IsQueryError(err) @@ -125,8 +125,7 @@ func handleSearch(ctx context.Context, rt *runtime.Runtime, r *http.Request) (in // { // "org_id": 1, // "query": "age > 10", -// "group_id": 234, -// "group_uuid": "123123-123-123-" +// "group_id": 234 // } // type parseRequest struct { @@ -134,7 +133,7 @@ type parseRequest struct { Query string `json:"query" validate:"required"` ParseOnly bool `json:"parse_only"` GroupID models.GroupID `json:"group_id"` - GroupUUID assets.GroupUUID `json:"group_uuid"` + GroupUUID assets.GroupUUID `json:"group_uuid"` // deprecated } // Response for a parse query request @@ -196,7 +195,7 @@ func handleParseQuery(ctx context.Context, rt *runtime.Runtime, r *http.Request) var elasticSource interface{} if !request.ParseOnly { - eq := models.BuildElasticQuery(oa, group, models.NilContactStatus, nil, parsed) + eq := search.BuildElasticQuery(oa, group, models.NilContactStatus, nil, parsed) elasticSource, err = eq.Source() if err != nil { return nil, http.StatusInternalServerError, errors.Wrap(err, "error getting elastic source") diff --git a/web/flow/start.go b/web/flow/start.go index 043a93a4c..22922780f 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -2,15 +2,12 @@ package flow import ( "context" - "fmt" "net/http" - "strings" - "time" - "github.com/nyaruka/gocommon/dates" "github.com/nyaruka/gocommon/urns" "github.com/nyaruka/goflow/utils" "github.com/nyaruka/mailroom/core/models" + "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/mailroom/web" "github.com/pkg/errors" @@ -25,8 +22,8 @@ func init() { // { // "org_id": 1, // "flow_id": 2, -// "contact_ids": [12, 34], // "group_ids": [123, 345], +// "contact_ids": [12, 34], // "urns": ["tel:+1234567890"], // "user_query": "", // "exclusions": { @@ -46,11 +43,11 @@ func init() { type previewStartRequest struct { OrgID models.OrgID `json:"org_id" validate:"required"` FlowID models.FlowID `json:"flow_id" validate:"required"` - ContactIDs []models.ContactID `json:"contact_ids"` GroupIDs []models.GroupID `json:"group_ids"` + ContactIDs []models.ContactID `json:"contact_ids"` URNs []urns.URN `json:"urns"` Query string `json:"query"` - Exclusions Exclusions `json:"exclusions"` + Exclusions search.Exclusions `json:"exclusions"` } type previewStartResponse struct { @@ -75,77 +72,15 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load flow") } - query := BuildStartQuery(oa, flow, request.Query, request.GroupIDs, request.ContactIDs, request.URNs, request.Exclusions) + query := search.BuildStartQuery(oa, flow, request.GroupIDs, request.ContactIDs, request.URNs, request.Query, request.Exclusions) if query == "" { return &previewStartResponse{Query: "", Count: 0, Sample: []models.ContactID{}}, http.StatusOK, nil } - parsedQuery, sampleIDs, count, err := models.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, 5) + parsedQuery, sampleIDs, count, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, 5) if err != nil { return nil, http.StatusInternalServerError, errors.Wrapf(err, "error querying preview") } return &previewStartResponse{Query: parsedQuery.String(), Count: int(count), Sample: sampleIDs}, http.StatusOK, nil } - -//////////////// Query building support ////////////// - -// Exclusions are preset exclusion conditions -type Exclusions struct { - NonActive bool `json:"non_active"` // contacts who are blocked, stopped or archived - InAFlow bool `json:"in_a_flow"` // contacts who are currently in a flow (including this one) - StartedPreviously bool `json:"started_previously"` // contacts who have been in this flow in the last 90 days - NotSeenRecently bool `json:"not_seen_recently"` // contacts who have not been seen for more than 90 days -} - -// BuildStartQuery builds a start query for the given flow and start options -func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, userQuery string, groupIDs []models.GroupID, contactIDs []models.ContactID, urnz []urns.URN, excs Exclusions) string { - inclusions := make([]string, 0, 10) - if userQuery != "" { - inclusions = append(inclusions, fmt.Sprintf("(%s)", userQuery)) - } - for _, groupID := range groupIDs { - group := oa.GroupByID(groupID) - if group != nil { - inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) - } - } - for _, contactID := range contactIDs { - inclusions = append(inclusions, fmt.Sprintf("id = %d", contactID)) - } - for _, urn := range urnz { - scheme, path, _, _ := urn.ToParts() - inclusions = append(inclusions, fmt.Sprintf("%s = \"%s\"", scheme, path)) - } - - exclusions := make([]string, 0, 10) - if excs.NonActive { - exclusions = append(exclusions, "status = \"active\"") - } - if excs.InAFlow { - exclusions = append(exclusions, "flow = \"\"") - } - if excs.StartedPreviously { - exclusions = append(exclusions, fmt.Sprintf("history != \"%s\"", flow.Name())) - } - if excs.NotSeenRecently { - seenSince := dates.Now().Add(-time.Hour * 24 * 90) - exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(oa, seenSince))) - } - - conditions := make([]string, 0, 10) - if len(inclusions) == 1 { - conditions = append(conditions, inclusions[0]) - } else if len(inclusions) > 1 { - conditions = append(conditions, fmt.Sprintf("(%s)", strings.Join(inclusions, " OR "))) - } - conditions = append(conditions, exclusions...) - - return strings.Join(conditions, " AND ") -} - -func formatQueryDate(oa *models.OrgAssets, t time.Time) string { - d := dates.ExtractDate(t.In(oa.Env().Timezone())) - s, _ := d.Format(string(oa.Env().DateFormat()), oa.Env().DefaultLocale().ToBCP47()) - return s -} From 241c617bd0d4ca6d53724ae5957e2ab18c437cb8 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 20 Apr 2022 14:44:02 -0500 Subject: [PATCH 43/97] Fix tests --- core/models/globals_test.go | 4 ++++ core/models/http_logs_test.go | 2 ++ core/models/imports_test.go | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/models/globals_test.go b/core/models/globals_test.go index 656987c18..6c61be52f 100644 --- a/core/models/globals_test.go +++ b/core/models/globals_test.go @@ -13,6 +13,10 @@ import ( func TestLoadGlobals(t *testing.T) { ctx, rt, db, _ := testsuite.Get() + defer func() { + db.MustExec(`UPDATE globals_global SET value = 'Nyaruka' WHERE org_id = $1 AND key = $2`, testdata.Org1.ID, "org_name") + }() + // set one of our global values to empty db.MustExec(`UPDATE globals_global SET value = '' WHERE org_id = $1 AND key = $2`, testdata.Org1.ID, "org_name") diff --git a/core/models/http_logs_test.go b/core/models/http_logs_test.go index 922f1ef91..f120eb9ea 100644 --- a/core/models/http_logs_test.go +++ b/core/models/http_logs_test.go @@ -46,6 +46,8 @@ func TestHTTPLogs(t *testing.T) { func TestHTTPLogger(t *testing.T) { ctx, _, db, _ := testsuite.Get() + defer func() { db.MustExec(`DELETE FROM request_logs_httplog`) }() + defer httpx.SetRequestor(httpx.DefaultRequestor) httpx.SetRequestor(httpx.NewMockRequestor(map[string][]httpx.MockResponse{ "https://temba.io": { diff --git a/core/models/imports_test.go b/core/models/imports_test.go index 414152379..3243fc4ab 100644 --- a/core/models/imports_test.go +++ b/core/models/imports_test.go @@ -60,7 +60,7 @@ func TestContactImports(t *testing.T) { }{} jsonx.MustUnmarshal(testJSON, &tcs) - oa, err := models.GetOrgAssets(ctx, rt, 1) + oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshOrg|models.RefreshChannels|models.RefreshGroups) require.NoError(t, err) uuids.SetGenerator(uuids.NewSeededGenerator(12345)) From 88c7501db864ca6a0878c5205e3fa36bcbd208ce Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 20 Apr 2022 14:57:49 -0500 Subject: [PATCH 44/97] Add sample_size param to preview_start endpoint --- web/flow/start.go | 6 ++++-- web/flow/testdata/preview_start.json | 17 +++++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/web/flow/start.go b/web/flow/start.go index 22922780f..3f4b7307b 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -31,7 +31,8 @@ func init() { // "in_a_flow": false, // "started_previously": true, // "not_seen_recently": false -// } +// }, +// "sample_size": 5 // } // // { @@ -48,6 +49,7 @@ type previewStartRequest struct { URNs []urns.URN `json:"urns"` Query string `json:"query"` Exclusions search.Exclusions `json:"exclusions"` + SampleSize int `json:"sample_size" validate:"required"` } type previewStartResponse struct { @@ -77,7 +79,7 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques return &previewStartResponse{Query: "", Count: 0, Sample: []models.ContactID{}}, http.StatusOK, nil } - parsedQuery, sampleIDs, count, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, 5) + parsedQuery, sampleIDs, count, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, request.SampleSize) if err != nil { return nil, http.StatusInternalServerError, errors.Wrapf(err, "error querying preview") } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index ff5dde7ca..223b518b8 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -15,7 +15,7 @@ "body": {}, "status": 400, "response": { - "error": "request failed validation: field 'org_id' is required, field 'flow_id' is required" + "error": "request failed validation: field 'org_id' is required, field 'flow_id' is required, field 'sample_size' is required" } }, { @@ -24,7 +24,8 @@ "path": "/mr/flow/preview_start", "body": { "org_id": 1, - "flow_id": 10001 + "flow_id": 10001, + "sample_size": 3 }, "status": 200, "response": { @@ -52,7 +53,8 @@ "tel:+1234567890", "facebook:9876543210" ], - "query": "" + "query": "", + "sample_size": 3 }, "status": 200, "response": { @@ -73,7 +75,8 @@ "group_ids": [], "contact_ids": [], "urns": [], - "query": "gender = M" + "query": "gender = M", + "sample_size": 3 }, "status": 200, "response": { @@ -109,7 +112,8 @@ "in_a_flow": true, "started_previously": true, "not_seen_recently": true - } + }, + "sample_size": 3 }, "status": 200, "response": { @@ -136,7 +140,8 @@ "in_a_flow": true, "started_previously": true, "not_seen_recently": true - } + }, + "sample_size": 3 }, "status": 200, "response": { From e8052efdb02a6a221e398be6e37e8e891c6552eb Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 20 Apr 2022 15:24:33 -0500 Subject: [PATCH 45/97] Update CHANGELOG.md for v7.3.9 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db3e423da..772036bc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.9 +---------- + * Move search into its own package and add more tests + * Add endpoint to generate a flow start preview + v7.3.8 ---------- * Use new contactfield.name and is_system fields From 2fc0322627aabd86511bcc77909b0f2d715b613d Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 21 Apr 2022 11:06:38 -0500 Subject: [PATCH 46/97] Switch preview start endpoint to take UUIDs --- core/search/queries.go | 24 +++++++-------- core/search/queries_test.go | 45 +++++++++++++++++----------- web/flow/start.go | 34 +++++++++++++-------- web/flow/testdata/preview_start.json | 31 +++++++++---------- 4 files changed, 75 insertions(+), 59 deletions(-) diff --git a/core/search/queries.go b/core/search/queries.go index 31daf5b5c..35ba64fc5 100644 --- a/core/search/queries.go +++ b/core/search/queries.go @@ -7,6 +7,8 @@ import ( "github.com/nyaruka/gocommon/dates" "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/goflow/envs" + "github.com/nyaruka/goflow/flows" "github.com/nyaruka/mailroom/core/models" ) @@ -19,17 +21,14 @@ type Exclusions struct { } // BuildStartQuery builds a start query for the given flow and start options -func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, groupIDs []models.GroupID, contactIDs []models.ContactID, urnz []urns.URN, userQuery string, excs Exclusions) string { +func BuildStartQuery(env envs.Environment, flow *models.Flow, groups []*models.Group, contactUUIDs []flows.ContactUUID, urnz []urns.URN, userQuery string, excs Exclusions) string { inclusions := make([]string, 0, 10) - for _, groupID := range groupIDs { - group := oa.GroupByID(groupID) - if group != nil { - inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) - } + for _, group := range groups { + inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) } - for _, contactID := range contactIDs { - inclusions = append(inclusions, fmt.Sprintf("id = %d", contactID)) + for _, contactUUID := range contactUUIDs { + inclusions = append(inclusions, fmt.Sprintf("uuid = \"%s\"", contactUUID)) } for _, urn := range urnz { scheme, path, _, _ := urn.ToParts() @@ -54,7 +53,7 @@ func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, groupIDs []models. } if excs.NotSeenRecently { seenSince := dates.Now().Add(-time.Hour * 24 * 90) - exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(oa, seenSince))) + exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(env, seenSince))) } inclusionCmp := strings.Join(inclusions, " OR ") @@ -74,8 +73,9 @@ func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, groupIDs []models. return strings.Join(conditions, " AND ") } -func formatQueryDate(oa *models.OrgAssets, t time.Time) string { - d := dates.ExtractDate(t.In(oa.Env().Timezone())) - s, _ := d.Format(string(oa.Env().DateFormat()), oa.Env().DefaultLocale().ToBCP47()) +// formats a date for use in a query +func formatQueryDate(env envs.Environment, t time.Time) string { + d := dates.ExtractDate(t.In(env.Timezone())) + s, _ := d.Format(string(env.DateFormat()), env.DefaultLocale().ToBCP47()) return s } diff --git a/core/search/queries_test.go b/core/search/queries_test.go index fdb2a627b..a068d9080 100644 --- a/core/search/queries_test.go +++ b/core/search/queries_test.go @@ -2,8 +2,11 @@ package search_test import ( "testing" + "time" + "github.com/nyaruka/gocommon/dates" "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/goflow/flows" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/search" "github.com/nyaruka/mailroom/testsuite" @@ -15,43 +18,49 @@ import ( func TestBuildStartQuery(t *testing.T) { _, rt, _, _ := testsuite.Get() + dates.SetNowSource(dates.NewFixedNowSource(time.Date(2022, 4, 20, 15, 30, 45, 0, time.UTC))) + defer dates.SetNowSource(dates.DefaultNowSource) + oa := testdata.Org1.Load(rt) flow, err := oa.FlowByID(testdata.Favorites.ID) require.NoError(t, err) + doctors := oa.GroupByID(testdata.DoctorsGroup.ID) + testers := oa.GroupByID(testdata.TestersGroup.ID) + tcs := []struct { - groupIDs []models.GroupID - contactIDs []models.ContactID - urns []urns.URN - userQuery string - exclusions search.Exclusions - expected string + groups []*models.Group + contactUUIDs []flows.ContactUUID + urns []urns.URN + userQuery string + exclusions search.Exclusions + expected string }{ { - groupIDs: []models.GroupID{testdata.DoctorsGroup.ID, testdata.TestersGroup.ID}, - contactIDs: []models.ContactID{testdata.Cathy.ID, testdata.George.ID}, - urns: []urns.URN{"tel:+1234567890", "telegram:9876543210"}, - exclusions: search.Exclusions{}, - expected: `group = "Doctors" OR group = "Testers" OR id = 10000 OR id = 10002 OR tel = "+1234567890" OR telegram = "9876543210"`, + groups: []*models.Group{doctors, testers}, + contactUUIDs: []flows.ContactUUID{testdata.Cathy.UUID, testdata.George.UUID}, + urns: []urns.URN{"tel:+1234567890", "telegram:9876543210"}, + exclusions: search.Exclusions{}, + expected: `group = "Doctors" OR group = "Testers" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR uuid = "8d024bcd-f473-4719-a00a-bd0bb1190135" OR tel = "+1234567890" OR telegram = "9876543210"`, }, { - groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, - contactIDs: []models.ContactID{testdata.Cathy.ID}, - urns: []urns.URN{"tel:+1234567890"}, + groups: []*models.Group{doctors}, + contactUUIDs: []flows.ContactUUID{testdata.Cathy.UUID}, + urns: []urns.URN{"tel:+1234567890"}, exclusions: search.Exclusions{ NonActive: true, InAFlow: true, StartedPreviously: true, NotSeenRecently: true, }, - expected: `(group = "Doctors" OR id = 10000 OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, + expected: `(group = "Doctors" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, }, { - contactIDs: []models.ContactID{testdata.Cathy.ID}, + contactUUIDs: []flows.ContactUUID{testdata.Cathy.UUID}, exclusions: search.Exclusions{ NonActive: true, }, - expected: `id = 10000 AND status = "active"`, + expected: `uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" AND status = "active"`, }, { userQuery: "gender = M", @@ -71,7 +80,7 @@ func TestBuildStartQuery(t *testing.T) { } for _, tc := range tcs { - actual := search.BuildStartQuery(oa, flow, tc.groupIDs, tc.contactIDs, tc.urns, tc.userQuery, tc.exclusions) + actual := search.BuildStartQuery(oa.Env(), flow, tc.groups, tc.contactUUIDs, tc.urns, tc.userQuery, tc.exclusions) assert.Equal(t, tc.expected, actual) } } diff --git a/web/flow/start.go b/web/flow/start.go index 3f4b7307b..a7f6f52c4 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -5,6 +5,8 @@ import ( "net/http" "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/goflow/assets" + "github.com/nyaruka/goflow/flows" "github.com/nyaruka/goflow/utils" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/search" @@ -22,8 +24,8 @@ func init() { // { // "org_id": 1, // "flow_id": 2, -// "group_ids": [123, 345], -// "contact_ids": [12, 34], +// "group_uuids": ["5fa925e4-edd8-4e2a-ab24-b3dbb5932ddd", "2912b95f-5b89-4d39-a2a8-5292602f357f"], +// "contact_uuids": ["e5bb9e6f-7703-4ba1-afba-0b12791de38b"], // "urns": ["tel:+1234567890"], // "user_query": "", // "exclusions": { @@ -36,20 +38,20 @@ func init() { // } // // { -// "query": "(id = 12 OR id = 34 OR group = "No Age" OR group = "No Name" OR tel = "+1234567890") AND history != \"Registration\"", +// "query": "(group = "No Age" OR group = "No Name" OR uuid = "e5bb9e6f-7703-4ba1-afba-0b12791de38b" OR tel = "+1234567890") AND history != \"Registration\"", // "count": 567, // "sample": [12, 34, 56, 67, 78] // } // type previewStartRequest struct { - OrgID models.OrgID `json:"org_id" validate:"required"` - FlowID models.FlowID `json:"flow_id" validate:"required"` - GroupIDs []models.GroupID `json:"group_ids"` - ContactIDs []models.ContactID `json:"contact_ids"` - URNs []urns.URN `json:"urns"` - Query string `json:"query"` - Exclusions search.Exclusions `json:"exclusions"` - SampleSize int `json:"sample_size" validate:"required"` + OrgID models.OrgID `json:"org_id" validate:"required"` + FlowID models.FlowID `json:"flow_id" validate:"required"` + GroupUUIDs []assets.GroupUUID `json:"group_uuids"` + ContactUUIDs []flows.ContactUUID `json:"contact_uuids"` + URNs []urns.URN `json:"urns"` + Query string `json:"query"` + Exclusions search.Exclusions `json:"exclusions"` + SampleSize int `json:"sample_size" validate:"required"` } type previewStartResponse struct { @@ -74,7 +76,15 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load flow") } - query := search.BuildStartQuery(oa, flow, request.GroupIDs, request.ContactIDs, request.URNs, request.Query, request.Exclusions) + groups := make([]*models.Group, 0, len(request.GroupUUIDs)) + for _, groupUUID := range request.GroupUUIDs { + g := oa.GroupByUUID(groupUUID) + if g != nil { + groups = append(groups, g) + } + } + + query := search.BuildStartQuery(oa.Env(), flow, groups, request.ContactUUIDs, request.URNs, request.Query, request.Exclusions) if query == "" { return &previewStartResponse{Query: "", Count: 0, Sample: []models.ContactID{}}, http.StatusOK, nil } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 223b518b8..6acac1a1b 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -41,13 +41,13 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_ids": [ - 10000, - 10001 + "group_uuids": [ + "c153e265-f7c9-4539-9dbc-9b358714b638", + "5e9d8fab-5e7e-4f51-b533-261af5dea70d" ], - "contact_ids": [ - 1234, - 3456 + "contact_uuids": [ + "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", + "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" ], "urns": [ "tel:+1234567890", @@ -58,7 +58,7 @@ }, "status": 200, "response": { - "query": "group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210", + "query": "group = \"Doctors\" OR group = \"Testers\" OR uuid = \"5a8345c1-514a-4d1b-aee5-6f39b2f53cfa\" OR uuid = \"bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a\" OR tel = \"+1234567890\" OR facebook = 9876543210", "count": 1, "sample": [ 10000 @@ -94,13 +94,13 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_ids": [ - 10000, - 10001 + "group_uuids": [ + "c153e265-f7c9-4539-9dbc-9b358714b638", + "5e9d8fab-5e7e-4f51-b533-261af5dea70d" ], - "contact_ids": [ - 1234, - 3456 + "contact_uuids": [ + "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", + "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" ], "urns": [ "tel:+1234567890", @@ -117,7 +117,7 @@ }, "status": 200, "response": { - "query": "(group = \"Doctors\" OR group = \"Testers\" OR id = 1234 OR id = 3456 OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", + "query": "(group = \"Doctors\" OR group = \"Testers\" OR uuid = \"5a8345c1-514a-4d1b-aee5-6f39b2f53cfa\" OR uuid = \"bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a\" OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", "count": 1, "sample": [ 10002 @@ -131,9 +131,6 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_ids": [], - "contact_ids": [], - "urns": [], "query": "gender = M", "exclusions": { "non_active": true, From e52be7a5743c5d7bc6e6e3df86de86b78781d6a3 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 21 Apr 2022 13:45:36 -0500 Subject: [PATCH 47/97] Add query inspection metadata to preview_start endpoint response --- web/flow/start.go | 27 +++++++-- web/flow/testdata/preview_start.json | 85 ++++++++++++++++++++++++++-- 2 files changed, 102 insertions(+), 10 deletions(-) diff --git a/web/flow/start.go b/web/flow/start.go index a7f6f52c4..74a0e5e15 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -6,6 +6,7 @@ import ( "github.com/nyaruka/gocommon/urns" "github.com/nyaruka/goflow/assets" + "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/flows" "github.com/nyaruka/goflow/utils" "github.com/nyaruka/mailroom/core/models" @@ -40,7 +41,13 @@ func init() { // { // "query": "(group = "No Age" OR group = "No Name" OR uuid = "e5bb9e6f-7703-4ba1-afba-0b12791de38b" OR tel = "+1234567890") AND history != \"Registration\"", // "count": 567, -// "sample": [12, 34, 56, 67, 78] +// "sample": [12, 34, 56, 67, 78], +// "metadata": { +// "fields": [ +// {"key": "age", "name": "Age"} +// ], +// "allow_as_group": true +// } // } // type previewStartRequest struct { @@ -55,9 +62,10 @@ type previewStartRequest struct { } type previewStartResponse struct { - Query string `json:"query"` - Count int `json:"count"` - Sample []models.ContactID `json:"sample"` + Query string `json:"query"` + Count int `json:"count"` + Sample []models.ContactID `json:"sample"` + Metadata *contactql.Inspection `json:"metadata,omitempty"` } func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Request) (interface{}, int, error) { @@ -86,7 +94,7 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques query := search.BuildStartQuery(oa.Env(), flow, groups, request.ContactUUIDs, request.URNs, request.Query, request.Exclusions) if query == "" { - return &previewStartResponse{Query: "", Count: 0, Sample: []models.ContactID{}}, http.StatusOK, nil + return &previewStartResponse{Sample: []models.ContactID{}}, http.StatusOK, nil } parsedQuery, sampleIDs, count, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, request.SampleSize) @@ -94,5 +102,12 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques return nil, http.StatusInternalServerError, errors.Wrapf(err, "error querying preview") } - return &previewStartResponse{Query: parsedQuery.String(), Count: int(count), Sample: sampleIDs}, http.StatusOK, nil + inspection := contactql.Inspect(parsedQuery) + + return &previewStartResponse{ + Query: parsedQuery.String(), + Count: int(count), + Sample: sampleIDs, + Metadata: inspection, + }, http.StatusOK, nil } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 6acac1a1b..87668a065 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -62,7 +62,29 @@ "count": 1, "sample": [ 10000 - ] + ], + "metadata": { + "attributes": [ + "group", + "uuid" + ], + "fields": [], + "groups": [ + { + "name": "Doctors", + "uuid": "c153e265-f7c9-4539-9dbc-9b358714b638" + }, + { + "name": "Testers", + "uuid": "5e9d8fab-5e7e-4f51-b533-261af5dea70d" + } + ], + "schemes": [ + "facebook", + "tel" + ], + "allow_as_group": false + } } }, { @@ -84,7 +106,19 @@ "count": 1, "sample": [ 10001 - ] + ], + "metadata": { + "attributes": [], + "fields": [ + { + "key": "gender", + "name": "Gender" + } + ], + "groups": [], + "schemes": [], + "allow_as_group": true + } } }, { @@ -121,7 +155,33 @@ "count": 1, "sample": [ 10002 - ] + ], + "metadata": { + "attributes": [ + "flow", + "group", + "history", + "last_seen_on", + "status", + "uuid" + ], + "fields": [], + "groups": [ + { + "name": "Doctors", + "uuid": "c153e265-f7c9-4539-9dbc-9b358714b638" + }, + { + "name": "Testers", + "uuid": "5e9d8fab-5e7e-4f51-b533-261af5dea70d" + } + ], + "schemes": [ + "facebook", + "tel" + ], + "allow_as_group": false + } } }, { @@ -146,7 +206,24 @@ "count": 1, "sample": [ 10003 - ] + ], + "metadata": { + "attributes": [ + "flow", + "history", + "last_seen_on", + "status" + ], + "fields": [ + { + "key": "gender", + "name": "Gender" + } + ], + "groups": [], + "schemes": [], + "allow_as_group": false + } } } ] \ No newline at end of file From 7d5edf9c5f2266996281344e0953c3d153eca8c8 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 21 Apr 2022 14:08:00 -0500 Subject: [PATCH 48/97] Rename count to total to match other search endpoints --- web/flow/start.go | 22 +++++++++++----------- web/flow/testdata/preview_start.json | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/web/flow/start.go b/web/flow/start.go index 74a0e5e15..adc7bf15e 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -40,7 +40,7 @@ func init() { // // { // "query": "(group = "No Age" OR group = "No Name" OR uuid = "e5bb9e6f-7703-4ba1-afba-0b12791de38b" OR tel = "+1234567890") AND history != \"Registration\"", -// "count": 567, +// "total": 567, // "sample": [12, 34, 56, 67, 78], // "metadata": { // "fields": [ @@ -62,10 +62,10 @@ type previewStartRequest struct { } type previewStartResponse struct { - Query string `json:"query"` - Count int `json:"count"` - Sample []models.ContactID `json:"sample"` - Metadata *contactql.Inspection `json:"metadata,omitempty"` + Query string `json:"query"` + Total int `json:"total"` + SampleIDs []models.ContactID `json:"sample_ids"` + Metadata *contactql.Inspection `json:"metadata,omitempty"` } func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Request) (interface{}, int, error) { @@ -94,10 +94,10 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques query := search.BuildStartQuery(oa.Env(), flow, groups, request.ContactUUIDs, request.URNs, request.Query, request.Exclusions) if query == "" { - return &previewStartResponse{Sample: []models.ContactID{}}, http.StatusOK, nil + return &previewStartResponse{SampleIDs: []models.ContactID{}}, http.StatusOK, nil } - parsedQuery, sampleIDs, count, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, request.SampleSize) + parsedQuery, sampleIDs, total, err := search.GetContactIDsForQueryPage(ctx, rt.ES, oa, nil, nil, query, "", 0, request.SampleSize) if err != nil { return nil, http.StatusInternalServerError, errors.Wrapf(err, "error querying preview") } @@ -105,9 +105,9 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques inspection := contactql.Inspect(parsedQuery) return &previewStartResponse{ - Query: parsedQuery.String(), - Count: int(count), - Sample: sampleIDs, - Metadata: inspection, + Query: parsedQuery.String(), + Total: int(total), + SampleIDs: sampleIDs, + Metadata: inspection, }, http.StatusOK, nil } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 87668a065..7ecd305ad 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -30,8 +30,8 @@ "status": 200, "response": { "query": "", - "count": 0, - "sample": [] + "total": 0, + "sample_ids": [] } }, { @@ -59,8 +59,8 @@ "status": 200, "response": { "query": "group = \"Doctors\" OR group = \"Testers\" OR uuid = \"5a8345c1-514a-4d1b-aee5-6f39b2f53cfa\" OR uuid = \"bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a\" OR tel = \"+1234567890\" OR facebook = 9876543210", - "count": 1, - "sample": [ + "total": 1, + "sample_ids": [ 10000 ], "metadata": { @@ -103,8 +103,8 @@ "status": 200, "response": { "query": "gender = \"M\"", - "count": 1, - "sample": [ + "total": 1, + "sample_ids": [ 10001 ], "metadata": { @@ -152,8 +152,8 @@ "status": 200, "response": { "query": "(group = \"Doctors\" OR group = \"Testers\" OR uuid = \"5a8345c1-514a-4d1b-aee5-6f39b2f53cfa\" OR uuid = \"bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a\" OR tel = \"+1234567890\" OR facebook = 9876543210) AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", - "count": 1, - "sample": [ + "total": 1, + "sample_ids": [ 10002 ], "metadata": { @@ -203,8 +203,8 @@ "status": 200, "response": { "query": "gender = \"M\" AND status = \"active\" AND flow = \"\" AND history != \"Pick a Number\" AND last_seen_on > \"07-04-2018\"", - "count": 1, - "sample": [ + "total": 1, + "sample_ids": [ 10003 ], "metadata": { From 8b99efdb04133e696d9d9081c539eb157b39aa94 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 25 Apr 2022 11:43:44 -0500 Subject: [PATCH 49/97] Update CHANGELOG.md for v7.3.10 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 772036bc2..7afa13172 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.10 +---------- + * Changes to preview_start endpoint - 1) rename count to total to match other search endpoints, 2) add +query inspection metadata to preview_start endpoint response 3) switch to UUIDs for contacts and groups + v7.3.9 ---------- * Move search into its own package and add more tests From d4ce6d487c1375b09173ba696cbe8a8aeb9e095b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 25 Apr 2022 17:23:05 -0500 Subject: [PATCH 50/97] Update to latest goflow --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0ba683103..6b974857c 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.18.0 - github.com/nyaruka/goflow v0.158.0 + github.com/nyaruka/goflow v0.158.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index 3fe6e046f..5808ca140 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDY github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.18.0 h1:pRSV63w449FVHrjeXJNNIyoD0k47ruqPq3fROuHBjD0= github.com/nyaruka/gocommon v1.18.0/go.mod h1:+jVWR2FB6XTqFz7fjvVIZMFwp2B6uoaCk7NVLGnfPFM= -github.com/nyaruka/goflow v0.158.0 h1:LQbZBUnW6AiAm3WB56pEEOPUfwggDxkluh5zjovfLf8= -github.com/nyaruka/goflow v0.158.0/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= +github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= +github.com/nyaruka/goflow v0.158.1/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 0a4807df01f199ff32040e9b428fbdaf1a485784 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 26 Apr 2022 17:21:29 -0500 Subject: [PATCH 51/97] Update test database --- mailroom_test.dump | Bin 1894543 -> 1894510 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index 59bdd8828cd6a5cf7f9a4397dfd572b0cedea379..d62d2465c842307edd6148ef2caf2e6e3412cefa 100644 GIT binary patch delta 67071 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 K6zZ4U=Nz+=2=Mj* delta 67087 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 From eef24e5f2dd30c9a99110d958612e16551724ee0 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 26 Apr 2022 18:39:37 -0500 Subject: [PATCH 52/97] Rework flow/preview_start endpoint to take a number of days since last seen on --- core/search/queries.go | 12 ++--- core/search/queries_test.go | 6 +-- web/flow/start.go | 36 +++++++------ web/flow/testdata/preview_start.json | 79 ++++++++++++++++------------ 4 files changed, 73 insertions(+), 60 deletions(-) diff --git a/core/search/queries.go b/core/search/queries.go index 35ba64fc5..52fb1d956 100644 --- a/core/search/queries.go +++ b/core/search/queries.go @@ -14,10 +14,10 @@ import ( // Exclusions are preset exclusion conditions type Exclusions struct { - NonActive bool `json:"non_active"` // contacts who are blocked, stopped or archived - InAFlow bool `json:"in_a_flow"` // contacts who are currently in a flow (including this one) - StartedPreviously bool `json:"started_previously"` // contacts who have been in this flow in the last 90 days - NotSeenRecently bool `json:"not_seen_recently"` // contacts who have not been seen for more than 90 days + NonActive bool `json:"non_active"` // contacts who are blocked, stopped or archived + InAFlow bool `json:"in_a_flow"` // contacts who are currently in a flow (including this one) + StartedPreviously bool `json:"started_previously"` // contacts who have been in this flow in the last 90 days + NotSeenSinceDays int `json:"not_seen_since_days"` // contacts who have not been seen for more than this number of days } // BuildStartQuery builds a start query for the given flow and start options @@ -51,8 +51,8 @@ func BuildStartQuery(env envs.Environment, flow *models.Flow, groups []*models.G if excs.StartedPreviously { exclusions = append(exclusions, fmt.Sprintf("history != \"%s\"", flow.Name())) } - if excs.NotSeenRecently { - seenSince := dates.Now().Add(-time.Hour * 24 * 90) + if excs.NotSeenSinceDays > 0 { + seenSince := dates.Now().Add(-time.Hour * time.Duration(24*excs.NotSeenSinceDays)) exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(env, seenSince))) } diff --git a/core/search/queries_test.go b/core/search/queries_test.go index a068d9080..d30f9b000 100644 --- a/core/search/queries_test.go +++ b/core/search/queries_test.go @@ -51,7 +51,7 @@ func TestBuildStartQuery(t *testing.T) { NonActive: true, InAFlow: true, StartedPreviously: true, - NotSeenRecently: true, + NotSeenSinceDays: 90, }, expected: `(group = "Doctors" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, }, @@ -73,9 +73,9 @@ func TestBuildStartQuery(t *testing.T) { NonActive: true, InAFlow: true, StartedPreviously: true, - NotSeenRecently: true, + NotSeenSinceDays: 30, }, - expected: `gender = M AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, + expected: `gender = M AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 21-03-2022`, }, } diff --git a/web/flow/start.go b/web/flow/start.go index adc7bf15e..300d20132 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -25,11 +25,13 @@ func init() { // { // "org_id": 1, // "flow_id": 2, -// "group_uuids": ["5fa925e4-edd8-4e2a-ab24-b3dbb5932ddd", "2912b95f-5b89-4d39-a2a8-5292602f357f"], -// "contact_uuids": ["e5bb9e6f-7703-4ba1-afba-0b12791de38b"], -// "urns": ["tel:+1234567890"], -// "user_query": "", -// "exclusions": { +// "include": { +// "group_uuids": ["5fa925e4-edd8-4e2a-ab24-b3dbb5932ddd", "2912b95f-5b89-4d39-a2a8-5292602f357f"], +// "contact_uuids": ["e5bb9e6f-7703-4ba1-afba-0b12791de38b"], +// "urns": ["tel:+1234567890"], +// "user_query": "" +// }, +// "exclude": { // "non_active": false, // "in_a_flow": false, // "started_previously": true, @@ -51,14 +53,16 @@ func init() { // } // type previewStartRequest struct { - OrgID models.OrgID `json:"org_id" validate:"required"` - FlowID models.FlowID `json:"flow_id" validate:"required"` - GroupUUIDs []assets.GroupUUID `json:"group_uuids"` - ContactUUIDs []flows.ContactUUID `json:"contact_uuids"` - URNs []urns.URN `json:"urns"` - Query string `json:"query"` - Exclusions search.Exclusions `json:"exclusions"` - SampleSize int `json:"sample_size" validate:"required"` + OrgID models.OrgID `json:"org_id" validate:"required"` + FlowID models.FlowID `json:"flow_id" validate:"required"` + Include struct { + GroupUUIDs []assets.GroupUUID `json:"group_uuids"` + ContactUUIDs []flows.ContactUUID `json:"contact_uuids"` + URNs []urns.URN `json:"urns"` + Query string `json:"query"` + } `json:"include" validate:"required"` + Exclude search.Exclusions `json:"exclude"` + SampleSize int `json:"sample_size" validate:"required"` } type previewStartResponse struct { @@ -84,15 +88,15 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques return nil, http.StatusInternalServerError, errors.Wrapf(err, "unable to load flow") } - groups := make([]*models.Group, 0, len(request.GroupUUIDs)) - for _, groupUUID := range request.GroupUUIDs { + groups := make([]*models.Group, 0, len(request.Include.GroupUUIDs)) + for _, groupUUID := range request.Include.GroupUUIDs { g := oa.GroupByUUID(groupUUID) if g != nil { groups = append(groups, g) } } - query := search.BuildStartQuery(oa.Env(), flow, groups, request.ContactUUIDs, request.URNs, request.Query, request.Exclusions) + query := search.BuildStartQuery(oa.Env(), flow, groups, request.Include.ContactUUIDs, request.Include.URNs, request.Include.Query, request.Exclude) if query == "" { return &previewStartResponse{SampleIDs: []models.ContactID{}}, http.StatusOK, nil } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 7ecd305ad..95b711618 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -25,6 +25,7 @@ "body": { "org_id": 1, "flow_id": 10001, + "include": {}, "sample_size": 3 }, "status": 200, @@ -41,19 +42,21 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_uuids": [ - "c153e265-f7c9-4539-9dbc-9b358714b638", - "5e9d8fab-5e7e-4f51-b533-261af5dea70d" - ], - "contact_uuids": [ - "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", - "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" - ], - "urns": [ - "tel:+1234567890", - "facebook:9876543210" - ], - "query": "", + "include": { + "group_uuids": [ + "c153e265-f7c9-4539-9dbc-9b358714b638", + "5e9d8fab-5e7e-4f51-b533-261af5dea70d" + ], + "contact_uuids": [ + "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", + "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" + ], + "urns": [ + "tel:+1234567890", + "facebook:9876543210" + ], + "query": "" + }, "sample_size": 3 }, "status": 200, @@ -94,10 +97,12 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_ids": [], - "contact_ids": [], - "urns": [], - "query": "gender = M", + "include": { + "group_ids": [], + "contact_ids": [], + "urns": [], + "query": "gender = M" + }, "sample_size": 3 }, "status": 200, @@ -128,24 +133,26 @@ "body": { "org_id": 1, "flow_id": 10001, - "group_uuids": [ - "c153e265-f7c9-4539-9dbc-9b358714b638", - "5e9d8fab-5e7e-4f51-b533-261af5dea70d" - ], - "contact_uuids": [ - "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", - "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" - ], - "urns": [ - "tel:+1234567890", - "facebook:9876543210" - ], - "query": "", - "exclusions": { + "include": { + "group_uuids": [ + "c153e265-f7c9-4539-9dbc-9b358714b638", + "5e9d8fab-5e7e-4f51-b533-261af5dea70d" + ], + "contact_uuids": [ + "5a8345c1-514a-4d1b-aee5-6f39b2f53cfa", + "bd2aab59-5e28-4db4-b6e8-bbdb75fd7a0a" + ], + "urns": [ + "tel:+1234567890", + "facebook:9876543210" + ], + "query": "" + }, + "exclude": { "non_active": true, "in_a_flow": true, "started_previously": true, - "not_seen_recently": true + "not_seen_since_days": 90 }, "sample_size": 3 }, @@ -191,12 +198,14 @@ "body": { "org_id": 1, "flow_id": 10001, - "query": "gender = M", - "exclusions": { + "include": { + "query": "gender = M" + }, + "exclude": { "non_active": true, "in_a_flow": true, "started_previously": true, - "not_seen_recently": true + "not_seen_since_days": 90 }, "sample_size": 3 }, From f06fb724dddac31e519b0155ff830db14bf0cf44 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 27 Apr 2022 09:56:09 -0500 Subject: [PATCH 53/97] Update CHANGELOG.md for v7.3.11 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7afa13172..890973ad3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.11 +---------- + * Rework flow/preview_start endpoint to take a number of days since last seen on + * Update to latest goflow that has fix for whatsapp template selection + v7.3.10 ---------- * Changes to preview_start endpoint - 1) rename count to total to match other search endpoints, 2) add From 0eddbfd9f834e10a241400f27bdcd4eb6dcb89b7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 27 Apr 2022 17:10:11 -0500 Subject: [PATCH 54/97] Update to go 1.18 and use some generics --- .github/workflows/ci.yml | 2 +- core/models/contacts.go | 2 +- core/models/sessions.go | 2 +- core/models/utils.go | 32 ++------------------------------ go.mod | 2 +- go.sum | 8 -------- 6 files changed, 6 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index db1b4fd6f..8dc90630e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ name: CI on: [push, pull_request] env: - go-version: "1.17.x" + go-version: "1.18.x" postgis-version: "3.1" redis-version: "5.0.6" jobs: diff --git a/core/models/contacts.go b/core/models/contacts.go index 22ca0d506..f29507e47 100644 --- a/core/models/contacts.go +++ b/core/models/contacts.go @@ -1136,7 +1136,7 @@ func updateURNChannelPriority(urn urns.URN, channel *Channel, priority int) (urn // UpdateContactModifiedOn updates modified_on the passed in contacts func UpdateContactModifiedOn(ctx context.Context, db Queryer, contactIDs []ContactID) error { - for _, idBatch := range chunkContactIDs(contactIDs, 100) { + for _, idBatch := range chunkSlice(contactIDs, 100) { _, err := db.ExecContext(ctx, `UPDATE contacts_contact SET modified_on = NOW() WHERE id = ANY($1)`, pq.Array(idBatch)) if err != nil { return errors.Wrap(err, "error updating modified_on for contact batch") diff --git a/core/models/sessions.go b/core/models/sessions.go index d2975f1e6..e85a249b3 100644 --- a/core/models/sessions.go +++ b/core/models/sessions.go @@ -856,7 +856,7 @@ func ExitSessions(ctx context.Context, db *sqlx.DB, sessionIDs []SessionID, stat } // split into batches and exit each batch in a transaction - for _, idBatch := range chunkSessionIDs(sessionIDs, 100) { + for _, idBatch := range chunkSlice(sessionIDs, 100) { tx, err := db.BeginTxx(ctx, nil) if err != nil { return errors.Wrapf(err, "error starting transaction to exit sessions") diff --git a/core/models/utils.go b/core/models/utils.go index 3a1a03e52..4f69ff72a 100644 --- a/core/models/utils.go +++ b/core/models/utils.go @@ -79,8 +79,8 @@ func BulkQueryBatches(ctx context.Context, label string, tx Queryer, sql string, return nil } -func chunkSlice(slice []interface{}, size int) [][]interface{} { - chunks := make([][]interface{}, 0, len(slice)/size+1) +func chunkSlice[T any](slice []T, size int) [][]T { + chunks := make([][]T, 0, len(slice)/size+1) for i := 0; i < len(slice); i += size { end := i + size @@ -91,31 +91,3 @@ func chunkSlice(slice []interface{}, size int) [][]interface{} { } return chunks } - -// chunks a slice of session IDs.. hurry up go generics -func chunkSessionIDs(ids []SessionID, size int) [][]SessionID { - chunks := make([][]SessionID, 0, len(ids)/size+1) - - for i := 0; i < len(ids); i += size { - end := i + size - if end > len(ids) { - end = len(ids) - } - chunks = append(chunks, ids[i:end]) - } - return chunks -} - -// chunks a slice of contact IDs.. hurry up go generics -func chunkContactIDs(ids []ContactID, size int) [][]ContactID { - chunks := make([][]ContactID, 0, len(ids)/size+1) - - for i := 0; i < len(ids); i += size { - end := i + size - if end > len(ids) { - end = len(ids) - } - chunks = append(chunks, ids[i:end]) - } - return chunks -} diff --git a/go.mod b/go.mod index 6b974857c..1cb2bdaaa 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/nyaruka/mailroom -go 1.17 +go 1.18 require ( github.com/Masterminds/semver v1.5.0 diff --git a/go.sum b/go.sum index 5808ca140..b597fb1fe 100644 --- a/go.sum +++ b/go.sum @@ -14,7 +14,6 @@ github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDw github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.34.31/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.20/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.40.56 h1:FM2yjR0UUYFzDTMx+mH9Vyw1k1EUUxsAFzk+BjkzANA= github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= @@ -134,7 +133,6 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.5.3/go.mod h1:2ZeBZF9yt20IaAJ4aC1ujojAsFhJBk2IuDvSl7KuQDw= github.com/nyaruka/gocommon v1.18.0 h1:pRSV63w449FVHrjeXJNNIyoD0k47ruqPq3fROuHBjD0= github.com/nyaruka/gocommon v1.18.0/go.mod h1:+jVWR2FB6XTqFz7fjvVIZMFwp2B6uoaCk7NVLGnfPFM= github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= @@ -145,7 +143,6 @@ github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d/go.mod h1:FGdPJVDTNqbRAD+2RvnK9YoO2HcEW7ogSMPzc90b638= github.com/nyaruka/null v1.2.0 h1:uEbkyy4Z+zPB2Pr3ryQh/0N2965I9kEsXq/cGpyJ7PA= github.com/nyaruka/null v1.2.0/go.mod h1:HSAFbLNOaEhHnoU0VCveCPz0GDtJ3GEtFWhvnBNkhPE= -github.com/nyaruka/phonenumbers v1.0.58/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= github.com/nyaruka/phonenumbers v1.0.71 h1:itkCGhxkQkHrJ6OyZSApdjQVlPmrWs88MF283pPvbFU= github.com/nyaruka/phonenumbers v1.0.71/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= github.com/nyaruka/redisx v0.2.1 h1:BavpQRCsK5xV2uxPdJJ26yVmjSo+q6bdjWqeNNf0s5w= @@ -206,7 +203,6 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -221,7 +217,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200925080053-05aa5d4ee321/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -239,7 +234,6 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs= @@ -275,11 +269,9 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogR gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= -gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 3aa9745b9ea4323f9b5ce56c9ab292428a09c7a5 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 27 Apr 2022 19:52:33 -0500 Subject: [PATCH 55/97] Update CHANGELOG.md for v7.3.12 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 890973ad3..d00eb5071 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.12 +---------- + * Update to go 1.18 and use some generics + v7.3.11 ---------- * Rework flow/preview_start endpoint to take a number of days since last seen on From 25c145bf768b777f159ac5829a340af0dbb8c1cb Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 29 Apr 2022 14:45:37 -0500 Subject: [PATCH 56/97] Use new generic dbutil.BulkQuery --- core/hooks/commit_flow_changes.go | 2 +- core/hooks/commit_language_changes.go | 2 +- core/hooks/commit_name_changes.go | 2 +- core/models/groups.go | 22 ++-------------------- core/models/http_logs.go | 11 +---------- core/models/labels.go | 12 ++---------- core/models/notifications.go | 7 +------ core/models/resthooks.go | 13 ++----------- core/models/starts.go | 2 +- core/models/utils.go | 2 +- go.mod | 2 +- go.sum | 4 ++-- 12 files changed, 16 insertions(+), 65 deletions(-) diff --git a/core/hooks/commit_flow_changes.go b/core/hooks/commit_flow_changes.go index a4335e4d2..5bf12ea28 100644 --- a/core/hooks/commit_flow_changes.go +++ b/core/hooks/commit_flow_changes.go @@ -16,7 +16,7 @@ type commitFlowChangesHook struct{} // Apply commits our contact current_flow changes as a bulk update for the passed in map of scene func (h *commitFlowChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scenes map[*models.Scene][]interface{}) error { // build up our list of pairs of contact id and current flow id - updates := make([]interface{}, 0, len(scenes)) + updates := make([]*currentFlowUpdate, 0, len(scenes)) for s, evts := range scenes { // there is only ever one of these events per scene flowID := evts[len(evts)-1].(models.FlowID) diff --git a/core/hooks/commit_language_changes.go b/core/hooks/commit_language_changes.go index d73aead30..23c8ab820 100644 --- a/core/hooks/commit_language_changes.go +++ b/core/hooks/commit_language_changes.go @@ -18,7 +18,7 @@ type commitLanguageChangesHook struct{} // Apply applies our contact language change before our commit func (h *commitLanguageChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scenes map[*models.Scene][]interface{}) error { // build up our list of pairs of contact id and language name - updates := make([]interface{}, 0, len(scenes)) + updates := make([]*languageUpdate, 0, len(scenes)) for s, e := range scenes { // we only care about the last name change event := e[len(e)-1].(*events.ContactLanguageChangedEvent) diff --git a/core/hooks/commit_name_changes.go b/core/hooks/commit_name_changes.go index 2804bf6b2..dafc0cba9 100644 --- a/core/hooks/commit_name_changes.go +++ b/core/hooks/commit_name_changes.go @@ -19,7 +19,7 @@ type commitNameChangesHook struct{} // Apply commits our contact name changes as a bulk update for the passed in map of scene func (h *commitNameChangesHook) Apply(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa *models.OrgAssets, scenes map[*models.Scene][]interface{}) error { // build up our list of pairs of contact id and contact name - updates := make([]interface{}, 0, len(scenes)) + updates := make([]*nameUpdate, 0, len(scenes)) for s, e := range scenes { // we only care about the last name change event := e[len(e)-1].(*events.ContactNameChangedEvent) diff --git a/core/models/groups.go b/core/models/groups.go index d2371e4b5..dfbdf7fb2 100644 --- a/core/models/groups.go +++ b/core/models/groups.go @@ -100,16 +100,7 @@ SELECT ROW_TO_JSON(r) FROM ( // RemoveContactsFromGroups fires a bulk SQL query to remove all the contacts in the passed in groups func RemoveContactsFromGroups(ctx context.Context, tx Queryer, removals []*GroupRemove) error { - if len(removals) == 0 { - return nil - } - - // convert to list of interfaces - is := make([]interface{}, len(removals)) - for i := range removals { - is[i] = removals[i] - } - return BulkQuery(ctx, "removing contacts from groups", tx, removeContactsFromGroupsSQL, is) + return BulkQuery(ctx, "removing contacts from groups", tx, removeContactsFromGroupsSQL, removals) } // GroupRemove is our struct to track group removals @@ -136,16 +127,7 @@ IN ( // AddContactsToGroups fires a bulk SQL query to remove all the contacts in the passed in groups func AddContactsToGroups(ctx context.Context, tx Queryer, adds []*GroupAdd) error { - if len(adds) == 0 { - return nil - } - - // convert to list of interfaces - is := make([]interface{}, len(adds)) - for i := range adds { - is[i] = adds[i] - } - return BulkQuery(ctx, "adding contacts to groups", tx, addContactsToGroupsSQL, is) + return BulkQuery(ctx, "adding contacts to groups", tx, addContactsToGroupsSQL, adds) } // GroupAdd is our struct to track a final group additions diff --git a/core/models/http_logs.go b/core/models/http_logs.go index 96a9874be..c5f98c086 100644 --- a/core/models/http_logs.go +++ b/core/models/http_logs.go @@ -105,16 +105,7 @@ RETURNING id // InsertHTTPLogs inserts the passed in logs returning any errors encountered func InsertHTTPLogs(ctx context.Context, tx Queryer, logs []*HTTPLog) error { - if len(logs) == 0 { - return nil - } - - ls := make([]interface{}, len(logs)) - for i := range logs { - ls[i] = &logs[i] - } - - return BulkQuery(ctx, "inserted http logs", tx, insertHTTPLogsSQL, ls) + return BulkQuery(ctx, "inserted http logs", tx, insertHTTPLogsSQL, logs) } // MarshalJSON marshals into JSON. 0 values will become null diff --git a/core/models/labels.go b/core/models/labels.go index 9a1e45054..1472cda29 100644 --- a/core/models/labels.go +++ b/core/models/labels.go @@ -75,16 +75,8 @@ ORDER BY // AddMsgLabels inserts the passed in msg labels to our db func AddMsgLabels(ctx context.Context, tx *sqlx.Tx, adds []*MsgLabelAdd) error { - is := make([]interface{}, len(adds)) - for i := range adds { - is[i] = adds[i] - } - - err := BulkQuery(ctx, "inserting msg labels", tx, insertMsgLabelsSQL, is) - if err != nil { - return errors.Wrapf(err, "error inserting new msg labels") - } - return nil + err := BulkQuery(ctx, "inserting msg labels", tx, insertMsgLabelsSQL, adds) + return errors.Wrapf(err, "error inserting new msg labels") } const insertMsgLabelsSQL = ` diff --git a/core/models/notifications.go b/core/models/notifications.go index 90efc1ff2..ad0b7af51 100644 --- a/core/models/notifications.go +++ b/core/models/notifications.go @@ -140,12 +140,7 @@ INSERT INTO notifications_notification(org_id, notification_type, scope, user ON CONFLICT DO NOTHING` func insertNotifications(ctx context.Context, db Queryer, notifications []*Notification) error { - is := make([]interface{}, len(notifications)) - for i := range notifications { - is[i] = notifications[i] - } - - err := dbutil.BulkQuery(ctx, db, insertNotificationSQL, is) + err := dbutil.BulkQuery(ctx, db, insertNotificationSQL, notifications) return errors.Wrap(err, "error inserting notifications") } diff --git a/core/models/resthooks.go b/core/models/resthooks.go index 377b756e6..0035fa73a 100644 --- a/core/models/resthooks.go +++ b/core/models/resthooks.go @@ -86,17 +86,8 @@ ORDER BY // UnsubscribeResthooks unsubscribles all the resthooks passed in func UnsubscribeResthooks(ctx context.Context, tx *sqlx.Tx, unsubs []*ResthookUnsubscribe) error { - is := make([]interface{}, len(unsubs)) - for i := range unsubs { - is[i] = unsubs[i] - } - - err := BulkQuery(ctx, "unsubscribing resthooks", tx, sqlUnsubscribeResthooks, is) - if err != nil { - return errors.Wrapf(err, "error unsubscribing from resthooks") - } - - return nil + err := BulkQuery(ctx, "unsubscribing resthooks", tx, sqlUnsubscribeResthooks, unsubs) + return errors.Wrapf(err, "error unsubscribing from resthooks") } type ResthookUnsubscribe struct { diff --git a/core/models/starts.go b/core/models/starts.go index fd9c15091..311bbd76c 100644 --- a/core/models/starts.go +++ b/core/models/starts.go @@ -65,7 +65,7 @@ func MarkStartStarted(ctx context.Context, db Queryer, startID StartID, contactC ContactID ContactID `db:"contact_id"` } - args := make([]interface{}, len(createdContactIDs)) + args := make([]*startContact, len(createdContactIDs)) for i, id := range createdContactIDs { args[i] = &startContact{StartID: startID, ContactID: id} } diff --git a/core/models/utils.go b/core/models/utils.go index 4f69ff72a..d2cb5b987 100644 --- a/core/models/utils.go +++ b/core/models/utils.go @@ -44,7 +44,7 @@ func Exec(ctx context.Context, label string, tx Queryer, sql string, args ...int } // BulkQuery runs the given query as a bulk operation -func BulkQuery(ctx context.Context, label string, tx Queryer, sql string, structs []interface{}) error { +func BulkQuery[T any](ctx context.Context, label string, tx Queryer, sql string, structs []T) error { // no values, nothing to do if len(structs) == 0 { return nil diff --git a/go.mod b/go.mod index 1cb2bdaaa..ccaf98981 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.18.0 + github.com/nyaruka/gocommon v1.19.0 github.com/nyaruka/goflow v0.158.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d diff --git a/go.sum b/go.sum index b597fb1fe..ae9e7a45c 100644 --- a/go.sum +++ b/go.sum @@ -133,8 +133,8 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.18.0 h1:pRSV63w449FVHrjeXJNNIyoD0k47ruqPq3fROuHBjD0= -github.com/nyaruka/gocommon v1.18.0/go.mod h1:+jVWR2FB6XTqFz7fjvVIZMFwp2B6uoaCk7NVLGnfPFM= +github.com/nyaruka/gocommon v1.19.0 h1:efHI6RomBX9/Wy3SrWwkJQIHWNHHY9CYKi6Opog8I6A= +github.com/nyaruka/gocommon v1.19.0/go.mod h1:9BN+4gP7HVm6s8mXMU8tvhp293EXPSwIVaMG8HHUJ0E= github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= github.com/nyaruka/goflow v0.158.1/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= From a44fee8a0f700eb092fd7ce299a4ac366e89628e Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 2 May 2022 11:59:20 -0500 Subject: [PATCH 57/97] Update to latest gocommon, phonenumbers, jsonparser --- go.mod | 22 +++++++++++----------- go.sum | 46 +++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index ccaf98981..4302715e2 100644 --- a/go.mod +++ b/go.mod @@ -6,20 +6,17 @@ require ( github.com/Masterminds/semver v1.5.0 github.com/apex/log v1.1.4 github.com/aws/aws-sdk-go v1.40.56 - github.com/buger/jsonparser v1.0.0 - github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect + github.com/buger/jsonparser v1.1.1 github.com/edganiukov/fcm v0.4.0 - github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d // indirect github.com/go-chi/chi v4.1.2+incompatible github.com/golang-jwt/jwt v3.2.2+incompatible - github.com/golang/protobuf v1.4.0 + github.com/golang/protobuf v1.5.2 github.com/gomodule/redigo v1.8.8 github.com/gorilla/schema v1.1.0 github.com/jmoiron/sqlx v1.3.4 - github.com/kylelemons/godebug v1.1.0 // indirect github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.19.0 + github.com/nyaruka/gocommon v1.19.1 github.com/nyaruka/goflow v0.158.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d @@ -30,18 +27,20 @@ require ( github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.2.0 github.com/prometheus/common v0.9.1 - github.com/shopspring/decimal v1.2.0 + github.com/shopspring/decimal v1.3.1 github.com/sirupsen/logrus v1.5.0 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.7.1 gopkg.in/go-playground/validator.v9 v9.31.0 ) require ( github.com/antlr/antlr4 v0.0.0-20200701161529-3d9351f61e0f // indirect github.com/blevesearch/segment v0.9.0 // indirect + github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/structs v1.0.0 // indirect github.com/gabriel-vasile/mimetype v1.4.0 // indirect + github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d // indirect github.com/go-mail/mail v2.3.1+incompatible // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect @@ -49,18 +48,19 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.1 // indirect - github.com/nyaruka/phonenumbers v1.0.71 // indirect + github.com/nyaruka/phonenumbers v1.0.75 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect - golang.org/x/text v0.3.6 // indirect - google.golang.org/protobuf v1.21.0 // indirect + golang.org/x/text v0.3.7 // indirect + google.golang.org/protobuf v1.28.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect ) diff --git a/go.sum b/go.sum index ae9e7a45c..8fdc07e0c 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= -github.com/buger/jsonparser v1.0.0 h1:etJTGF5ESxjI0Ic2UaLQs2LQQpa8G9ykQScukbh4L8A= -github.com/buger/jsonparser v1.0.0/go.mod h1:tgcrVJ81GPSF0mz+0nu1Xaz0fazGPrmmJfJtxjbHhUQ= +github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -68,19 +68,15 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= @@ -133,8 +129,8 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.19.0 h1:efHI6RomBX9/Wy3SrWwkJQIHWNHHY9CYKi6Opog8I6A= -github.com/nyaruka/gocommon v1.19.0/go.mod h1:9BN+4gP7HVm6s8mXMU8tvhp293EXPSwIVaMG8HHUJ0E= +github.com/nyaruka/gocommon v1.19.1 h1:miVSFCqSEe1pKAID/PWqwRBtdvPnw6kQZC/Bz9tYVgQ= +github.com/nyaruka/gocommon v1.19.1/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= github.com/nyaruka/goflow v0.158.1/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= @@ -143,8 +139,8 @@ github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d/go.mod h1:FGdPJVDTNqbRAD+2RvnK9YoO2HcEW7ogSMPzc90b638= github.com/nyaruka/null v1.2.0 h1:uEbkyy4Z+zPB2Pr3ryQh/0N2965I9kEsXq/cGpyJ7PA= github.com/nyaruka/null v1.2.0/go.mod h1:HSAFbLNOaEhHnoU0VCveCPz0GDtJ3GEtFWhvnBNkhPE= -github.com/nyaruka/phonenumbers v1.0.71 h1:itkCGhxkQkHrJ6OyZSApdjQVlPmrWs88MF283pPvbFU= -github.com/nyaruka/phonenumbers v1.0.71/go.mod h1:sDaTZ/KPX5f8qyV9qN+hIm+4ZBARJrupC6LuhshJq1U= +github.com/nyaruka/phonenumbers v1.0.75 h1:OCwKXSjTi6IzuI4gVi8zfY+0s60DQUC6ks8Ll4j0eyU= +github.com/nyaruka/phonenumbers v1.0.75/go.mod h1:cGaEsOrLjIL0iKGqJR5Rfywy86dSkbApEpXuM9KySNA= github.com/nyaruka/redisx v0.2.1 h1:BavpQRCsK5xV2uxPdJJ26yVmjSo+q6bdjWqeNNf0s5w= github.com/nyaruka/redisx v0.2.1/go.mod h1:cdbAm4y/+oFWu7qFzH2ERPeqRXJC2CtgRhwcBacM4Oc= github.com/olivere/elastic/v7 v7.0.22 h1:esBA6JJwvYgfms0EVlH7Z+9J4oQ/WUADF2y/nCNDw7s= @@ -175,8 +171,8 @@ github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= @@ -193,8 +189,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= @@ -241,8 +238,9 @@ golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -255,12 +253,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= From a1abeb47888c2044ea51e58695a22fe2db32d6a5 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 9 May 2022 11:37:11 -0500 Subject: [PATCH 58/97] Update test database --- core/models/assets_test.go | 11 ++--------- mailroom_test.dump | Bin 1894510 -> 1912740 bytes 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/core/models/assets_test.go b/core/models/assets_test.go index 9d3321734..6d6d95d3e 100644 --- a/core/models/assets_test.go +++ b/core/models/assets_test.go @@ -15,15 +15,9 @@ import ( ) func TestAssets(t *testing.T) { - ctx, rt, db, _ := testsuite.Get() - - defer testsuite.Reset(testsuite.ResetData) + ctx, rt, _, _ := testsuite.Get() - // create new flow with same name as an existing flow - testdata.InsertFlow(db, testdata.Org1, []byte(`{ - "uuid": "fd7d16dd-3a38-4351-aea6-7a80acb41dd9", - "name": "Pick a Number" - }`)) + defer models.FlushCache() oa, err := models.GetOrgAssets(ctx, rt, testdata.Org1.ID) require.NoError(t, err) @@ -42,7 +36,6 @@ func TestAssets(t *testing.T) { flow, err = oa.FlowByName("PICK A NUMBER") // from db assert.NoError(t, err) - assert.Equal(t, assets.FlowUUID("fd7d16dd-3a38-4351-aea6-7a80acb41dd9"), flow.UUID()) // new flow as newer saved_on assert.Equal(t, "Pick a Number", flow.Name()) flow, err = oa.FlowByName("pick a number") // from cache diff --git a/mailroom_test.dump b/mailroom_test.dump index d62d2465c842307edd6148ef2caf2e6e3412cefa..0bb2895431d592ca731af7f1ad2723a942075dea 100644 GIT binary patch delta 105905 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 delta 99029 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 N9FXN7S&m7<^*?c3f%*Ud From 114e5102ff1477dabec2ae10643d8f25b6848e67 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 9 May 2022 16:01:22 -0500 Subject: [PATCH 59/97] Record ticket daily counts when opening tickets --- core/handlers/ticket_opened_test.go | 4 ++- core/hooks/insert_tickets.go | 2 +- core/models/tickets.go | 43 +++++++++++++++++++++++++++-- core/models/tickets_test.go | 7 ++++- go.mod | 2 +- go.sum | 4 +-- services/tickets/utils_test.go | 7 ++--- testsuite/testsuite.go | 1 + 8 files changed, 58 insertions(+), 12 deletions(-) diff --git a/core/handlers/ticket_opened_test.go b/core/handlers/ticket_opened_test.go index 376c79f93..da57129c9 100644 --- a/core/handlers/ticket_opened_test.go +++ b/core/handlers/ticket_opened_test.go @@ -44,9 +44,11 @@ func TestTicketOpened(t *testing.T) { }, })) + oa := testdata.Org1.Load(rt) + // an existing ticket cathyTicket := models.NewTicket(flows.TicketUUID(uuids.New()), testdata.Org1.ID, testdata.Cathy.ID, testdata.Mailgun.ID, "748363", testdata.DefaultTopic.ID, "Who?", models.NilUserID, nil) - err := models.InsertTickets(ctx, db, []*models.Ticket{cathyTicket}) + err := models.InsertTickets(ctx, db, oa, []*models.Ticket{cathyTicket}) require.NoError(t, err) tcs := []handlers.TestCase{ diff --git a/core/hooks/insert_tickets.go b/core/hooks/insert_tickets.go index 3acf2606b..ee93baf5e 100644 --- a/core/hooks/insert_tickets.go +++ b/core/hooks/insert_tickets.go @@ -27,7 +27,7 @@ func (h *insertTicketsHook) Apply(ctx context.Context, rt *runtime.Runtime, tx * } // insert the tickets - err := models.InsertTickets(ctx, tx, tickets) + err := models.InsertTickets(ctx, tx, oa, tickets) if err != nil { return errors.Wrapf(err, "error inserting tickets") } diff --git a/core/models/tickets.go b/core/models/tickets.go index b75a81a6f..db6771da5 100644 --- a/core/models/tickets.go +++ b/core/models/tickets.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "database/sql/driver" + "fmt" "net/http" "time" @@ -51,10 +52,15 @@ func (i *TicketID) Scan(value interface{}) error { type TicketerID null.Int type TicketStatus string +type TicketDailyCountType string const ( TicketStatusOpen = TicketStatus("O") TicketStatusClosed = TicketStatus("C") + + TicketDailyCountOpening = TicketDailyCountType("O") + TicketDailyCountAssignment = TicketDailyCountType("A") + TicketDailyCountReply = TicketDailyCountType("R") ) // Register a ticket service factory with the engine @@ -334,7 +340,7 @@ RETURNING ` // InsertTickets inserts the passed in tickets returning any errors encountered -func InsertTickets(ctx context.Context, tx Queryer, tickets []*Ticket) error { +func InsertTickets(ctx context.Context, tx Queryer, oa *OrgAssets, tickets []*Ticket) error { if len(tickets) == 0 { return nil } @@ -344,7 +350,40 @@ func InsertTickets(ctx context.Context, tx Queryer, tickets []*Ticket) error { ts[i] = &tickets[i].t } - return BulkQuery(ctx, "inserted tickets", tx, sqlInsertTicket, ts) + if err := BulkQuery(ctx, "inserted tickets", tx, sqlInsertTicket, ts); err != nil { + return err + } + + return insertTicketDailyCounts(ctx, tx, TicketDailyCountOpening, oa.Org().Timezone(), map[string]int{ + fmt.Sprintf("o:%d", oa.OrgID()): len(tickets), + }) +} + +const sqlInsertTicketDailyCount = ` +INSERT INTO tickets_ticketdailycount(count_type, scope, count, day, is_squashed) + VALUES(:count_type, :scope, :count, :day, FALSE)` + +func insertTicketDailyCounts(ctx context.Context, tx Queryer, countType TicketDailyCountType, tz *time.Location, scopeCounts map[string]int) error { + type dailyCount struct { + CountType TicketDailyCountType `db:"count_type"` + Scope string `db:"scope"` + Count int `db:"count"` + Day dates.Date `db:"day"` + } + + day := dates.ExtractDate(dates.Now().In(tz)) + + counts := make([]*dailyCount, 0, len(scopeCounts)) + for scope, count := range scopeCounts { + counts = append(counts, &dailyCount{ + CountType: countType, + Scope: scope, + Count: count, + Day: day, + }) + } + + return BulkQuery(ctx, "inserted ticket daily counts", tx, sqlInsertTicketDailyCount, counts) } // UpdateTicketExternalID updates the external ID of the given ticket diff --git a/core/models/tickets_test.go b/core/models/tickets_test.go index c541de906..f0fd516f9 100644 --- a/core/models/tickets_test.go +++ b/core/models/tickets_test.go @@ -62,6 +62,8 @@ func TestTickets(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) + oa := testdata.Org1.Load(rt) + ticket1 := models.NewTicket( "2ef57efc-d85f-4291-b330-e4afe68af5fe", testdata.Org1.ID, @@ -108,12 +110,15 @@ func TestTickets(t *testing.T) { assert.Equal(t, testdata.Admin.ID, ticket1.AssigneeID()) assert.Equal(t, "", ticket1.Config("xyz")) - err := models.InsertTickets(ctx, db, []*models.Ticket{ticket1, ticket2, ticket3}) + err := models.InsertTickets(ctx, db, oa, []*models.Ticket{ticket1, ticket2, ticket3}) assert.NoError(t, err) // check all tickets were created assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticket WHERE status = 'O' AND closed_on IS NULL`).Returns(3) + // check the opened count was added + assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'O' AND scope = CONCAT('o:', $1::text)`, testdata.Org1.ID).Returns(3) + // can lookup a ticket by UUID tk1, err := models.LookupTicketByUUID(ctx, db, "2ef57efc-d85f-4291-b330-e4afe68af5fe") assert.NoError(t, err) diff --git a/go.mod b/go.mod index 4302715e2..bcd30d22c 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/jmoiron/sqlx v1.3.4 github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.19.1 + github.com/nyaruka/gocommon v1.20.0 github.com/nyaruka/goflow v0.158.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d diff --git a/go.sum b/go.sum index 8fdc07e0c..28cd62b10 100644 --- a/go.sum +++ b/go.sum @@ -129,8 +129,8 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.19.1 h1:miVSFCqSEe1pKAID/PWqwRBtdvPnw6kQZC/Bz9tYVgQ= -github.com/nyaruka/gocommon v1.19.1/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= +github.com/nyaruka/gocommon v1.20.0 h1:qbxRsBBPvpfGbuBq08jlQGxa5t+UZX/YGV7+kR+/moM= +github.com/nyaruka/gocommon v1.20.0/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= github.com/nyaruka/goflow v0.158.1/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= diff --git a/services/tickets/utils_test.go b/services/tickets/utils_test.go index 4e082b960..fd8fd1e8b 100644 --- a/services/tickets/utils_test.go +++ b/services/tickets/utils_test.go @@ -158,6 +158,8 @@ func TestCloseTicket(t *testing.T) { }, })) + oa := testdata.Org1.Load(rt) + // create an open ticket ticket1 := models.NewTicket( "2ef57efc-d85f-4291-b330-e4afe68af5fe", @@ -172,15 +174,12 @@ func TestCloseTicket(t *testing.T) { "contact-display": "Cathy", }, ) - err := models.InsertTickets(ctx, db, []*models.Ticket{ticket1}) + err := models.InsertTickets(ctx, db, oa, []*models.Ticket{ticket1}) require.NoError(t, err) // create a close ticket trigger testdata.InsertTicketClosedTrigger(db, testdata.Org1, testdata.Favorites) - oa, err := models.GetOrgAssets(ctx, rt, testdata.Org1.ID) - require.NoError(t, err) - logger := &models.HTTPLogger{} err = tickets.Close(ctx, rt, oa, ticket1, true, logger) diff --git a/testsuite/testsuite.go b/testsuite/testsuite.go index b68055c84..493717efc 100644 --- a/testsuite/testsuite.go +++ b/testsuite/testsuite.go @@ -184,6 +184,7 @@ UPDATE contacts_contact SET current_flow_id = NULL; DELETE FROM notifications_notification; DELETE FROM notifications_incident; DELETE FROM request_logs_httplog; +DELETE FROM tickets_ticketdailycount; DELETE FROM tickets_ticketevent; DELETE FROM tickets_ticket; DELETE FROM triggers_trigger_contacts WHERE trigger_id >= 30000; From 3a362e6f24f09f89a4945febe31ad5988c2faf1f Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 9 May 2022 17:13:54 -0500 Subject: [PATCH 60/97] Record daily assignment counts when tickets are being assigned --- core/models/tickets.go | 43 ++++++++++++++++++++++++++++++---- core/models/tickets_test.go | 39 +++++++++++++++++++++++------- services/tickets/utils_test.go | 2 +- 3 files changed, 69 insertions(+), 15 deletions(-) diff --git a/core/models/tickets.go b/core/models/tickets.go index db6771da5..0467057c3 100644 --- a/core/models/tickets.go +++ b/core/models/tickets.go @@ -345,18 +345,30 @@ func InsertTickets(ctx context.Context, tx Queryer, oa *OrgAssets, tickets []*Ti return nil } + openingCounts := map[string]int{scopeOrg(oa): len(tickets)} // all new tickets are open + assignmentCounts := make(map[string]int) + ts := make([]interface{}, len(tickets)) - for i := range tickets { - ts[i] = &tickets[i].t + for i, t := range tickets { + ts[i] = &t.t + + if t.AssigneeID() != NilUserID { + assignmentCounts[scopeUser(oa, t.AssigneeID())]++ + } } if err := BulkQuery(ctx, "inserted tickets", tx, sqlInsertTicket, ts); err != nil { return err } - return insertTicketDailyCounts(ctx, tx, TicketDailyCountOpening, oa.Org().Timezone(), map[string]int{ - fmt.Sprintf("o:%d", oa.OrgID()): len(tickets), - }) + if err := insertTicketDailyCounts(ctx, tx, TicketDailyCountOpening, oa.Org().Timezone(), openingCounts); err != nil { + return err + } + if err := insertTicketDailyCounts(ctx, tx, TicketDailyCountAssignment, oa.Org().Timezone(), assignmentCounts); err != nil { + return err + } + + return nil } const sqlInsertTicketDailyCount = ` @@ -430,8 +442,16 @@ func TicketsAssign(ctx context.Context, db Queryer, oa *OrgAssets, userID UserID eventsByTicket := make(map[*Ticket]*TicketEvent, len(tickets)) now := dates.Now() + assignmentCounts := make(map[string]int) + for _, ticket := range tickets { if ticket.AssigneeID() != assigneeID { + + // if this is an initial assignment record count for user + if ticket.AssigneeID() == NilUserID && assigneeID != NilUserID { + assignmentCounts[scopeUser(oa, assigneeID)]++ + } + ids = append(ids, ticket.ID()) t := &ticket.t t.AssigneeID = assigneeID @@ -460,6 +480,11 @@ func TicketsAssign(ctx context.Context, db Queryer, oa *OrgAssets, userID UserID return nil, errors.Wrap(err, "error inserting notifications") } + err = insertTicketDailyCounts(ctx, db, TicketDailyCountAssignment, oa.Org().Timezone(), assignmentCounts) + if err != nil { + return nil, errors.Wrap(err, "error inserting assignment counts") + } + return eventsByTicket, nil } @@ -869,3 +894,11 @@ func (i TicketerID) Value() (driver.Value, error) { func (i *TicketerID) Scan(value interface{}) error { return null.ScanInt(value, (*null.Int)(i)) } + +func scopeOrg(oa *OrgAssets) string { + return fmt.Sprintf("o:%d", oa.OrgID()) +} + +func scopeUser(oa *OrgAssets, uid UserID) string { + return fmt.Sprintf("o:%d:u:%d", oa.OrgID(), uid) +} diff --git a/core/models/tickets_test.go b/core/models/tickets_test.go index f0fd516f9..fe90bfcf0 100644 --- a/core/models/tickets_test.go +++ b/core/models/tickets_test.go @@ -1,9 +1,11 @@ package models_test import ( + "fmt" "testing" "time" + "github.com/jmoiron/sqlx" "github.com/nyaruka/gocommon/dates" "github.com/nyaruka/gocommon/dbutil/assertdb" "github.com/nyaruka/gocommon/httpx" @@ -90,13 +92,13 @@ func TestTickets(t *testing.T) { ) ticket3 := models.NewTicket( "28ef8ddc-b221-42f3-aeae-ee406fc9d716", - testdata.Org2.ID, + testdata.Org1.ID, testdata.Alexandria.ID, testdata.Zendesk.ID, "EX6677", testdata.SupportTopic.ID, "Where are my pants?", - testdata.Org2Admin.ID, + testdata.Admin.ID, nil, ) @@ -116,8 +118,11 @@ func TestTickets(t *testing.T) { // check all tickets were created assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticket WHERE status = 'O' AND closed_on IS NULL`).Returns(3) - // check the opened count was added - assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'O' AND scope = CONCAT('o:', $1::text)`, testdata.Org1.ID).Returns(3) + // check counts were added + assertTicketDailyCount(t, db, models.TicketDailyCountOpening, fmt.Sprintf("o:%d", testdata.Org1.ID), 3) + assertTicketDailyCount(t, db, models.TicketDailyCountOpening, fmt.Sprintf("o:%d", testdata.Org2.ID), 0) + assertTicketDailyCount(t, db, models.TicketDailyCountAssignment, fmt.Sprintf("o:%d:u:%d", testdata.Org1.ID, testdata.Admin.ID), 2) + assertTicketDailyCount(t, db, models.TicketDailyCountAssignment, fmt.Sprintf("o:%d:u:%d", testdata.Org1.ID, testdata.Editor.ID), 0) // can lookup a ticket by UUID tk1, err := models.LookupTicketByUUID(ctx, db, "2ef57efc-d85f-4291-b330-e4afe68af5fe") @@ -196,22 +201,31 @@ func TestTicketsAssign(t *testing.T) { ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", nil) modelTicket2 := ticket2.Load(db) + // create ticket already assigned to a user + ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my glasses", "", testdata.Admin) + modelTicket3 := ticket3.Load(db) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) - evts, err := models.TicketsAssign(ctx, db, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2}, testdata.Agent.ID, "please handle these") + evts, err := models.TicketsAssign(ctx, db, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2, modelTicket3}, testdata.Agent.ID, "please handle these") require.NoError(t, err) - assert.Equal(t, 2, len(evts)) + assert.Equal(t, 3, len(evts)) assert.Equal(t, models.TicketEventTypeAssigned, evts[modelTicket1].EventType()) assert.Equal(t, models.TicketEventTypeAssigned, evts[modelTicket2].EventType()) + assert.Equal(t, models.TicketEventTypeAssigned, evts[modelTicket3].EventType()) // check tickets are now assigned assertdb.Query(t, db, `SELECT assignee_id FROM tickets_ticket WHERE id = $1`, ticket1.ID).Columns(map[string]interface{}{"assignee_id": int64(testdata.Agent.ID)}) assertdb.Query(t, db, `SELECT assignee_id FROM tickets_ticket WHERE id = $1`, ticket2.ID).Columns(map[string]interface{}{"assignee_id": int64(testdata.Agent.ID)}) + assertdb.Query(t, db, `SELECT assignee_id FROM tickets_ticket WHERE id = $1`, ticket3.ID).Columns(map[string]interface{}{"assignee_id": int64(testdata.Agent.ID)}) - // and there are new assigned events - assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticketevent WHERE event_type = 'A' AND note = 'please handle these'`).Returns(2) - + // and there are new assigned events with notifications + assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticketevent WHERE event_type = 'A' AND note = 'please handle these'`).Returns(3) assertdb.Query(t, db, `SELECT count(*) FROM notifications_notification WHERE user_id = $1 AND notification_type = 'tickets:activity'`, testdata.Agent.ID).Returns(1) + + // and daily counts (we only count first assignments of a ticket) + assertTicketDailyCount(t, db, models.TicketDailyCountAssignment, fmt.Sprintf("o:%d:u:%d", testdata.Org1.ID, testdata.Agent.ID), 2) + assertTicketDailyCount(t, db, models.TicketDailyCountAssignment, fmt.Sprintf("o:%d:u:%d", testdata.Org1.ID, testdata.Admin.ID), 0) } func TestTicketsAddNote(t *testing.T) { @@ -391,4 +405,11 @@ func TestReopenTickets(t *testing.T) { assert.Equal(t, 2, len(cathy.Groups().All())) assert.Equal(t, "Doctors", cathy.Groups().All()[0].Name()) assert.Equal(t, "Open Tickets", cathy.Groups().All()[1].Name()) + + // reopening doesn't change opening daily counts + assertTicketDailyCount(t, db, models.TicketDailyCountOpening, fmt.Sprintf("o:%d", testdata.Org1.ID), 0) +} + +func assertTicketDailyCount(t *testing.T, db *sqlx.DB, countType models.TicketDailyCountType, scope string, expected int) { + assertdb.Query(t, db, `SELECT COALESCE(SUM(count), 0) FROM tickets_ticketdailycount WHERE count_type = $1 AND scope = $2`, countType, scope).Returns(expected) } diff --git a/services/tickets/utils_test.go b/services/tickets/utils_test.go index fd8fd1e8b..2f77afed0 100644 --- a/services/tickets/utils_test.go +++ b/services/tickets/utils_test.go @@ -186,5 +186,5 @@ func TestCloseTicket(t *testing.T) { require.NoError(t, err) testsuite.AssertContactTasks(t, 1, testdata.Cathy.ID, - []string{`{"type":"ticket_closed","org_id":1,"task":{"id":1,"org_id":1,"contact_id":10000,"ticket_id":1,"event_type":"C","created_on":"2021-06-08T16:40:32Z"},"queued_on":"2021-06-08T16:40:35Z"}`}) + []string{`{"type":"ticket_closed","org_id":1,"task":{"id":1,"org_id":1,"contact_id":10000,"ticket_id":1,"event_type":"C","created_on":"2021-06-08T16:40:34Z"},"queued_on":"2021-06-08T16:40:37Z"}`}) } From cb5465e59b6b6effcc18ae3976ad5e70200c2361 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 10 May 2022 11:35:33 -0500 Subject: [PATCH 61/97] Load user assets with their teams and record reply daily counts for org, user and team --- core/models/msgs.go | 39 ++++++++++++++++------ core/models/msgs_test.go | 1 + core/models/teams.go | 43 +++++++++++++++++++++++++ core/models/tickets.go | 18 ++++++++--- core/models/users.go | 11 ++++++- core/models/users_test.go | 15 ++++++--- core/tasks/msgs/send_broadcast_test.go | 13 ++++++-- mailroom_test.dump | Bin 1912740 -> 1912254 bytes services/tickets/utils.go | 2 +- testsuite/testdata/constants.go | 3 ++ testsuite/testdata/tickets.go | 5 +++ 11 files changed, 127 insertions(+), 23 deletions(-) create mode 100644 core/models/teams.go diff --git a/core/models/msgs.go b/core/models/msgs.go index 87fbb225d..e148c3d56 100644 --- a/core/models/msgs.go +++ b/core/models/msgs.go @@ -697,22 +697,24 @@ type BroadcastTranslation struct { // Broadcast represents a broadcast that needs to be sent type Broadcast struct { b struct { - BroadcastID BroadcastID `json:"broadcast_id,omitempty" db:"id"` + BroadcastID BroadcastID `json:"broadcast_id,omitempty" db:"id"` Translations map[envs.Language]*BroadcastTranslation `json:"translations"` - Text hstore.Hstore ` db:"text"` + Text hstore.Hstore ` db:"text"` TemplateState TemplateState `json:"template_state"` - BaseLanguage envs.Language `json:"base_language" db:"base_language"` + BaseLanguage envs.Language `json:"base_language" db:"base_language"` URNs []urns.URN `json:"urns,omitempty"` ContactIDs []ContactID `json:"contact_ids,omitempty"` GroupIDs []GroupID `json:"group_ids,omitempty"` - OrgID OrgID `json:"org_id" db:"org_id"` - ParentID BroadcastID `json:"parent_id,omitempty" db:"parent_id"` - TicketID TicketID `json:"ticket_id,omitempty" db:"ticket_id"` + OrgID OrgID `json:"org_id" db:"org_id"` + CreatedByID UserID `json:"created_by_id,omitempty" db:"created_by_id"` + ParentID BroadcastID `json:"parent_id,omitempty" db:"parent_id"` + TicketID TicketID `json:"ticket_id,omitempty" db:"ticket_id"` } } func (b *Broadcast) ID() BroadcastID { return b.b.BroadcastID } func (b *Broadcast) OrgID() OrgID { return b.b.OrgID } +func (b *Broadcast) CreatedByID() UserID { return b.b.CreatedByID } func (b *Broadcast) ContactIDs() []ContactID { return b.b.ContactIDs } func (b *Broadcast) GroupIDs() []GroupID { return b.b.GroupIDs } func (b *Broadcast) URNs() []urns.URN { return b.b.URNs } @@ -727,7 +729,7 @@ func (b *Broadcast) UnmarshalJSON(data []byte) error { return json.Unmarshal(dat // NewBroadcast creates a new broadcast with the passed in parameters func NewBroadcast( orgID OrgID, id BroadcastID, translations map[envs.Language]*BroadcastTranslation, - state TemplateState, baseLanguage envs.Language, urns []urns.URN, contactIDs []ContactID, groupIDs []GroupID, ticketID TicketID) *Broadcast { + state TemplateState, baseLanguage envs.Language, urns []urns.URN, contactIDs []ContactID, groupIDs []GroupID, ticketID TicketID, createdByID UserID) *Broadcast { bcast := &Broadcast{} bcast.b.OrgID = orgID @@ -739,6 +741,7 @@ func NewBroadcast( bcast.b.ContactIDs = contactIDs bcast.b.GroupIDs = groupIDs bcast.b.TicketID = ticketID + bcast.b.CreatedByID = createdByID return bcast } @@ -755,8 +758,8 @@ func InsertChildBroadcast(ctx context.Context, db Queryer, parent *Broadcast) (* parent.b.ContactIDs, parent.b.GroupIDs, parent.b.TicketID, + parent.b.CreatedByID, ) - // populate our parent id child.b.ParentID = parent.ID() // populate text from our translations @@ -894,7 +897,7 @@ func NewBroadcastFromEvent(ctx context.Context, tx Queryer, oa *OrgAssets, event } } - return NewBroadcast(oa.OrgID(), NilBroadcastID, translations, TemplateStateEvaluated, event.BaseLanguage, event.URNs, contactIDs, groupIDs, NilTicketID), nil + return NewBroadcast(oa.OrgID(), NilBroadcastID, translations, TemplateStateEvaluated, event.BaseLanguage, event.URNs, contactIDs, groupIDs, NilTicketID, NilUserID), nil } func (b *Broadcast) CreateBatch(contactIDs []ContactID) *BroadcastBatch { @@ -904,6 +907,7 @@ func (b *Broadcast) CreateBatch(contactIDs []ContactID) *BroadcastBatch { batch.b.Translations = b.b.Translations batch.b.TemplateState = b.b.TemplateState batch.b.OrgID = b.b.OrgID + batch.b.CreatedByID = b.b.CreatedByID batch.b.TicketID = b.b.TicketID batch.b.ContactIDs = contactIDs return batch @@ -920,6 +924,7 @@ type BroadcastBatch struct { ContactIDs []ContactID `json:"contact_ids,omitempty"` IsLast bool `json:"is_last"` OrgID OrgID `json:"org_id"` + CreatedByID UserID `json:"created_by_id"` TicketID TicketID `json:"ticket_id"` } } @@ -929,6 +934,7 @@ func (b *BroadcastBatch) ContactIDs() []ContactID { return b.b.Conta func (b *BroadcastBatch) URNs() map[ContactID]urns.URN { return b.b.URNs } func (b *BroadcastBatch) SetURNs(urns map[ContactID]urns.URN) { b.b.URNs = urns } func (b *BroadcastBatch) OrgID() OrgID { return b.b.OrgID } +func (b *BroadcastBatch) CreatedByID() UserID { return b.b.CreatedByID } func (b *BroadcastBatch) TicketID() TicketID { return b.b.TicketID } func (b *BroadcastBatch) Translations() map[envs.Language]*BroadcastTranslation { return b.b.Translations @@ -1146,6 +1152,21 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs if err != nil { return nil, errors.Wrapf(err, "error updating broadcast ticket") } + + // record reply counts for org, user and team + replyCounts := map[string]int{scopeOrg(oa): 1} + + if bcast.CreatedByID() != NilUserID { + user := oa.UserByID(bcast.CreatedByID()) + if user != nil { + replyCounts[scopeUser(oa, user)] = 1 + if user.Team() != nil { + replyCounts[scopeTeam(user.Team())] = 1 + } + } + } + + insertTicketDailyCounts(ctx, rt.DB, TicketDailyCountReply, oa.Org().Timezone(), replyCounts) } return msgs, nil diff --git a/core/models/msgs_test.go b/core/models/msgs_test.go index 2ab317cd8..ace219b91 100644 --- a/core/models/msgs_test.go +++ b/core/models/msgs_test.go @@ -611,6 +611,7 @@ func TestNonPersistentBroadcasts(t *testing.T) { []models.ContactID{testdata.Alexandria.ID, testdata.Bob.ID, testdata.Cathy.ID}, []models.GroupID{testdata.DoctorsGroup.ID}, ticket.ID, + models.NilUserID, ) assert.Equal(t, models.NilBroadcastID, bcast.ID()) diff --git a/core/models/teams.go b/core/models/teams.go new file mode 100644 index 000000000..a6aeec210 --- /dev/null +++ b/core/models/teams.go @@ -0,0 +1,43 @@ +package models + +import ( + "database/sql/driver" + + "github.com/nyaruka/null" +) + +const ( + // NilTeamID is the id 0 considered as nil user id + NilTeamID = TeamID(0) +) + +// TeamID is our type for team ids, which can be null +type TeamID null.Int + +type TeamUUID string + +type Team struct { + ID TeamID `json:"id"` + UUID TeamUUID `json:"uuid"` + Name string `json:"name"` +} + +// MarshalJSON marshals into JSON. 0 values will become null +func (i TeamID) MarshalJSON() ([]byte, error) { + return null.Int(i).MarshalJSON() +} + +// UnmarshalJSON unmarshals from JSON. null values become 0 +func (i *TeamID) UnmarshalJSON(b []byte) error { + return null.UnmarshalInt(b, (*null.Int)(i)) +} + +// Value returns the db value, null is returned for 0 +func (i TeamID) Value() (driver.Value, error) { + return null.Int(i).Value() +} + +// Scan scans from the db value. null values become 0 +func (i *TeamID) Scan(value interface{}) error { + return null.ScanInt(value, (*null.Int)(i)) +} diff --git a/core/models/tickets.go b/core/models/tickets.go index 0467057c3..026c41ab1 100644 --- a/core/models/tickets.go +++ b/core/models/tickets.go @@ -353,7 +353,10 @@ func InsertTickets(ctx context.Context, tx Queryer, oa *OrgAssets, tickets []*Ti ts[i] = &t.t if t.AssigneeID() != NilUserID { - assignmentCounts[scopeUser(oa, t.AssigneeID())]++ + assignee := oa.UserByID(t.AssigneeID()) + if assignee != nil { + assignmentCounts[scopeUser(oa, assignee)]++ + } } } @@ -449,7 +452,10 @@ func TicketsAssign(ctx context.Context, db Queryer, oa *OrgAssets, userID UserID // if this is an initial assignment record count for user if ticket.AssigneeID() == NilUserID && assigneeID != NilUserID { - assignmentCounts[scopeUser(oa, assigneeID)]++ + assignee := oa.UserByID(assigneeID) + if assignee != nil { + assignmentCounts[scopeUser(oa, assignee)]++ + } } ids = append(ids, ticket.ID()) @@ -899,6 +905,10 @@ func scopeOrg(oa *OrgAssets) string { return fmt.Sprintf("o:%d", oa.OrgID()) } -func scopeUser(oa *OrgAssets, uid UserID) string { - return fmt.Sprintf("o:%d:u:%d", oa.OrgID(), uid) +func scopeTeam(t *Team) string { + return fmt.Sprintf("t:%d", t.ID) +} + +func scopeUser(oa *OrgAssets, u *User) string { + return fmt.Sprintf("o:%d:u:%d", oa.OrgID(), u.ID()) } diff --git a/core/models/users.go b/core/models/users.go index 551fc0442..121e50e2e 100644 --- a/core/models/users.go +++ b/core/models/users.go @@ -61,6 +61,7 @@ type User struct { FirstName string `json:"first_name"` LastName string `json:"last_name"` Role UserRole `json:"role"` + Team *Team `json:"team"` } } @@ -85,6 +86,11 @@ func (u *User) Name() string { return strings.Join(names, " ") } +// Team returns the user's ticketing team if any +func (u *User) Team() *Team { + return u.u.Team +} + var _ assets.User = (*User)(nil) const selectOrgUsersSQL = ` @@ -93,7 +99,8 @@ SELECT ROW_TO_JSON(r) FROM (SELECT u.email AS "email", u.first_name as "first_name", u.last_name as "last_name", - o.role AS "role" + o.role AS "role", + row_to_json(team_struct) AS team FROM auth_user u INNER JOIN ( @@ -107,6 +114,8 @@ INNER JOIN ( UNION SELECT user_id, 'S' AS "role" FROM orgs_org_surveyors WHERE org_id = $1 ) o ON o.user_id = u.id +LEFT JOIN orgs_usersettings s ON s.user_id = u.id +LEFT JOIN LATERAL (SELECT id, uuid, name FROM tickets_team WHERE tickets_team.id = s.team_id) AS team_struct ON True WHERE u.is_active = TRUE ORDER BY diff --git a/core/models/users_test.go b/core/models/users_test.go index 28103ba05..dee438067 100644 --- a/core/models/users_test.go +++ b/core/models/users_test.go @@ -19,17 +19,21 @@ func TestLoadUsers(t *testing.T) { users, err := oa.Users() require.NoError(t, err) + partners := &models.Team{testdata.Partners.ID, testdata.Partners.UUID, "Partners"} + office := &models.Team{testdata.Office.ID, testdata.Office.UUID, "Office"} + expectedUsers := []struct { id models.UserID email string name string role models.UserRole + team *models.Team }{ - {testdata.Admin.ID, testdata.Admin.Email, "Andy Admin", models.UserRoleAdministrator}, - {testdata.Agent.ID, testdata.Agent.Email, "Ann D'Agent", models.UserRoleAgent}, - {testdata.Editor.ID, testdata.Editor.Email, "Ed McEditor", models.UserRoleEditor}, - {testdata.Surveyor.ID, testdata.Surveyor.Email, "Steve Surveys", models.UserRoleSurveyor}, - {testdata.Viewer.ID, testdata.Viewer.Email, "Veronica Views", models.UserRoleViewer}, + {id: testdata.Admin.ID, email: testdata.Admin.Email, name: "Andy Admin", role: models.UserRoleAdministrator, team: office}, + {id: testdata.Agent.ID, email: testdata.Agent.Email, name: "Ann D'Agent", role: models.UserRoleAgent, team: partners}, + {id: testdata.Editor.ID, email: testdata.Editor.Email, name: "Ed McEditor", role: models.UserRoleEditor, team: office}, + {id: testdata.Surveyor.ID, email: testdata.Surveyor.Email, name: "Steve Surveys", role: models.UserRoleSurveyor, team: nil}, + {id: testdata.Viewer.ID, email: testdata.Viewer.Email, name: "Veronica Views", role: models.UserRoleViewer, team: nil}, } require.Equal(t, len(expectedUsers), len(users)) @@ -43,6 +47,7 @@ func TestLoadUsers(t *testing.T) { assert.Equal(t, expected.id, modelUser.ID()) assert.Equal(t, expected.email, modelUser.Email()) assert.Equal(t, expected.role, modelUser.Role()) + assert.Equal(t, expected.team, modelUser.Team()) assert.Equal(t, modelUser, oa.UserByID(expected.id)) assert.Equal(t, modelUser, oa.UserByEmail(expected.email)) diff --git a/core/tasks/msgs/send_broadcast_test.go b/core/tasks/msgs/send_broadcast_test.go index 448e423f4..cddefc88c 100644 --- a/core/tasks/msgs/send_broadcast_test.go +++ b/core/tasks/msgs/send_broadcast_test.go @@ -177,6 +177,7 @@ func TestBroadcastTask(t *testing.T) { ContactIDs []models.ContactID URNs []urns.URN TicketID models.TicketID + CreatedByID models.UserID Queue string BatchCount int MsgCount int @@ -190,7 +191,8 @@ func TestBroadcastTask(t *testing.T) { doctorsOnly, cathyOnly, nil, - ticket.ID, + models.NilTicketID, + testdata.Admin.ID, queue.BatchQueue, 2, 121, @@ -205,6 +207,7 @@ func TestBroadcastTask(t *testing.T) { cathyOnly, nil, models.NilTicketID, + models.NilUserID, queue.HandlerQueue, 1, 1, @@ -218,7 +221,8 @@ func TestBroadcastTask(t *testing.T) { nil, cathyOnly, nil, - models.NilTicketID, + ticket.ID, + testdata.Agent.ID, queue.HandlerQueue, 1, 1, @@ -231,7 +235,7 @@ func TestBroadcastTask(t *testing.T) { for i, tc := range tcs { // handle our start task - bcast := models.NewBroadcast(oa.OrgID(), tc.BroadcastID, tc.Translations, tc.TemplateState, tc.BaseLanguage, tc.URNs, tc.ContactIDs, tc.GroupIDs, tc.TicketID) + bcast := models.NewBroadcast(oa.OrgID(), tc.BroadcastID, tc.Translations, tc.TemplateState, tc.BaseLanguage, tc.URNs, tc.ContactIDs, tc.GroupIDs, tc.TicketID, tc.CreatedByID) err = msgs.CreateBroadcastBatches(ctx, rt, bcast) assert.NoError(t, err) @@ -277,4 +281,7 @@ func TestBroadcastTask(t *testing.T) { lastNow = time.Now() time.Sleep(10 * time.Millisecond) } + + assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'R' AND scope = CONCAT('o:', $1::text)`, testdata.Org1.ID).Returns(1) + assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'R' AND scope = CONCAT('o:', $1::text, ':u:', $2::text)`, testdata.Org1.ID, testdata.Agent.ID).Returns(1) } diff --git a/mailroom_test.dump b/mailroom_test.dump index 0bb2895431d592ca731af7f1ad2723a942075dea..7c1155cd6482011fb61f56e2ac1a24ce5d07053f 100644 GIT binary patch delta 83528 zcmZsEcYKw_@^|)WCpn>ng!B$1Kxn5IYEWs??V?D)MiYX73R16KDS@MmfIzTep#&qW zAk~5>EhwlcRk45qK}At1?{{~fljPpt%O8Bsvpc&xJ3BiwJ2Sg^_1J_h-%iLM(Brzk z16YF?BbG51gMUThzxv|8hT=cxy!@cG(!#G!k>#h7=Z$}abrwG&j6KP^$X`p?f_c9< zlMTSQJpoTltoRY|gae_FH?p6SD(}@AFv}ATgnBkQ!FLY-uMDV0P#nX%+>4~ z>gv$aBj1`QV*%(524fOvej3Ft(wW;U-Jo7}_hDp0v8^$k;u6!eB;lF6;JBuaQZ z)}$xmSwiLW+5a%rIv5iYtxx19Mb4XpY;;5e9kJPwk;9WJzwYpqrfR$~E-^%-3AvTeboSYWzL@Jo;k@TF zB0c&fR{l}^uEIR*uUvg?GhGrP9EkBmDz0rDIUaCUUhJM{Lj)^xdR?)9ha#)5O^N*4 zykTXJK1sU5FkD&Ezm=?ayIhs?2AcM7cjZer&b5DgD&4pAmZ-R0-k5+ur79yM@?CLa zB=e5!%BtJy*_FPS&Z4qpTKYS847VHmE5{5zFIOVya#!9vUITU+yeIWg#5_Z zo^Q z%849KO{$#s&=v*mcEuEmiZPF7R1Te7E|<{lcE_ZNKJpV|Q)KVKDP83HxZR%0DgW6K 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 delta 83533 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ΜsNtxR> zUMuTDdNXu}d_v=DNo;2|k)_fr3uA;;vAa=O0RkWcQ9`7k z+yHz3@dRA_quc(s>HU8y97y)xy7RyGWpa=P_{(4NYyXjNj~%gs<{K7UxYoFZ<2#om z9LhZXM50K$?rKh3!+`L8o~x#vmh4sUBYcZg!b0Cs8>b$dz7xvxmLRn|?ohPu$3n7;kd5yJ`M-8JT@y>v%uHh} zlFw}GqqP}s#p_Xn?M30Lbq`E}01FbJ3`fT_D8awM zR(1cfC4j;soqd;Mmt!9yO9{ea9Nu5<=(5JEqAudQ+c59Rg#vUX*S}^2IkJTX!iz$UqZ4_NVUkYS+2# zWfR+!6&gt-`NbWFa*RSTdY#e%YjvMP{mX{YTV43*PoHU!^65DsA1I(P zek}ieN&3{#VT$y(@cCPOf))V!e~PM^e@8Sxo51&f`xgCQ-(1I7(YjfH!c)Aw2zU;r zt@5CI21#0Z<=GM}9Ld#8a`oQ}Lj2u%28m1Gks0cF!fFFNU5j<$snQanwx;w?N;l?x z!FOGQz+{-SK&~5(NHi@1DZsDSJ*DVQ2swy0c*@y20jU^20E5xMqqv+ven>Y`nWV}7 z%gsGkGx-H5+qM-L`KvxTx$M1O*jQNo-L$c}b zJVz=TK)TKX;Zyb}nl~sv5W!R@l5KtEbnhFx($~}7fNUHX9u6FdUe(?CN*~UzI0=AO zO8ZwYSnkwTDut3x>Pp?WSj~Ge#>jRz`OmGbjRvPeEeW^XYFT?O?ZM?Bxq}lXyn

fw#ygR{n)_tW`+wrX;=L z77c#_R<_*_eZpF|2cW%K6HIknPl=*_!yR(eeq|Vg?t0=Jr`Z3kdi=m6{p|hFxktbC z%j`urInwageBSjmPcR>5!e%O}+)=5w-&8xS2ve&9x49#8MwfEL8?AMYFvP-Z5Y8YU zlP7jQz~AWfW^gSiC8E_-%XjER5;s5j0L)I z&(-YHEcP<#_KT?JLH6QiA?@T#|6bZd=AiNetY~_04*e)C0*4oIe=b{DjTO>D_i~-Q z9u|;!MiiRp7B*#_!&W%rRYG%JQt+D^^0`SP+k+T8?^dUYeVAsO} z4B65W6k`_N!4`XF!8-)hxP7CtLRlu2JJ(-9VtdEhbOj;~TwenPrC=cchU%L6!bd;Q z*_HZe^4fAX>_;X@lkJO7%So{ZQSJl3e7RruU2a@EHqD#A!tN9s0d|#kNZb!UiCF~= z7$`_8OM(Afsv5!8&#P7sPR6Y@>zyt{7vZDzDdrMIid1XNvMs_8a$zAiO-Z_dQ;@+?Q0T&`=)%b$z{${4u+w9+3y8v@!l^jx!a3{I jgoIE-b{RkvKo Date: Tue, 10 May 2022 16:51:14 -0500 Subject: [PATCH 62/97] Update test database --- mailroom_test.dump | Bin 1912254 -> 1912694 bytes testsuite/testdata/campaigns.go | 4 ++-- testsuite/testdata/channels.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index 7c1155cd6482011fb61f56e2ac1a24ce5d07053f..adb9853f1742d8cfb208751d28eb6d4d91ea27c5 100644 GIT binary patch delta 68204 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%0ACC7aNeYn$kP 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 delta 68048 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 diff --git a/testsuite/testdata/campaigns.go b/testsuite/testdata/campaigns.go index afa13668f..383380d17 100644 --- a/testsuite/testdata/campaigns.go +++ b/testsuite/testdata/campaigns.go @@ -22,8 +22,8 @@ func InsertCampaign(db *sqlx.DB, org *Org, name string, group *Group) *Campaign uuid := models.CampaignUUID(uuids.New()) var id models.CampaignID must(db.Get(&id, - `INSERT INTO campaigns_campaign(uuid, org_id, name, group_id, is_archived, is_active, created_on, modified_on, created_by_id, modified_by_id) - VALUES($1, $2, $3, $4, FALSE, TRUE, NOW(), NOW(), 1, 1) RETURNING id`, uuid, org.ID, name, group.ID, + `INSERT INTO campaigns_campaign(uuid, org_id, name, group_id, is_archived, is_system, is_active, created_on, modified_on, created_by_id, modified_by_id) + VALUES($1, $2, $3, $4, FALSE, FALSE, TRUE, NOW(), NOW(), 1, 1) RETURNING id`, uuid, org.ID, name, group.ID, )) return &Campaign{id, uuid} } diff --git a/testsuite/testdata/channels.go b/testsuite/testdata/channels.go index d28778809..df8b4585c 100644 --- a/testsuite/testdata/channels.go +++ b/testsuite/testdata/channels.go @@ -20,8 +20,8 @@ func InsertChannel(db *sqlx.DB, org *Org, channelType, name string, schemes []st uuid := assets.ChannelUUID(uuids.New()) var id models.ChannelID must(db.Get(&id, - `INSERT INTO channels_channel(uuid, org_id, channel_type, name, schemes, role, config, last_seen, is_active, created_on, modified_on, created_by_id, modified_by_id) - VALUES($1, $2, $3, $4, $5, $6, $7, NOW(), TRUE, NOW(), NOW(), 1, 1) RETURNING id`, uuid, org.ID, channelType, name, pq.Array(schemes), role, null.NewMap(config), + `INSERT INTO channels_channel(uuid, org_id, channel_type, name, schemes, role, config, last_seen, is_system, is_active, created_on, modified_on, created_by_id, modified_by_id) + VALUES($1, $2, $3, $4, $5, $6, $7, NOW(), FALSE, TRUE, NOW(), NOW(), 1, 1) RETURNING id`, uuid, org.ID, channelType, name, pq.Array(schemes), role, null.NewMap(config), )) return &Channel{id, uuid} } From 9f2af1cd9bf90b004746a9a45d98c8f0d6e642e5 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 10 May 2022 16:52:46 -0500 Subject: [PATCH 63/97] Update to latest goflow --- go.mod | 15 ++++++------ go.sum | 75 ++++++++++++++++------------------------------------------ 2 files changed, 29 insertions(+), 61 deletions(-) diff --git a/go.mod b/go.mod index bcd30d22c..2d6e0b5e8 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.18 require ( github.com/Masterminds/semver v1.5.0 github.com/apex/log v1.1.4 - github.com/aws/aws-sdk-go v1.40.56 + github.com/aws/aws-sdk-go v1.43.21 github.com/buger/jsonparser v1.1.1 github.com/edganiukov/fcm v0.4.0 github.com/go-chi/chi v4.1.2+incompatible @@ -17,12 +17,12 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.20.0 - github.com/nyaruka/goflow v0.158.1 + github.com/nyaruka/goflow v0.159.0 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 - github.com/olivere/elastic/v7 v7.0.22 + github.com/olivere/elastic/v7 v7.0.32 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.2.0 @@ -50,17 +50,18 @@ require ( github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect - github.com/mailru/easyjson v0.7.6 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.1 // indirect github.com/nyaruka/phonenumbers v1.0.75 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/sergi/go-diff v1.1.0 // indirect - golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect + github.com/sergi/go-diff v1.2.0 // indirect + golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 // indirect + golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 28cd62b10..53fe1bf40 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -14,9 +12,8 @@ github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDw github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.35.20/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= -github.com/aws/aws-sdk-go v1.40.56 h1:FM2yjR0UUYFzDTMx+mH9Vyw1k1EUUxsAFzk+BjkzANA= -github.com/aws/aws-sdk-go v1.40.56/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.43.21 h1:E4S2eX3d2gKJyI/ISrcIrSwXwqjIvCK85gtBMt4sAPE= +github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -26,7 +23,6 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMU github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -36,7 +32,6 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/structs v1.0.0 h1:BrX964Rv5uQ3wwS+KRUAJCBBw5PQmgJfJ6v4yly5QwU= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= @@ -62,9 +57,6 @@ github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -73,10 +65,8 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= @@ -109,8 +99,8 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -131,8 +121,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.20.0 h1:qbxRsBBPvpfGbuBq08jlQGxa5t+UZX/YGV7+kR+/moM= github.com/nyaruka/gocommon v1.20.0/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= -github.com/nyaruka/goflow v0.158.1 h1:Q6zrf55f8XqsC3WFRD/Gcpp/RwLXnHdY7UslT32TI7o= -github.com/nyaruka/goflow v0.158.1/go.mod h1:J+FJ0iw1cjivEziBGpVPtTl9fuOz+ib558MCBdKLC8M= +github.com/nyaruka/goflow v0.159.0 h1:nQOYVTfP0tWuOMivMrCpoCfvY1PWqF/TBFojd+FgDlA= +github.com/nyaruka/goflow v0.159.0/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= @@ -143,11 +133,10 @@ github.com/nyaruka/phonenumbers v1.0.75 h1:OCwKXSjTi6IzuI4gVi8zfY+0s60DQUC6ks8Ll github.com/nyaruka/phonenumbers v1.0.75/go.mod h1:cGaEsOrLjIL0iKGqJR5Rfywy86dSkbApEpXuM9KySNA= github.com/nyaruka/redisx v0.2.1 h1:BavpQRCsK5xV2uxPdJJ26yVmjSo+q6bdjWqeNNf0s5w= github.com/nyaruka/redisx v0.2.1/go.mod h1:cdbAm4y/+oFWu7qFzH2ERPeqRXJC2CtgRhwcBacM4Oc= -github.com/olivere/elastic/v7 v7.0.22 h1:esBA6JJwvYgfms0EVlH7Z+9J4oQ/WUADF2y/nCNDw7s= -github.com/olivere/elastic/v7 v7.0.22/go.mod h1:VDexNy9NjmtAkrjNoI7tImv7FR4tf5zUA3ickqu5Pc8= +github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E= +github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -169,8 +158,8 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -178,16 +167,13 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= -github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= @@ -196,33 +182,22 @@ github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLD github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E= +golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -230,29 +205,21 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= @@ -274,6 +241,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From c2e61baaa9ee6fe80632c5a1e5b2e2094b1e0919 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 10 May 2022 17:38:36 -0500 Subject: [PATCH 64/97] Update CHANGELOG.md for v7.3.13 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d00eb5071..34103d9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v7.3.13 +---------- + * Update to latest goflow which fixes contact query simplification + * Record ticket daily counts when opening, assigning and replying to tickets + * Update to latest gocommon, phonenumbers, jsonparser + v7.3.12 ---------- * Update to go 1.18 and use some generics From 6c5c86947832244d7de150b449468407d6566b8c Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 11 May 2022 10:39:35 -0500 Subject: [PATCH 65/97] Update to latest goflow which fixes contact query bug --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2d6e0b5e8..3177b5942 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.20.0 - github.com/nyaruka/goflow v0.159.0 + github.com/nyaruka/goflow v0.159.1 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index 53fe1bf40..6c65a1e26 100644 --- a/go.sum +++ b/go.sum @@ -121,8 +121,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.20.0 h1:qbxRsBBPvpfGbuBq08jlQGxa5t+UZX/YGV7+kR+/moM= github.com/nyaruka/gocommon v1.20.0/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= -github.com/nyaruka/goflow v0.159.0 h1:nQOYVTfP0tWuOMivMrCpoCfvY1PWqF/TBFojd+FgDlA= -github.com/nyaruka/goflow v0.159.0/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= +github.com/nyaruka/goflow v0.159.1 h1:P06TSO1CmR8v1M7mIbeZSs7toEb6aDIF8nQJKCgx3AM= +github.com/nyaruka/goflow v0.159.1/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 636a27da99a9a0d904c21bb37465eb75b400d260 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 11 May 2022 10:40:26 -0500 Subject: [PATCH 66/97] Update CHANGELOG.md for v7.3.14 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34103d9f8..a8da6d651 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.14 +---------- + * Update to latest goflow which fixes contact query bug + v7.3.13 ---------- * Update to latest goflow which fixes contact query simplification From 98ee3a3a43b12505abf170646b617f8e7044597e Mon Sep 17 00:00:00 2001 From: Morris Mukiri Date: Sat, 14 May 2022 11:27:33 +0300 Subject: [PATCH 67/97] Add arm64 as a build target Signed-off-by: Morris Mukiri --- goreleaser.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/goreleaser.yml b/goreleaser.yml index 69f927f48..787b50d7c 100644 --- a/goreleaser.yml +++ b/goreleaser.yml @@ -6,6 +6,7 @@ build: - linux goarch: - amd64 + - arm64 archives: - files: From 26705d93ceee5d5aa8d2bf22f8d958f9743fd765 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 18 May 2022 14:00:52 -0500 Subject: [PATCH 68/97] Record first-reply timings for tickets --- core/models/counts.go | 79 +++++++++++++++++++++++++++++++++++++++++ core/models/msgs.go | 47 ++++++++++++++++-------- core/models/tickets.go | 78 +++++++++++++++++++++------------------- mailroom_test.dump | Bin 1912694 -> 1916518 bytes 4 files changed, 154 insertions(+), 50 deletions(-) create mode 100644 core/models/counts.go diff --git a/core/models/counts.go b/core/models/counts.go new file mode 100644 index 000000000..6f2e95b7c --- /dev/null +++ b/core/models/counts.go @@ -0,0 +1,79 @@ +package models + +import ( + "context" + "fmt" + "time" + + "github.com/nyaruka/gocommon/dates" +) + +type scopedCount struct { + CountType string `db:"count_type"` + Scope string `db:"scope"` + Count int `db:"count"` +} + +type dailyCount struct { + scopedCount + + Day dates.Date `db:"day"` +} + +const sqlInsertDailyCount = `INSERT INTO %s(count_type, scope, day, count, is_squashed) VALUES(:count_type, :scope, :day, :count, FALSE)` + +func insertDailyCounts(ctx context.Context, tx Queryer, table string, countType TicketDailyCountType, tz *time.Location, scopeCounts map[string]int) error { + day := dates.ExtractDate(dates.Now().In(tz)) + + counts := make([]*dailyCount, 0, len(scopeCounts)) + for scope, count := range scopeCounts { + counts = append(counts, &dailyCount{ + scopedCount: scopedCount{ + CountType: string(countType), + Scope: scope, + Count: count, + }, + Day: day, + }) + } + + return BulkQuery(ctx, "inserted daily counts", tx, fmt.Sprintf(sqlInsertDailyCount, table), counts) +} + +type dailyTiming struct { + dailyCount + + Seconds int64 `db:"seconds"` +} + +const sqlInsertDailyTiming = `INSERT INTO %s(count_type, scope, day, count, seconds, is_squashed) VALUES(:count_type, :scope, :day, :count, :seconds, FALSE)` + +func insertDailyTiming(ctx context.Context, tx Queryer, table string, countType TicketDailyTimingType, tz *time.Location, scope string, count int, seconds int64) error { + day := dates.ExtractDate(dates.Now().In(tz)) + timing := &dailyTiming{ + dailyCount: dailyCount{ + scopedCount: scopedCount{ + CountType: string(countType), + Scope: scope, + Count: count, + }, + Day: day, + }, + Seconds: 0, + } + + _, err := tx.NamedExecContext(ctx, fmt.Sprintf(sqlInsertDailyTiming, table), timing) + return err +} + +func scopeOrg(oa *OrgAssets) string { + return fmt.Sprintf("o:%d", oa.OrgID()) +} + +func scopeTeam(t *Team) string { + return fmt.Sprintf("t:%d", t.ID) +} + +func scopeUser(oa *OrgAssets, u *User) string { + return fmt.Sprintf("o:%d:u:%d", oa.OrgID(), u.ID()) +} diff --git a/core/models/msgs.go b/core/models/msgs.go index e148c3d56..359053afa 100644 --- a/core/models/msgs.go +++ b/core/models/msgs.go @@ -1148,28 +1148,47 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs // if the broadcast was a ticket reply, update the ticket if bcast.TicketID() != NilTicketID { - err = updateTicketLastActivity(ctx, rt.DB, []TicketID{bcast.TicketID()}, dates.Now()) - if err != nil { - return nil, errors.Wrapf(err, "error updating broadcast ticket") + if err := bcast.updateTicket(ctx, rt.DB, oa); err != nil { + return nil, err } + } + + return msgs, nil +} - // record reply counts for org, user and team - replyCounts := map[string]int{scopeOrg(oa): 1} +func (b *BroadcastBatch) updateTicket(ctx context.Context, db Queryer, oa *OrgAssets) error { + err := updateTicketLastActivity(ctx, db, []TicketID{b.TicketID()}, dates.Now()) + if err != nil { + return errors.Wrapf(err, "error updating broadcast ticket") + } - if bcast.CreatedByID() != NilUserID { - user := oa.UserByID(bcast.CreatedByID()) - if user != nil { - replyCounts[scopeUser(oa, user)] = 1 - if user.Team() != nil { - replyCounts[scopeTeam(user.Team())] = 1 - } + // record reply counts for org, user and team + replyCounts := map[string]int{scopeOrg(oa): 1} + + if b.CreatedByID() != NilUserID { + user := oa.UserByID(b.CreatedByID()) + if user != nil { + replyCounts[scopeUser(oa, user)] = 1 + if user.Team() != nil { + replyCounts[scopeTeam(user.Team())] = 1 } } + } - insertTicketDailyCounts(ctx, rt.DB, TicketDailyCountReply, oa.Org().Timezone(), replyCounts) + if err := insertTicketDailyCounts(ctx, db, TicketDailyCountReply, oa.Org().Timezone(), replyCounts); err != nil { + return err } - return msgs, nil + seconds, err := TicketRecordReplied(ctx, db, b.TicketID(), dates.Now()) + if err != nil { + return err + } + if seconds >= 0 { + if err := insertTicketDailyTiming(ctx, db, TicketDailyTimingFirstReply, oa.Org().Timezone(), scopeOrg(oa), 1, seconds); err != nil { + return err + } + } + return nil } const sqlUpdateMsgForResending = ` diff --git a/core/models/tickets.go b/core/models/tickets.go index 026c41ab1..78f984521 100644 --- a/core/models/tickets.go +++ b/core/models/tickets.go @@ -4,7 +4,6 @@ import ( "context" "database/sql" "database/sql/driver" - "fmt" "net/http" "time" @@ -53,6 +52,7 @@ func (i *TicketID) Scan(value interface{}) error { type TicketerID null.Int type TicketStatus string type TicketDailyCountType string +type TicketDailyTimingType string const ( TicketStatusOpen = TicketStatus("O") @@ -61,6 +61,9 @@ const ( TicketDailyCountOpening = TicketDailyCountType("O") TicketDailyCountAssignment = TicketDailyCountType("A") TicketDailyCountReply = TicketDailyCountType("R") + + TicketDailyTimingFirstReply = TicketDailyTimingType("R") + TicketDailyTimingLastClose = TicketDailyTimingType("C") ) // Register a ticket service factory with the engine @@ -88,6 +91,7 @@ type Ticket struct { AssigneeID UserID `db:"assignee_id"` Config null.Map `db:"config"` OpenedOn time.Time `db:"opened_on"` + RepliedOn *time.Time `db:"replied_on"` ModifiedOn time.Time `db:"modified_on"` ClosedOn *time.Time `db:"closed_on"` LastActivityOn time.Time `db:"last_activity_on"` @@ -191,6 +195,7 @@ SELECT t.assignee_id AS assignee_id, t.config AS config, t.opened_on AS opened_on, + t.replied_on, t.modified_on AS modified_on, t.closed_on AS closed_on, t.last_activity_on AS last_activity_on @@ -220,6 +225,7 @@ SELECT t.assignee_id AS assignee_id, t.config AS config, t.opened_on AS opened_on, + t.replied_on, t.modified_on AS modified_on, t.closed_on AS closed_on, t.last_activity_on AS last_activity_on @@ -268,6 +274,7 @@ SELECT t.assignee_id AS assignee_id, t.config AS config, t.opened_on AS opened_on, + t.replied_on, t.modified_on AS modified_on, t.closed_on AS closed_on, t.last_activity_on AS last_activity_on @@ -296,6 +303,7 @@ SELECT t.assignee_id AS assignee_id, t.config AS config, t.opened_on AS opened_on, + t.replied_on, t.modified_on AS modified_on, t.closed_on AS closed_on, t.last_activity_on AS last_activity_on @@ -374,33 +382,6 @@ func InsertTickets(ctx context.Context, tx Queryer, oa *OrgAssets, tickets []*Ti return nil } -const sqlInsertTicketDailyCount = ` -INSERT INTO tickets_ticketdailycount(count_type, scope, count, day, is_squashed) - VALUES(:count_type, :scope, :count, :day, FALSE)` - -func insertTicketDailyCounts(ctx context.Context, tx Queryer, countType TicketDailyCountType, tz *time.Location, scopeCounts map[string]int) error { - type dailyCount struct { - CountType TicketDailyCountType `db:"count_type"` - Scope string `db:"scope"` - Count int `db:"count"` - Day dates.Date `db:"day"` - } - - day := dates.ExtractDate(dates.Now().In(tz)) - - counts := make([]*dailyCount, 0, len(scopeCounts)) - for scope, count := range scopeCounts { - counts = append(counts, &dailyCount{ - CountType: countType, - Scope: scope, - Count: count, - Day: day, - }) - } - - return BulkQuery(ctx, "inserted ticket daily counts", tx, sqlInsertTicketDailyCount, counts) -} - // UpdateTicketExternalID updates the external ID of the given ticket func UpdateTicketExternalID(ctx context.Context, db Queryer, ticket *Ticket, externalID string) error { t := &ticket.t @@ -717,6 +698,35 @@ func recalcGroupsForTicketChanges(ctx context.Context, db Queryer, oa *OrgAssets return CalculateDynamicGroups(ctx, db, oa, flowContacts) } +const sqlUpdateTicketRepliedOn = ` + UPDATE tickets_ticket + SET replied_on = $2 + WHERE id = $1 AND replied_on IS NOT NULL +RETURNING EXTRACT(EPOCH FROM (replied_on - opened_on))` + +// TicketRecordReplied records a ticket as being replied to, returning the number of seconds between the reply +// and the ticket being opened, if this is +func TicketRecordReplied(ctx context.Context, db Queryer, ticketID TicketID, when time.Time) (int64, error) { + rows, err := db.QueryxContext(ctx, sqlUpdateTicketRepliedOn, ticketID, when) + if err != nil && err != sql.ErrNoRows { + return -1, err + } + + defer rows.Close() + + // if we didn't get anything back then we didn't change the ticket because it was already replied to + if err == sql.ErrNoRows || !rows.Next() { + return -1, nil + } + + var seconds int64 + if err := rows.Scan(&seconds); err != nil { + return -1, err + } + + return seconds, nil +} + // Ticketer is our type for a ticketer asset type Ticketer struct { t struct { @@ -901,14 +911,10 @@ func (i *TicketerID) Scan(value interface{}) error { return null.ScanInt(value, (*null.Int)(i)) } -func scopeOrg(oa *OrgAssets) string { - return fmt.Sprintf("o:%d", oa.OrgID()) -} - -func scopeTeam(t *Team) string { - return fmt.Sprintf("t:%d", t.ID) +func insertTicketDailyCounts(ctx context.Context, tx Queryer, countType TicketDailyCountType, tz *time.Location, scopeCounts map[string]int) error { + return insertDailyCounts(ctx, tx, "tickets_ticketdailycount", countType, tz, scopeCounts) } -func scopeUser(oa *OrgAssets, u *User) string { - return fmt.Sprintf("o:%d:u:%d", oa.OrgID(), u.ID()) +func insertTicketDailyTiming(ctx context.Context, tx Queryer, countType TicketDailyTimingType, tz *time.Location, scope string, count int, seconds int64) error { + return insertDailyTiming(ctx, tx, "tickets_ticketdailytiming", countType, tz, scope, count, seconds) } diff --git a/mailroom_test.dump b/mailroom_test.dump index adb9853f1742d8cfb208751d28eb6d4d91ea27c5..ba8074d4e97be54c49ba8e8702c1f168a0e26fa7 100644 GIT binary patch delta 103214 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

pmFgFv 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 Date: Thu, 16 Jun 2022 13:19:02 -0500 Subject: [PATCH 83/97] Use new orgmembership table to load users --- core/models/users.go | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/core/models/users.go b/core/models/users.go index 121e50e2e..8eb41f2f7 100644 --- a/core/models/users.go +++ b/core/models/users.go @@ -60,7 +60,7 @@ type User struct { Email string `json:"email"` FirstName string `json:"first_name"` LastName string `json:"last_name"` - Role UserRole `json:"role"` + Role UserRole `json:"role_code"` Team *Team `json:"team"` } } @@ -94,32 +94,14 @@ func (u *User) Team() *Team { var _ assets.User = (*User)(nil) const selectOrgUsersSQL = ` -SELECT ROW_TO_JSON(r) FROM (SELECT - u.id AS "id", - u.email AS "email", - u.first_name as "first_name", - u.last_name as "last_name", - o.role AS "role", - row_to_json(team_struct) AS team -FROM - auth_user u -INNER JOIN ( - SELECT user_id, 'A' AS "role" FROM orgs_org_administrators WHERE org_id = $1 - UNION - SELECT user_id, 'E' AS "role" FROM orgs_org_editors WHERE org_id = $1 - UNION - SELECT user_id, 'V' AS "role" FROM orgs_org_viewers WHERE org_id = $1 - UNION - SELECT user_id, 'T' AS "role" FROM orgs_org_agents WHERE org_id = $1 - UNION - SELECT user_id, 'S' AS "role" FROM orgs_org_surveyors WHERE org_id = $1 -) o ON o.user_id = u.id -LEFT JOIN orgs_usersettings s ON s.user_id = u.id +SELECT ROW_TO_JSON(r) FROM ( + SELECT u.id, u.email, u.first_name, u.last_name, m.role_code, row_to_json(team_struct) AS team + FROM orgs_orgmembership m + INNER JOIN auth_user u ON u.id = m.user_id + LEFT JOIN orgs_usersettings s ON s.user_id = u.id LEFT JOIN LATERAL (SELECT id, uuid, name FROM tickets_team WHERE tickets_team.id = s.team_id) AS team_struct ON True -WHERE - u.is_active = TRUE -ORDER BY - u.email ASC + WHERE m.org_id = $1 AND u.is_active = TRUE + ORDER BY u.email ASC ) r;` // loadUsers loads all the users for the passed in org From c5da3542f2889f8e69ba8590dba93f1ffcdc46eb Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 16 Jun 2022 14:20:19 -0500 Subject: [PATCH 84/97] Update CHANGELOG.md for v7.3.18 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0b5566db..fdf195925 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.18 +---------- + * Use new orgmembership table to load users + * Update to latest goflow + v7.3.17 ---------- * Update to latest goflow and simplify code for exiting session runs From 79a6ba361a4afcb02e1e63ec201f9e0469f7eccc Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 22 Jun 2022 15:44:59 +0100 Subject: [PATCH 85/97] Update test database --- mailroom_test.dump | Bin 1922125 -> 1922065 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index 4080859fc9cbcdec875c5ea1fe7110d95d8ab75a..f8c4781afbdc16431997708f65541f73a83b7071 100644 GIT binary patch delta 70389 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 >BqXJ1{t~5MEHkyp6qM{4ZP3Sbm!= zIvk80d6z8@sH?xc@!sKpy{iM=l;=$#xVMv6hzHc~)$c-@%pk0AP?-AjH_feta+_w? z0`yG+?KnGsLqOp~`7X_~Mv$eMT0w3N4S&y5!53H_!EOTJV8ET%un-TZm@D2T@v;FI z-R{a9) z3A_y=0LKdks|efs_>TlS^h$+-YzRgd`i}(qnn{I2h>>7Zfp>cmh=g*(PjA3d;(nv! z!!D!1{>2Lbt8p_2;k%I#Z%}WF`LAFRcw{sL+-mKj|E33Txq&P47D?r2%)cE11Om93 zDmU-l+#sUBHaEewS_1pGR&QDeQ*8hbf;a0y4tEm@2Sc^*8VtG+!0{6P?Qr0wJGfL5 zWD5~yntE3x=uE^9DmXU}gz=*9$IEDHyGU+wQq-0yRvb8)So{ zNZ>ii|6+@EL;UVygZG-j;kkWn3B`lwEsz( zx7slnKnT|vfE;oHT}TKBF3CM{P|w*95kzMc0oH~mRBqQkzIwd3&dNN+#+WYtrU5WDc@wj&?cTjH%z|mQP0UA(jOaHY}g zNpN@{YI0&&b4(Ylh3Mm6`VlcAcTnBJrnho$?Coas8c9zVs;DaIj)r)kxU3kb3`eGB zMvP6WGLmKGd~cyRY9XHImLjq2LESgmZ>w_!hn60H(2YI6J$%H=e6NI2irtYn-LOic zdd&IxL;9T%F~E&L38x~{=*5Hnr_aW8OYpalA|E8`Q!1-9g;tYP_8`2pCh4w0R4@cM zdm^4IwF6RNWjSW@`i)#$`VWwhsp&fx!`Y8MqTd>7_w!LpT2a(eZ!J3Q>I=n zSAOXw%B7x`Okq#nZ>K$GI!9P-<@ew-fi?OiX@ZN~w_!z-D4#{QgK`)?|0cr-+YCS35X`!t+HopKUB zZs1$=EElzN9(wHAr*V=){r1SUfn-pq>SuDVOAvhIlMDXSpYd)D)D8TiJkrv7PG%g1 zd*U`lx)`1bJ&A&umrxXq#}wbScC=58R?$=^@JHvR|lsN{M7H&LOt6NP1SwQ)L#)d{*oN>Sf?QY8sIrFcC0JXs_oU!%;Q zn?Y&BA3eH6FkuPvESUHwK$ZEk}awm<#Yvp~4Vr+$Je)rUJct02D zG>cVoW(4$PuoPaG2OO0ZjWALqFvv|BEd0>XZoys&TYj(F*jBnV#tlerxc>wyBBOuo z_*Z0>K4(eM%cR~1twRV1hzKJ$cV9RWZx>P2GvyX3ynumEhCIO151jIHLnUc^{2^a@ zm)+r>H?_G@f-HR+dvi%d7p$*wYq4>yph)6W~gD>$V&G~t^yzMa2Qqk zoWrx3!Y{9-i=Ix*ws4s!m#Zz9bs(zdrOW*u`MAUlrHfX@6qw^p^0Y5fY+G6hQD@Kk zoD=+wj#5i*IBXE$bXiam8zK|bW3yy&b0G^1pCDW+omnD=}M3ZdKXHzRUclBh?%He zq=6CV{@~7+QLm!RrbvwreX9O;;1~>X5H#3nBV*A6BDeh*HY}#n!i|T%J9SF5xyCxz z60s35DJF%Atsgxp9m^V=M~l|_p~KPzdz7d{_DiG3IG1^aS^Q8W6VitF+V=paF124i z>}p0O>2VP15n69YJal7P)Q=KAUk#*eN!ofn6o(4>&YWszw)>dM;QbVf16p97?tE1%NJP3i#%tsGX5Zow9V)H#};i%)PMe5 zIu|!tu5Z2h$5!fehmBs4TX-{ldb@B~8mmmfgs4mbH4sl#*KuF0v+zMACr^%OK&wRA zWR>b*!A`_8@(w6BSKvjRWauiR%qF0`LLr$gpk8a#&&i19m@VM&WbJE3*!1Btmhj0i z_)-P)1JriLsnehCfs&-yAD3}E^b#^IG8p(N1w+1CN+3kymkq)|G@lgU!EGmcM3h>A zofu$#%Hp%i8m02E>u569|815d3)z$?VN@$`)i8m~T>W@Vz%Tn2yKD50V^VfrJOn+9 zdnNc^(F$TGNgltTw>Q?v4Ul_mrs%a@&GgcapSgOgazV#(B6@@L!PMTS`O*H-MR!pR zRY!Ym-OnXdMfKB`2f%fv<&m-C)V?Uw;*yHyo`1f3G0IL`E{CDop0Eh8_aQvu&t;;*kd#)EvPA>gsKe7Xu^E_|=+;zGpemQ?=&M6u4L1K!g{F3JYSK_jF zVKow9ZT;BRK$)dzJ1f@DtGAX_^W>QxwtBq=HaD8zU0bFlMdIFg|?FD&7 z>Xw{-WqRb&$zNlH)wGl^BP6ePX(X=%uP=q5dy8||`zi+$hU>W3r-9c;*@D1@isZ$~ z>fHLfgBJLe&yLcVo&_3=|2e5V7pIEJgxWJ6wcdml7;yE@5U}lyf4RLxku@)aiFxux z^g`FODgo`(Ny`8FycRfz0cRbCyKTVf2ylHMd2J$mt#Ik|<7#u8kG#t8>SCt2@z01U zaM5Gfa5*OQj-hwQa1GZ_DeJhvEf62C*Xl}S&06DNReQPf#IuleUvt6j98WQabG*(G)RZbM$*PpjD6r*#MIk^{v3npbXW=T!7uag7=G0{zq;9jy1agqFU%NT_FNpF zb?hluD*OUy@KjwGP5|mxp8Evi8y%(U5j$_tUPIyNMQrjrY8|2&p2UHBl$=HPWYUIo z6R*$rQt?j)Fm{avjH#-Nb;zr!o% zt^3)=`Ftv55zwj={AC{d)i4AwnMzY6aY`nuWwP=ywIxc>cZ#8)@;UNgQRI|Af_r;& zqlJ2*y{nNMVW4;d=+>m-$8h*CMy29ch#s)=Ek;po=5#vL{C?k3jQ=LJ{P=(!Z|h5x zupUAhwqQ=$rU+B0 z{A=Z{o}W>osgS}Wu{AOHc~7`Ui!j=M=u^@5RYAO2kz6^<0hClcJ`iIkca(PTss~gn~4dyhQF@)Ku?DIlbR+xq1LqpgIrbCd!`FbAVtLHxHS#q`ITVNcNo@Q{eohXD~17t*l!aUw1a`Uh0jIQ)9@ z?PT0^0vcL5jA`p+JiN=j=ocaaNZuB4j?L&#ROuM;{@|guw-mJ^lBK(@YcrvUGED9v zqKYVGUWd^3b^28|i*mbiFCaVYmiUXB-w&gk={KbnlSm^y!$QHR;Tf%sWoxHR631iA z8&5w~umDgVy2_U*_oIAPA}t>b*njfK6#ENijJMS0o1n{hHD#X}QH6|6vaZk~y-@E| zZq}30aM5M~IYfqM7(|`2EOhpv8~3rwOc|dHDw1xbVPq<@4Wg6yrpInm$bMyvf3lmR z;Nu}xvh4dMnu`q6Z$x%^rIo9|*MPwW*xAK4R@($Txfwh0o1fFr#`Ed#N?Uw%b;@kR zwDZw!BI_mj5ig=%p!UnL|0!6)*EEV${P(`%oRJFUB)vYV7_DD670*qe*qDxQ%%*q< z_!LiBDa4w;-Fv@R!V}at7TJXuhZY(zh^>HP+<_kH`8!R$(bQ~-mSCpVOArfDIjzV) zvOo*C&)17VWR4;xVZ;QeZZxj8m$9NzBr`)i5FRhtuMZstS+13E=nv?KY@T@W_zDeS zNa)#lUm*n-WDP%minM$&d$2 zF{VhGrnWUv4uZMY^5h4vnv#U!ZnIINs6-B>AaOctMKC&>DgKk86$e{fHt;?m(nlw0 zbdQs0h70MPzNbmFM2;?+IpLcg9lwOJVoC^^k*1nSKY8hq4ST&LW|CDUyl<-VTqhBr zh)VhPdBkUXO^VT&>&9(!U|~ z!4X093uTKB_Px@d5JlIik4S1t@@4Ir05iKOhSMXw=xv`D1kjVPr;J4c1@p|``HVQE zQUy*X1=CZWP_jtSO?DxBPt;6FkTq~!6jxV9hRgWyTG*ik>LG?dZOS%}`l>6+{8UIy zJDR5cgFT@d&UivzJ}L!WL=8ch){3nCI0p?8Mt#Vm`*V(OG8TEeP~%@|GI%DW$pYc} zXOVmi?I{wN5^QVKW~fVn?eD`-A>?n1nlw{o>9#RgRG+#@ce8DLL7*=f zLNh7-z+wHE+j&8NZ*sqYU@<%rNp{sR$2ZwMMXfbUxCEPwJiRjQ-d7J9UV2M^bQCce zA8~phg8<(lU7F5#sHN80MDx*y&}MM{FX_L)pgsv=1P7DvVCYO~rak1<=f)HtxIF~S! zgO6Rv;=Dh$4s)8l)@m9y;6;2;x(%m ztdwIZb6>If9n)H#gS-S*W`$X6v^p1w35~y5QwDpE*)BejOss!vyaQ9b*1Ds_8)Y$h zb;Gwdd^y=)z4+y@_{qM~6BrQ#`W;9w<;Rg9B_nQPyubvGP3Y{4ehP^tkop<#BBFgm zl0S|$??AD0kN2aZnp#o%Muu!coh}=$+N&{`9=sQ5d&C{Ot6NeIH3+ioP@piWnGz+# z9L1VgPb8w9kJBe92rlsS%1u|Hz9%#s9-(e3k$iBuO>Cv1)q>`ciB#+bXm?`M%%Kqw z3R`A5X;|FkA=@yd(DsFs0n)@?m4GQ3Ay6C`6uBC#a)_0w^?51TDklZS# z!SqkYgtRKb8->ox6275dDd?mh8)Ks56-?BwNZpL-wGvI;Bh`*AUxZHy>~h1UH%#Mq=Q=k%4s4)0YH6${GyFU_j4*Qt50A7O32%z5}wTSzL=$P8L4mmzP=z@ z(4u)`Yz|BFXbCfm(RnQ$P%RM^=S$THyB8fWv5uFg29vCfEi=t*&Ag)LI`Mza>^z@5 zuPKW_{>pI7c}Sy^{{Dq_9*l~CNi5|X84``m7_r`v>XsgWI3S-FU=A@rS-0(Mk@J%+0w@nwKw>pqqeZERiGY%qgMkniL#^5*c!=q+!3oBRAJ=>!rEC2qop&J{=$ z-l~82>5ea3cuc2q2?vK>ohsSJcl_VH4QdzH2w?7GD~Q;U~0 zSSX!&njN9s%p$ZjBGaJzscEMRyA?O71y_#xunwIeDoVJfTKO5rt9h6AM?t zI^We)JhweG<&U1jC)gyJ-IZosCaA7WD3B-nI2>Fr4Ixi_6^nkrBQ)|=kO%{>U(;Vz zUE|p(pf~zDDK}Vv-01#9u+0p5ZtLO{WGEb$*B<&!#Lx#XQ`nZ0ri<2*&Ez4@dz%>P zd*xM!UPc}0HFChGB-bX=Ws#II1_qMX(?t!{MV^pz{NK>gCo}u%id^z=unuIwg))SZ(xYjbmbj$~5H=8dJ|YupE_Kc>4A053<1m*<)93dI z-^cOELYBcRsH2eCcWM|isccl;eD9m~bD&hJb~Ci57uu}&q|#j=;&Pvj2ep%L=DD;1 zK{ZS9Dk0}|Ty`9zTV;9@o6vT1+iMT@8poI2LzviXPoc_%$>j%C;+3x#CbSn$21V~4c^bd8`TCk(O{^0QIkyB=MWQ<0M1OYWCu69wO79*GKf?nRU z)Sj1HUnVll$Wvwx86&C9=`Q)V%-iDE)lSZ1KD)OOu zS~wpWqnXMlc`a`{J%WXzK4io>X0fC$Q!!WMmrxd##c8NfhXOm@kImKbp_IX-)@A+Q|HRBxY@Um6 z?_xPhQ*Cd9lokk<$WYX%Jt93)bNxIa{WDD3ProMWVP!>3;U9|xB}^lk3Gup(HQIHZ zSHDKuufji>`kgeUwK7$52nsX5UZmfajw4hu-ze zh=S#jdDSLL-&SNE`AjPVlj4(M((SZ+6?_^l{czdo5h zvXf5nqx>j1kFFE%+(cCHfJZk%(C3q|hWDp6$LCKgwia1kuAbRi1whs`%82P)=?D~L z?W^poO&&@O}B5OFqAW4D8sdHRT(IH%Q~ z5X&gpVDG)D3)!kf8n%1|uiw`;2MpYgme#r)=F1-J7eBQq7`{^7`&fX)h&@RhBD+Sc z`l3h?|2H?*#km=}=Cg5^itnncAHI3X9CMVme1VUrBf=s{Y9Yrc#)H5(>)F;jAZ2l} z<@9hj;tX2_k+glbBRkck`|P>)Nxbz}iu)lR(2eTi(#aL+Rs_e)kkVHQ?@+{IsioIy z8>V;gwH_K8t;z6Ol1%$3l10Aic0KcR8trx#I}Mx9kl;i45+h`}=Z>N(C2fR5wUoT| zlQt~I2*=iPH}re(eOGy4_XPzRQha!d{3S1z_1L#v!Y)#=MYc$^+{c+H1@?K;&;!T>74PcZQBr=!uw~zA^h-uKPmt&)*eivN59O}kuHW%eb=?V|w z!fT3N9*&9`b>?gpFF)0Iozz_~P4}lz(Su=RZV}$tcWUO=uJ|8 z1R^OG*Xw0x1r#wr!b@Da_8@BqzljDF^&tb{#F~!`h1N*8EMw;9s2Q`y{A>A=MPy5(MC@0Q~Q=KoR zff;A0nX^Rn+K%l!{G*VMK0Bk>=V`5WE)4G9LmkU$&upkBfhcp|Jnca=kq{zUar%?G zz&998A4xyq325Bw4Cc#=rA-k0NT+)($JIA6dE{^O4uNJY3Q_89D5d|&BcEu6PV86h zGE$NGv&>6-GvxA5$baq85mo70uxMM4pt7`lW%{z*syWj-^05R(*2*W9OELVEP6XKA z^`xuT4VpGp(E!R&k8L<8`^1*yYF&^pWp`CVFGGjUVXcwhzM5MJMsq0@i0@89gJscz)L}&l6$4hHK@rY0!wL>(Kt3*Etw3Z@`0Y z^9Z5Xcx;nm_yla)a?NncV_8vtlv}Spk|As?@_0CRQ<6ES64w_y>4McN(e@@&Y;i_4 z+Y>V!z*;+9R91Z8`zp1AEP~T}!mvm*WC%|^mpcZB7sS3Vs9k1wf!?gq_YXJ?TJJYy zlgg^*ht?Q8%2ZX1caCQY*I*=nNT*4Iy-3*^TEnAyaB@LOVUlMF7Q{y;%0W0%*95e`j0+ci#CXwww@N7GPw)7_+ z!7?^I0@6$R_gGPQp(*#7zf3aSSB=6oEy-w2uD6Yncu5Zz%@*impZw9J5wV2KYi72M zXNARb7HXvYQRLl*VFUAW-iVNcl@(>TtAOT~pYh=|-91*Svo!+@385Nf#OVAvfhZ4h zUmzFMZZS<7wQa4cTx zNZzGT_R&wUPf1EboyD{a$GnM?UD+;6D03&z)_g=<$*zBBlB=-pIee%@RIP2^_qivJ zW9#B<>pJpq{ClO;&{C9c$Sh5@q>U%TB;YUe@hUiyw$t7h@}4I_A5&4OPbWzJg%W0S z^$}C|JCs^gujMb48xmHBKO&nW)9^w|iP=zJW)~{i;&<5rq{EcWWiS{%G-yYj>f z?H>1W%v)PHRcl#lCA5(44vP>;q`oId+8C(C@NbIl6jiF7_ADDiTRl6|_~XPGv<8%N zw7M}&<|2puo;BW?z#&Rel*WEi(PH4hId;Ypi~3^Fe$&waJyo}N4|{{TW~v{&j%x{T zcwPIJNcP_1kM;LG&+9ynE5(_Y2RK#&yuJvqNDO>$O?)_6S+$a%PTGdja`wL6^E1EHlLN zl;!5t2Onh98~F>*+ih8~Jp^%d9NE10Q2k+8Q)IG$*!M}&TrLkN-+5_63Nyi>+F z7ciZds2La(=!JUG8kZ~!3vknS69{mm)AfZGNKr7Clx&3)oDG>?W%!oP)1^P%_eyu? z#!5~4fg}CI`FxoH$xjc{Ss<~ls59xcKsPb=ltbds^yo&F%t_ch9}|*vz-+A)-f(9a z9>1$w{(!$;6`z`r!{a!e%9j8c;LE{eg0th6)3BXkms$mztTl8Vh18Q3ddt^r#7wDy z#{_ddsnt_=VVcrSj;*bGFx zc;~DV>0PN=yVssKk5rIv?LZ_H*U8BCap7R7ef8%X*~lWtZ*fy!re0Uh6v~pwnKVVy zVt*vIG{-t(@Y27Jhs5*asmvaA4W1$VgNMC9a{*^z7tZt$^bdKn;Jvib56eP^?ck1} z>f@Z{QRRSYKlTmwRo`j`unaG0e0&;a1dC5#-gZlBOlAw^-FQlDiieMpT!{CM=>)ZQ zm5y=f%nOXMb<{>F4{ojH`SjWBRsAM*ebr42A{xRP0CNjCiT&x(8|!)hC~L6VodnBi zz0RF&;xn3zye}5|B+%?TZ8G1%YX2`%A7}>Nxu1{^iGo^Ltsy{P;jz_HgwU+cuEoi@ zN_X-@#|A8w0>A0?XUtz~Ma)7Mt#mQ+Qwk$^7= zCs`ynshuS)M_2){td6sBw%RzY88r*q4OgZ3;U5ooy}&YlVQsw)zOZj-CCHwhb;OZG zLoxEPJU%v&;1=$4?i;{xX4N)0+cQz9J;pqP^Yv@)DG*08gd#I2PiC=~@624xVK_S? zw0%HMLr*1HD7Ev7p~XRw^;(K)FW6O@&j?)18mR9>lLGdu_>X#4lsHDXUYB6ML$Wi{ z?JA!h+a8yFGZF27Ao1&F=+j_g3DK|SKFrT#<)U=F?ei$|imQ0=nI*;HVD;w;sn6C1 zY6C*2P13aum!`DUxQ1S-!*i5Qowk9`Gp>X?4%X#}iW&?~rmy5#`oc8=U#-Is?eM08 z?@5hfO#}6vuH?|Swt^^A2Su9m)>Fu>MoG@SSWhqtIw6>B!lcxdFD$?9Y=FDz$JZ<+ z%A^=>&FZ=dPjFO~(lyCYOEctEkuD4vT#Z@>3j18-cPr|-{`9c3;~M)Y$UG!=KMZ<> z9-0S0MUF1)jNt4*kUrQ(O<}qungBlboOt#75Vxd62VVcjU z^eq$e7xZxM{FTI!7P7x+R)bv(#? zQ)JXQp)HETkXG%@-G{Spoq&2P6bOrs3DUy?H_pM?(RE6s(t{N&lm;!t<@d?iP6t^N zVpCsqJ5_ukG5g|g8Q&%*;dsx!a497~C1HBVCS9)MYvf;MMxVRhTmNDy{oGp800R&- ziwd9()b~A}_@!Q}YdD&y!@(6APGn`zlBBvw;9Q z#WzfxWL+)yg7gQKR8gDHf(*VSBpCwEc0Xb~W4e=$)=7Obh1zl-g^ktMUs@+vmhwi% zO>n0Z)yPK8TEV|oVQ=lwM5}#a(-9tdTjONRqdf@KFw#%kkzuzXLG@H%-?H| z`=KxLs;n>8Gt2dh@mOmvrh5{P#wpXM7ZV62j|(UHHciT~Gy;a%8S`fz4ChM$6Q)#? z)b7@N99~`L*2&pzglKuaXBPtC+$o!>ujwr z3Bri%^PRIrV<7uJJi`S;-jV#_s3~gwL)9!1ZG6J(eG(dv&nTA2Xj%AVu1M{x%u{@8MT=-u_<;SW=4Po#bbUWY=|(Oq*rL7%6=H z=;Enjb%i7aF)pT*3g%@*MotP32+hmfe-V(Ct$vZvd^FSEw;^9}(qfQl&x2M*anfOt zGehM;T@Yi6S(GnB$GH?52s~RJD5i8B^Wm8#YTEt7CRFQ^l_cKjY`TCz^&W#khfj9K zFylhLB)^y4DTOeL1sL zI(8^3QzAQOK+~`L0Vr=8w9vFA;@Hpx78P{c8Evl*jh1xu?VoC=XAmaJp6RoHFDNm=Pj9ygpEI}c<=&tRWx@;Bgbj(f*a z8l;G{Fi9zCi4|6!xvynv6dGuBae5_S>DWfh(*S2JG*`Qg2%kkgU2YsYK!38>8_y0z zWCYN&!y|Uq>b?@Te{p{5cP>?VwM(TM-SHAelpTLkdqRv?S*(kZDPE6y8m{u(lbIHu z;(Cm%Nu`Vc(d*WZ3JOw7bnag$nRl2QLZBg!)R&{HHW_(@aC)BVaG5EKpK?CBAOA2HQdZ@F8yg z_|yA?RpXDfB9Ti^?qLVzQxxurTArW{LNnh;2W=L9IhtZAFFV)3jkq4|fQOx&=ok!p z20?8J;=zMAb23}0-9jTCYcxa9J5A>|YJxqr1)V{-p+URw#dJi(gIV$T3TMV0Ke`~K zT4N1?w}4g7M^uH1p{0ckj`UUU*HczqzR>+RH=PPTV4tgP$4E^j=TQz2N}P5y{NX9jOwqKK#K6$%@pf8%?gm zc|9BX1!Lq=H+9TIwEX&Y7OL^wtXBCBCqfd18xF(Lithttq_H(hOmd2#__IjX`9Hsx zPcBArq|7n54SKMCy@eQ8^Ip-E$i1QxU^?G7I_3_ZMGkAuR>QtWw)%A5ARG*dr3&`OiGITbf3G*sY6C$Qphe+09`CF)~#xriQ5 z)uIq}1jeJ8?sBB_Nq4PlQ{*U$Za6g_A{LChVS9it7ygJ`r4F6!#zQLn4s zV|M-Fi{7J0(@e#FQ`fVS~{`GyiOsDIJK0pA{MmN`$oyR&1bJT2oxgmn~w#XPAR12 zdj@S<@!Ym$`hJWr?|l%0uY{Z)4V8Fyv7>+fk|8UmpwN-@l92~# zM~fKw>upc!jfkJUv$|C&<%EC%nb?D$qw@6%Vt7y3sPzh{+7bRy?07{RgHh!aWvLRHx7|}M!}X;@zid~bY?amZ)a zLge?ow=eIEgE?i=`5v`=!Iuwd)LF3*wE~qWJxsxb}|ah8VH_a7t6xGBf394-mPUC9y$>_;fO`Zh0}z@Mca6ZdiE{%|=9dUlBu{@|@s& z(t4f^fMY(CaXfz}oNtV!;GxRk@qrl|P17x4xRUUd&`@oqzuph)1uzyiC7p2MqVHmL z9;S6v3`!X>2mKokdIDJvodNz)KkM4Z(B(iD$zM#!_?H^((OE|KfJC?7iNN5&h-QwA z#l|7(=8Mhip6YK4+T@xB1nt638SA;B&#T2eC=qHlk}S%pec<`W)g$QHHI|*AxK-*bGuqxn?E9*$hol zq*tB3J_RIc&IW$1UQ?M}*UoIdm|TA`y**Shl3@l{m@$Y5KV4f8IHs03I3Yjden<7; zfMlQh9h1sI+`i>corYfBUbt)iX{m)kBT3=Pz?U(Z;z_Fol0p*WA*(3x-^iCS6YUBe zn-Gl<(^w(+a8S`)AF(XX`4!@psww` zq(Z?;lS09kH~D=PQ&tWjxyGhy`Ue<9ty?HqT&R&Wppjo_oIe&fV^x`jGi=3XTRELr zrDMyXTUb?9sG-~8oL^{NJ2qZEYvn%qwsNaV*EVoVV`e&{uqqq;-{YLWWm`LT1eA_g zoljd*^sTj&f2|92SV&srCcZI@42y_>YITs_j+@~_u$w=5p}Spkx!tShry zX03{!f9QEcwKL?Vvg!_8V6YAgyB82jyoqpX?N~4EKbd?qPDhj7A-cSHq}2hfqgICZ z1Owf{$6DX?wdx?snk2>D!&zlzz*O)i>b zebzs|vGV*BkUyY+7X^oYh#jhHKi9SX@aPz7N{n3Wb3i%gc6AQ4X9usGv}dJWg*hFG zH&$L8e17%ObFuqFY{p!wX4Gz;5@7d;1}cjBd0v;;cV~3RS0$-;)yuPO{${ zx#;q_^ik1RB8Aqjlr}hpbDd^>Xg*FrPyNx!bu#+o1VA-Z@A0|l3r>)HbnUGY<|nzE zd$5b%;5OHBpv!Zzen~R{|BT-7N^;;JKfuCE-%xi%LY@A<*t3ASy?8_G5VCZV0@zmn_ z0JYtHB_VjiN<#@fl%Ryh&LK+_=aZbM5B%~f?q5YToISXAvR?L~NmHl+8E6ny zL5DgWi_PaBI5cSSSw(NiGsK0iqc3`^T)q_cyCB|U)=U-m- zB1)XTytmtRZSVDNypIC9e|&!)_;kIBkb2e#h69Pn&^&aJrtB+WDrjEE@A*$OUwu_B zrA1Fh8#8_1jUCcJ^SFM`zpPgV2RH#7#yLgsM<6!%qZ=Xhf)7j$kk5~J&?7_lBd~Y3 z&g2m#W*_o4WqV2@L)Ulsz#pQ7&~;qi=Ikq8@JBHp*gW7fro^e~gOkzXH$FS#fkeBx zlKm*DXNymFyJ#GIR4!efgOpA%jz0LKaR5`|@LHrf`&{e!?(c?AgwW!KBQKRpbucWo zA64QM;N0!vasV6d$@!O}3sMFMuNDqDaIan*$NB;4jh}ZTzR^6m$hZ($pcw;j880%< znn5}cvm3E)PI&d=(&fA4x@SE2l}!MC>4RSqNnjc-FwNP*O-%3-{I_eSi;Qh|%C6IMMe>i9hYI8n_s+qNPrVpFF>mI9aFseX>7xnh<`` zm749VawR|oUB4MkPw|uuHfn{dFTcWE>l=N+^XJ}+M{S*Rxy9e-KS}n!uWS4%)bvm? zvH9YoWW3~W)CtWULcO`f)zciXat-?EC!@H1jH&xcovB9?;1H>p`>0&;5JC^5#A+Ib zRd&ZT_b>KeT_$!N>97wSRqy}@eC5|E-ki+U(vE}O_3u+GFrFCce)icT(g{sy$YGYr?%0*Sp5d~4 zdBdn7wU%LPc~|yj$qPgIHoZAFYA_BZbbWPouLBc+>WjcGLgD53)2?1z zgP4fDOR{EEbV`IT7T+91#`P(W7KU*fX_j{l^p61JU_L^-vb8g7FX5;_3^trnCr+&-LwGd(H6B7KsVL+mB+c0K545_!aU?1?PE{bv^OZcJ0pYBed8wiJ z?X3Co2(HA%ez#6%8x?~{@BKLO--`x^a5pl5d%IHuz8~=}?Twn5J-+m9YRM#s^P<3wr zMc4Ex_(nm`dmWuM#n7!*n)g^}dJ?)WvohYj@E(b=t4Yl9V#>3gd$c{55%paSYWHZw z3;6Nkactx9Y-(|=^7clc^*oU#^vHaENe!4t{uB%2dF>MN}V}roa zG=~I@6u2Y(q&!RDKRhNzRNbD012BBh8^1(R)#$}(hp!HP?=iuKQ+aw3+FS| zy{UMndTH0Ql4!vN1)VxNkrga%I)G=fq-mZHLoz|8O1fYPau!7-t!XgnlDy{yoK^Ck zE)g+=#=%keAatq0DiA%uW6GHvm6FA)J0|Tu*(%|l^}Xo<*|xCr2mH*cBr{5-Fb-0_(ML-4sBfq= zQ)6EBKE{=MY3n80HeGR&$7$`z_!W57D>3|5q?b=&E#dQc-hk?p|Xr2o{(P!=Kp@$FIGkjSl`De68C}XrO@_q-C!s#+i z2d6YT(^kkuV}s0GXFZEG3{OJEjCnP9UdMVo_+af*XA)!FNoe__{cJe< z-6+?RHh&8*Ns3B2PRRc8_LYT9W28Cv(^CF#w)OAB2P^sikW>DC`ZA(G_=`w%$UCjR z(Khy{wJ34g6e$&x^IM*hGwr z>P7Q*eI(yx7jF$vE=>B)pWf8VitE3r@>uo63z>4f7A@{4OB zAU@e_Eq%E)$^77@`Ryrku;z6Y)tzMNq8TX+xUl`j)i&?dIEfrQVz$-5%A|zZF*Olz zpp~FOBF8k*fT9okC6)+DgAu2Ka85QK_zP(dY+lPLfsP4Z@?hUo?$h;>Uwc-Zfv96aVSa!2M3D4gtS z&GM7|CuKIZIk&fCGn??FVcH|(#wMA+R`1gJ8Wo@o+D=x0+Zye92|Ay@eMtr_n zDJw2b!jqo>d|Z?R+RPCoipY;9M4=pOA5hW#`|~d+@AF(-Po!`z)j9YM6%}{8Qc05O zZq~X*6boVpuaO^gZP@YLkEIA;mZf}7mL`YZ`)Cma?324OBXflPIJ!D{LU?xxl@+Vyc>zzQ53Y+$_or^^d7fV z-zjVz)x^%kgyOz z-GKW_)04EcdKjeo~2a5UPHt&Y1>mKC>{fgmm!}+-==4)-m ztg9=a`in8aL!jubb-zabdrF zeme~3lbQ%3FX!j#;r^omkdzUtCAuN7T+8jk_C$xA<40g0R~nQD)0bVj_e9=Yrb|e; zr{}ln;Q9FP@$yH|B`Yd^vg5*?YzMb_@(N?XBROdgTR1VO8{0WIm|zX|(LrZRz0#%t+F^FmAe7&Ao-f^=J@Km0|c&R;U~{I7@R z>7IPn1;7bT^!~1@T2B-cF%sbGTVs z%JgT3cKoXd7O7h%f0d!N)m0k3$h$39i~}%)3R7wX+$~j>1#OR`4Zt-NsWi7_=VRc) zf)J_pRpdKqgC^r+lMyw`y{!#EqlPvXZ-@{Rf=P}U?-G&|QF=qK3wi5|vLB!z;P>@L z;D3J!l{TvY8xK&2{m<-WT1(H~qz&13Vb|N^cw4i!76sRGku5*P!*hJ!VJ3s6c>b+zjjp;?{XD-~@8YeYB#w%& zO?1S&uvT9va!%l)HI=f}M{ zF@5dj?)-B9Kp>Fg%W!*lTy3|Kb-gYz*;M62RkT0+8Jg+t6o72%wSQ%8S@ir^Gq(Kp zaQ>k_@|R)f`201klY_bYb@=yt%a*Qvt=-X8C(~W&_~quN+GgBg_GLzs`nY)+r7`fh zsM1KM4WO}M$Y!SJ^S$U85;bZpAS7?++s|;XYID0+9rLhXV{`fVdiw2U`nuI76`-Rh zcYV5RztWrTHPl+zq-a;|lZ3EotPE|-$jG)`!K(3DV4EcOYV&z;^9s7juT>|&d3>@q zRZ5x#_6WTnlpPmIrM(uPlWOHP2hI}5k)=DS21u&%;&`+8WU6!1JhJxe+}I{qM#iMl zl)k%biPbv(%@;@pN!K6-!&>c{um;t1u_WG08(D&_=7rd5(XjJyCc!WHR6=ELE!JzL z`f{gwyHN9nHMUZb_tJt}-4A8dHJ3PnbBKJZ9_4N$lHFwr!eig?E?XSlrBuOHRm@py z%3|f{`B3`We+(t+AgP_OU+E+|hZ&@3l~Z%Z_<=4_`bIiYMt>HTf{82o@8kesV7lcQ6BbPVjh5~G(Tw7EjB&y(WL2KRlAa}rNJi( zs3H(3A`mIxW}Vbg?c!kg#47F5&eN~+TWH6&6;&W-_HOYOoKbdaIW%8;rCt^#pRTk@ zlXf|`!E+v8`151>2lk9b3bK8;;-*RrBgo!=PX z!YOtP^x;qnRMn!?EmB{miabmWdVjXsCmMn>#toFd2UKbI6qTKb0G@1~&`7n93lTZt z3`S;JZ*<851%a@L7fMn5zKG?t&TjQ+(pnCZ^SduN7NP{SOU!Wy*vX5t9J5+12+|QkP;nnI zLxQwW@x&f^B|Q)d?dqqByx$Fnr9!f&muL?JP{7xxi==0Qq--QmAv*yDM8?Q0;e(|O z6ad>lJU@4SKK?!S9WA_9jAzG9dWfg9%38~~o-NZzp7(;2Phn*uV7K+Oq>J!0Xr*=)#b_E6*MXDW5z zUm=HdBG%+>eUVY-kxZiM)So}i^luVe8@JvRIQ6Folrk1Ir*x@VO*D3J9IAig{FO&g7T*V%Vn;fWxx6>~nu;DWV>UPlV>h87X;quJsl@|`SbvOFOPh}EC(#v3W3uc;z0Gp%r1;X|px zLf616LIGPNKZL0mM9*>eEu9i*|5_RIF6UD28BK7)s{}x!W->RtC{f7RDo{pt zLOR0bI*8S`$(pE=c5zbgK~03I`hYl;-sOTN>+0c+!cXr(9Me4=R5M3`&2#0RXvSC) zRUq&fa!D3?ybZD^ZKqIDe>KHMTFvXSe zC6JZ79-Dyh5(2nYrMQX71-nIdHS#d?y0>i~89tr>S0P5U_fiZ)*bIVm$}rCQ;d9WR z0Yoe%g)YG^0YgL?GxXdsi$$@)x~@shYdXG(0&VW3ZyQ^X*WOmTnI!eT4eed}lXd`{ zxAo1-WekJ39E*@O;w+e-Jt7=Em56(x9gz>NL+p?~U;w~Sg_I4@TGoi!aJ`o)OFM`>LHCk`6rL1O-EszL1tE`7S`2fzXf8ot|Bu3@w>w z0k7{&+(#!o1f^1KnRBRPrW}cU_~eh%_#rE8269F@Wn_gOv=dciy)4_QggVe7`P}&S zu}SCUvok))yyF1A!g{-5bXl1t)h#ds@E= z;xONSADD_F9km8%@+YTR)=^PNZj!0b{>G1iz1fJK;G-gXCiMjGNMxdeDxC!`@C{JR zJwRf6LKETFaJ&+5OF!qb1eBFOWb#>##V$|S-FP!vM$R?d?#w z>3)UsyJCOhXHFafcNx)mM%q3##N`%6S1UK}`LR8PsY10RN8FG-kh(x!7n34b?C_rR z;Nm4+6Y+iYP#`janPOtDl#*o-Cuyc@1%Sg?z&#jw9~N;ko(J1HifT=T=1cpZo?bTLag>5e zBj5h6!@Ei#+e$ISkiH%@mS<}O^iC*5nBlHpsZLEsS54y^5F`cBevF_g-E9}3jkdDvHSNly<#{`L8}T5ke? z&iJbRr@Zt(nG=GvdvSccwk;i4NDx?E)mrwi-P5f!sfV;1JyQe@n!R1LGn`rQ$bK|}f;Qe@G^nH?6)!W^^!`hMMr`%XtS%X3pOkb_4d=zfLHyjV! za@L&9@6pt*vs=fpy2y~WbbB8peQ|v;{e1!_yWM@BzV6iN=oB(xZTTI2&Sgeb zI0<2^N>KvN-kJ??E49K74iSW^az>#t3SN(I zB9-E2uld~{`ZEbe!hIJU)zU4p>Q)@ zM)s=K@F=@DXj6T?4In zF=9pKO{oCtQr%YyYf047aqh)sB5xjRP3$Zf^s^3ktV}qqqtLptT)rzg*p*G&K>=}V z^0i`0vU%IX73O|Bb~5Q(eN3s1^QXfW2w0*16!PfYYM0?+?(~)&XoNX%d)MvOmnZmh zD-DO|NZOB69W<>%0Q<3e6pPen{Z?;*SoU)rbsivkF}}!@ZX{@S^mlWT?QtZJD%TuqF#$dDD%TksPFa^_*kjMKwxu`siR z1DZgBiLZU1gibw*w~3PYtX~ncmh*nyKUY8RwLFiQ5}^xXbx~S4S6~-2D9%Z>&NL3A zAk5_v(BJNME4CH@?*V7wc1*7>YWTJE^mzU`#SD0VFHndY;Iu>R^wr&6Mf`$U3?9GT zs;h(22Uwg2A#k&>{u=pGlPgi|)7>9=Q?>0c@8ekYTw!PWLvi$yu zhEMnr5_aHUV`-ZjsXVw-!UQJ2cQ!AS7`QYHa!03e1xfB{WozUI*TfiOta9@IJ0S%b z4p5e>Y?Qv4W3 zULCnR?wx1J^1n?1!WiaPAWGqlS<^r=Threr+*c)qKo{tk$%$|a`0Mc3;PMqVp0Ndp zi^E?E%*<}XKBC)hy}ZzNl`jUUj#jQJ7=RqAyB<6VF`Mf;1 zec$7%=2;Ge!psuw1Ox@`uR^9lDLCr}w6D9Xt4b|a0mc^8!vzW+*HB<@^Iiz zhqb3f!kB|KvUX#hjKR&NtZ!hSj4`AmpZI%bN_D}+KL@XpfL6&9-Xq5BM71fHKpSWO| zb2~#0ntNFlHBY!kfxsU?o5VVQ)p&DubZoG4X|KJU9^7UDGvo9G3(&9jTMa0t7XVh7 zFI!f#^RF?`x8q;9PV+u{uBw~izl>V$J?i|NRIt||I1NvwIH8TdUgnCY1kg|le$ho4 z0jC`IS%ULhv7a-8O@_W)o&4e!?uJ&z{U^$O0v;(Wd|u0m3Ki@&^#C@VHStH*WN%L4 zvd02iU~E#D2nalhly@(Wnj+^UknAu_+y2yY=6QO{ApVJ)oTR91H~(r(%M2s|{^buT z1zK#7ILJsQ=x&`8%~uvr0*J#>9TT|g6;LD!E4I`k>iv$d>&>Dfa);g!s`82Y%Lv$G zeH!N4CLHToV2p(cPL}$$rLR87=1)-N@F!mn%m9KG^bw}@cZV&t zr+HJ%=K~*U>ZHlfZ)aF}h-ri6so-n!-JL4&Owl;BA{85|p}8>Swwn2N zzwEzkVwwHcwxaJV-}a6z2gEL=a{>L452uEUd)h96$Axh>wZ5xcd%6{5G*~&Px4kRk z^o6PKj`Y*(<#y5XE&$N#`!>5Y`!u_hY*ql6`CA!c16%YQVFT-@u~}jRE2#-`96unr z2W@CL)?|v7?`Vd^pGNaEQzB zT3vNn*Kf0q^^6cO-TjL5_@b`+xpPo!?K|JvdB1^OUBpxmxk>A_fXxQ91wPnOPbIbdbIE(=%TU=BTNu}HC` zH`}2KepSjgP>xz0$zb8M{kJtZuRq2?zL1L9ixVcxk9Pw!>Y9yeUEq0w=gra?E`1?x1`PFL{E>Qubf?Yd;tEFN<`4^2)zsy%CRJd-Ppbo51k2IOtAZrBwpKYEY<SR;c!Zt(O0(*G{X&ebf<6u4%%A zGGu|%6=966;XBEHSG4wHjIBslPPQ+<&2V1Z2vRfB)ZemM%3BG_;DsTyH!)QE#K$+002^N&$J{}Y*h#!;6qR( z_Ur7aE76SnDvEr4WHHC52y{o)Mu-T<#Mw5q6(WFoYF099GSb@-5rw(Dpg*_qiU_u& zach}e^6vgt(NnTSaCBPi4c(D_S_VQI5)aP)t8<4E{%L8{V2JYDboGfT=<-{Rfr>{l zWFYZM-*9(0UPFX=Z{I8Od{je-M(85SY+$VtaF5v`sP!QC7^>L=({e&2UWx$MPinUM#u1x?^om}QI1*`2j5`^ZPNh;B|W(iJ6aC_{( zeQ%Ed17BBBmcOH)&b$_5qPg4dLguYAmp28vHMi-ry463jRfzB28z=F{od!S046ARS zq95zVU$3WFeco@h9XY)ZXN0q!t;PS9VDMI3R1P%pHC3u6Pc4NZ65m8)Xg%bApr27A{6tiJZ)B@z`qAjRK=zs{IKwR@g->@{qL*K`^b>MZ z132q228M>8(oK-(1a2}0{s@QM3?m6IZn&}}k1dhf$n6>Obz)^v$IZDQ159eQ$}Ean zN0qC4N@;HN1a^4T$Ye#*1|TgsgJJn$XHmI>l~tt@jq%U*>}~Rh$OSF4>5dqsmy65E zk}tSqrq_XYIY^yY5Qk8ES7Q>!`4bfdh`pPBw>fv1D~O-mOC~OdW92^lN!L#*S`t?0 z4~W+UpT@Pr>0fa*klMde}FiDO5xZhHHYdql7MtJG+DU^kKxP|yYz3R%Ufjg zF>Jye9j)ss-@pOFQ058)CgEniWGQ;EuLkxOH#6mBh*_We%47arAHw7g(nFPPiQa?> zJtv_`(Y=^ZUhXlH4$pVMHX@tH{`)V$2`+$OABn`!Vm%ulkF%g`Y)yvRq2c4uy1_w? z8bp8-*bN*MY(HQT99UJabxcCi_S5n}zjaNy#Tmpf+mc$y5DgDmtSaCaC6%)Sz3&*Q z&rGhWjMA}Pw0~B@K%zA9eYIe`?wycP_{CLj^3JtXMhG8O*n6v=r9$Lxh=dkkBPme& zVV|tr#ovxx@laUH5r>P576WeNVP~56THMo-(*&$0i(GpO&jgj1dO zCX{g4nu=)jSpvaZ>%)oeg45b506qo}O!(50>mc;9)xTVA8-M#n(&+8yu3|?y= zh9uEbob!pbRByPI8h~y#u1lfb=gp-gMZh-G3Jr?7U{GQ#D0I-rO$3*>EO_kLSGKOdhQj+L$o%pV_zcE8i{aoOf8%q35=)v&i!eWq19!BXRQ3as4ET}sn1 zW<76%8UAcuthx7c|1;Z+yxuUlrQJLI8@e@H@9j+*T<^zzoe!U{9;7t3!!B~7tn5Q% z*uiYaK)}_~&#igx6VY&t@*uxt|KZv+Ix;b`8z&Uz^1wf>tcE-d3A5=V^1(fOj~~u{ z9=zP}SzvTqFFG|eN^jH`JD&Qa-!I#U04=Jsh1ZtxY0N=S6{@0+2F)LuZas4He*)wg z+Ka5%^iXF59nImVgJM9^LPaAxZ{iSAl7~7Oo8OzAoG6w4Zca#G(f3th^v1YDAQ_+y z)LzddtKW%wAnJrC_%QG`+Om_bsR*CoL8AqS!)~4_mlE93v9SQfa^Z z?%GbUC-4|ls;UH*qOmsI=^)HE8l2MvMa z@Db&vI6d1)#RTqz(9vX!ntpc8-kxd~&~N~^-`SOW3~68Gi^r$>UbowQY$DHNbMK-l zRCB`tXNVP`TW5Ed-?S5)BxRl3yOV;Sc}I1WOY!33o?6JChrOh46r*ukT34i zn>U~dr=1$EJwW5h9^c(MJYGhxfoX0w@YDAFs^^QGJdF|fr-W6|3``Zs$#SUEu1$fn zp}X~_8Qg;PQ1xCncHYzXnrcT3;XM(@wc5cuolHN!6EGBl$)*slH4QT#b92D^Jx2Eh zt7;-L zcVp=551R8a2^%?%Mt15mlX$ZW+*YrpcKY$bOdzuVq9l<`%6ku87Qc3Jl`-V5} zl+s4aidQ{q%_pFqFp~>M3Z!g(4Nv0T=fDE4(%lj_k7ja^K1p6V~8KiOx*YYY`0@cQ>#foxn}Ez2X-o^~c) z+5C%nQii^L8Kw32r}WmB%6`z8(OT8@<1`pASav|?5Kd>ZCTcc^5mN)i?M8F9CTdoL zrbC|vC;qfrFswa4nn~h3pU1OFGN#uw!ZRYDrPV_7g!j+ytdQ)R(`kf`Ygdl?8&L(@D_RPkrkVHC+W)&FqDuTH&C zr`ZMt13WG`*?YP8D>k!mAv%U(w z8P52~6|{53q4Xd!5B@0MP+`Sz@y@S2!f69q$$|e=EZ{W^3O8{aM~kfkf9X1-*Moii zP1f?1_l-Cm4JlzxRGW27(9pC&(8eXB1ak^lchKjrL@4`QO64%WOa+(5yLKUV&=Ut- z!ZruD^?02R2TroP60gf#o;rfFIS}ZP)q;+_Dwt}u=hEQ9v7yTxG+_vm8hM&}G3cH9 zn1G?da^Qh^gd2G!?{V=!3%24JB{oJ)!m!&Wai+!Oi)}KQ9qkdPM-P2(or) zvO4NOUKLVc2zI>_C9!4qE(Jk2nabU2ba^WRZn)t|iar+Utir^!Pr&|VhC-TckEBQNcH`C4 zej_q}N~oSq)$X#l`dr1Y`m6x-UCj)#>EW9PM4kL$V`fQ=v4yIcv3rmT;%S7CsNBpMNHU1V8f!8lY@a0Ik%JG4n8$-ZLe*xz^ z%gES00rml38>$jQ=Nf(jq-zo zKarGmFjd~omDGuc!I@2Sb=Alp03%6zUjV`K$i>VT@umm2`!`>TJ&22Yd=TLsj<4)# z7Ug*V8O$y7(9Z7s00gvtca%+f);U=#^njZB*kcx5SkT}qQsV8ZPk^(%yI2M!r%=}b zrgXg!xq7+o)OUsF`@CO$kV`OlcEbgITu@_$(98`D_?mHg2qD{(=1jUb*_gfcpR^$% zbs;fk#5-x^Q1CAlRVo;No zA?0=)`AP4=34PEBAtAbhIL+eZW7Tl{uAihNzHG>Vc-FJ`0SSqiYN>?pAY+*b^ym1- z^(68(;cm0TfOX)XESM&_lvme!({@Afr01E(ZrGQG{FV8x`2@S!ZtqB?kHY-5SelxH zvVm8uPBf=BE}8U04K60ztlI>8atjqM)J;!;2z&W?GwPwt16Ya|-NTph@8AQF-TOl7 zO(=*O#|~QTsfl4EFKH5e8w+~#9WeZYP1o(wIM72bK;t|Mb6we&CgXPc??l4LPTld`11=Hk!HHq8HJzN(yQ(-KY_GUzH741sq@*F zPH#dCNdgFML#?+|P={J&WAU`a$Z3)9@8aMjvCYSvcfJ^;BEW7*(zlhBmkw39iiAER znHxth;3HAN<#c@6Z@l3a_RnF^brZ=7Do(W?B$H!yioMC+0W?=QeG#lO=Jlr2HEA51 zJ@T(E_8wFw**1k?VvuOYY{?>RM7**1eJ@*&&+XFJ$!C65IIbfUS9Iu^l(rl~!tB^w zSEqPvh9WKl-_`4ZEkB~E>G6oorYV_Qh!(U{fZdD}vl1BiLG{m6i!S#qyZ5#nMAh-5 z(O(0bu`d#Wb{=o~JF2C6cg0(_dx#7)iXaq%Kc`p{RN3ER1D*2Rqbqp`eOIMxU&t3-<8R*qWRgfmA;*s8(X0K{J&~g4obft1qsOgGuTC#l0ae&a>aP6K5K#m zR@F~%qxHa^bM5Y!(QTE?rxba^wQi>A2^e1M%IS4eg4r7%ET=hg2hS*IqVf-_0AU_a z$qGv#b4^0Se=i|iy%#)8Nldt#qkCs}Iei~>fb}6OrnMX6?|WQg_81mC8l^rTG_!AY zsn5fI&EO*R+p!3+I%cAjL3`3yFVWUztv);48cW*6?(wYbjQ_qWZS>Q;4Qj1zI!AUE zoHC>}h|(q9Q?O}hO*GXYx)JI-2k5SM_B`4tATwdB5zXYr&Ee_1iM!F2DC$;8YgotN zMP(z5UvHgq8Yr*pr^Y~^>PWujw-b_?OwR`nWtWq17JobfG3Bnv1mY)7xx(=d484+J zNi=vg^_0dMZaZ9Ge3pPIRy5|((&x(fOu`tP@G3YxcFIAsWY2tbdkFcngH3j7uit zA3cuN)a)jLCPEQGvtOclb}vyjid>n8?|7b#j6vWQ>_eJV6+zCWBR1;@rbA2KoWSHMfrKB5c`YBenvR6k1gFM;GC9nXjgKJmyc->6&gNMyB7 zV>-^o?e_!%MX6}BZO~?!$LmcJ9RsAqhgF>-q#imqP1j9i8`)K&Aq`m)9$h^Zm~=cC z5oHuh4~r<6|28uzxCp%me9Wfonm3K{E*h36Naz3pcB?g@rS8=Py z|F-b3f0aMuW$!g-_MWLZC2c;e?EMP9QaP~&TCZ&FKXWd#4ufDkGn6l!A*S85 zn@3QXkA{nE$-X%0xWD+|OS)rbuo30rr}@n}P&TXe0r=DObe>+~{va$4>+Z0$aJ!?{ z8HA`n4GWPBzvp5cZtJO1D7h>~qq{+zsoZKlk%xe8sF~L6)irh^BWY%je}je=9z|!_ za}|uL0H@YdrD}Fv+MPnONZz*SHq_Cx)lS*&H@Xg~$-2&3>Z-GX$^e6F4W;c{UWgU>u&$a!`s?{_2|{BVbEYKsPgXUXxCxW-q*u0>Cp4- z-Dh0*&RoA6&iecHNh;1F^S784Uy#*+qjwt&f8U=Fo|q>krbPR`K3LaYp~{&LS9bQA|=oYpis1lYghW?>$VB{G^! zxrJ7^WJdblKguKRC=jfsNJ%G}tW&jLumOF-{!HrPnmNcT>;_}l1h8z~TPr?6{lU(* z$6#ZMeO-s__cVb^oPul)EbuhTUQrYmt1~0VQ}30H!=FPbLX8ysQ*Z%Oq*6c=)VR1l z72IlDZ|I{T+#aZJX2@8G;wfmDTu#bQ8#1fZ<@sr_Ksv9wHgC;HJ)w+X-y-tnK7gEF zNQCZPkWr28q&4^5V7}h1>{)PzZJqivQmYda+gQ>mWS^v2!cLTtIS-sk5Zw6*Pr{^V z;M#-9;{CB|8Nz#AD6vf(r@06oxB50FV)04fkRYq~^hV22{UqkFP*?GPZT6Nco?e@=^VRh@=0+W z(4@4oKeg-!ttl1qmF(*>>zJy|hv>wXwa%pfq{EUjtMTX|`k~rbl8sdVJEg{F1nuK$ ztGZRFgZ3W%INFrshi$!}*%I~9@-WgNKZWfI7C$?6-vZDgDv zy`b7iL^yH>%koOtc4v3T3BWZ_q}LQ8xLAl<<46X4YnT8csT&1hy_sX>S#G_OtX>0# z={)QpD-qbvPM0Xx<1&`%_^!F?Hx2DHN>Kw|gf}HU-SCK7Md>5c+1hC4uMZ{q>s%|2 zT5FY4BrWdx9{vw1qB?n&px8K0>`L&v$d6ya$wb^TONDP8vpJCN4j?e-!iZ~L$s|BG zpF{1r2s7{dL`7dyE}!d9!PIzs_I4&-*}Y(wOpwdiL_%0PD{sfY&&h-+0dk0nCxZsw$#(*gj;y$%t9{oSI$oy1a<~plfaA&S#|d_q z+Hj$IZ>Pigczxl%>HKR}EQez4qp_4lgYEl2Q7beYPRxlEKwQpI)4bqMw*IYHtf0hj zCX{DDlZ}ZEtVn+tS0W>`c6GbMyhDgAJyQ}EFgi&XMK;*ro`w;^{m*i?fy zL>(eb@js6_Kpd)H@yPH7i4}_cQQ9Xgig-W?Q~uqmzXd43S}mvi@pWS*6WT}a*C|Hx zOmkw@=D;6AVzp2j^`ptSRh+37*9CWEUWqVj%+LeSY3ORMzQigk`M%H9R&wjx;A0fk z_qncn?8epsW7RWbbSk4f5Jkz{MX63z4LdC>)x|g>I0Yzd!pw zy(_nvhOFReoSuQS5=LZsEZ4dXz+a{Aj90QI@%2M%FuM<@6t}+%&?+Q_AnqosR3{Hp z_x*N%JUV;4{^V{G4Z>5t=ex%7k;oGo<5X!a%a0LQYMGy2Mb2KU3`_VnNr z4rf7h10YFRB%(0=J{@$}s{kk4MMd9}VnPR;e{&9jTY)@|6$SAt$-q}ID1#GzQZ`cB zm>#-IRAQ@+3c*OJtEm)w2OZ*0etaLdPn-&FiWFiwn-C_Dv^e%uNsQL=)7LTf=viF8 z$-=|jQsWrLMoNf19$XJHZ7az)W$c`eJ|>A+0IWg$JOMeljmS)VAWRap3)TBMtTPSQ z;c&mk+3}dl11kc9 zIDqAi9A)L1o^_T6Z80Ib#e>Ig z0pt=<4vrVKMSj)RaeBJzoZeG&^sO*3a1floO!7TVa75>Lu3%OH#@$~T5JC~raY0AWzko)?j=UgcG54NrCbt9)&GIld-JIulMK^ ziQpJPCPUdPPkyTnvNDRL>7Jnf!LA%R2H0nZm_2g8e5A8}1T~t4{`%`is1xc#valSr zvgY_3VRISl4X8>Xcs%Jr7e1mu0*?CV6b%jwA{#OqqsZ|9SZ!{bAQ1zMFaxev&iJ;Z{fldi6g@JP+lmR(LjB?HE0-$_2 z2=5HJLHE~V>jQ9}V08xcrd&^V7*j_-N}b*6t-#h}4od$2!c}Jf&QPbn1L1TvQm*j+ zFb7TkTJwh$1kVV1z@~jL3wfhB)Xs0or4jS&L0$ue8yXmv0-=RV)~0dSJoY8+`r)Dy ztJIJp%q^^dlfMdh2(XTZ+5oJ8cm%bSBvFZN(ni^~hGs7gxcE`62R7EU z3~~&@H{l2e65{wEhSEdWx2~k#E`9?pj&A<$D_1g0of0R3qqmn!t98|@J;6W<@o`q9 zf~!gSNSep)>GV89{RvhoQ`~l29A87)6xui$@AvbV_t#!5WU=6Xar@){HQvU<&H*a_J^NQW8q4#qbQB5P`V_6* zzi9iE!3FAKPLa4^cnvLF6h_g(+c^HLaJ6fmb?~A>(4V|6Aawx8&DI36G$k%`Akd6h z$F@I2`um{B!W#DSOlB@RoYV#jj!k}bk?^(pWwGV@@_d)M+pdr?PR+7D9r!Sf#*nzu z)u(`Ph~b0QvzG9*`7WAjko<)!qe&%E*^gI#_C6J|m_8)Nnfd2==KM?88^XuP3`%b3 z_kRJn21ohAd}KXpIWP%k0?e~YDEI1XS99x7sVk_PLN!ZZtzq<5IMotf{qy#)&(!?Ro?eB&oIm*#ViPk05uTZ zpxF`cxXh(yUPoyDq6Y1mHW8I%r@%5AVD=Uoj24Pm=xDtxS+aPop6?%@#5|14IElKt zH1x1cV*eRZ=iS}QFum>jLtOX>lX$pn98c%QE%TOR=nuCsxsyn4?AkF6c{lu?EG4fW zuc@nyuBj=^SxMCDs@e~gw22ok7~h5lVrw<94hmf3860b(Sg^GuMfK&<^6viIt2S3Xaw zyp^Dli0A@Dj4NB0;Y%GiR`mA^4GnfR4~_D32?%!gG3QLdZI|xnlIVxVQks-yRZ| zZcH8De=!ciFbsv^IXMLvaAiAA6Zb4gC{9w;sS*`P+@2s-`o{MUAK{qO%4|^u)>;h2 zSV65C)GmUORZ2$p=&$Y7Z`*M^yJKVqoPqg*X<=C+PJ}7oc+=mCI-}6HlBa=^3zl1> zNI*piglGlDp|++tN3&ECx%<91d!K-WIfgTE4a7j<2VN)d{Ri%kH1?O-O&#%ni2wiq zc${_3F%E+;3`XHOIYlpEWdAmH!zJ1SbV-0nT{=+iufoy|z405Kq&-*RQz}BY|Cy@7vzKO`DRA*eKUhW z1OyQR5r>47NbCsR(Wb%;;Y30tE~1oY)O#aQ?FDR%){xTLL&-_{3XFI|iN#8RZisFk z)B)V7sk2|^vApkp%-+QSo_+z64hFFxZ&kujg)tWdzgfvMO4mZ9k(3G#6_FTHUz=2t zkkFt;YHg_#xCXuI4nLLw+#K)n>iWL?x=hnJ$9LdqW5?t$Y-T<|oHRX1+l zmz(r!_wF%!1Q%5AvT>OYtyaNh>qCrF*lo9Jn*NT}vl?uFJLI6`_@YEc;@B!{XBR?7 z^r$~5)4R%y{pLj;U(^@n5ro&5!a(ns*aheoGK4P*iMT+bY`2w*GaN{H?&J| z^Rs>*Ki^#6)|8*X*P5(>Cpp*!IVi{cNca*e)~!}0m^Msn0a0R;nBuZp7h4PAR7{FfX21;0Z>T4hlh{NyYXa26m~F4AH8QaZbJ7OV zy+Bb$kfe&fwN4b?{nKytvP;`hSR+4E6HY|NS)a0xYP{FtgU4XnKBR)sAh3Uw5n5}d z;3A{U8qW3N-(ft^5$9vnkY1ohcND7)c0?FHG6-^mrE7t%Rz$KlbPVU8>-Fol{$b^S zmCP^Lz1~%^!iv}-i*0I61?nOh%5e0gT)C%z3vcVjk159Z3+8xc%m4rY00031P#FLK z08sz{0C=1;Gynq55>6unBO@JM12bJCBLxF(qzl@b&SA`q-tXht}S3c+Vb zAh^PaQi9kK2zC)E`Yb3VSRX3z`%bwDz8`<&!<{qr%$YN%&MtfY<~`5fTv#?}!0If8`W?Rw_9f(U@Y=QjPnnV)|GejPz54E+HrOxF zTitS2e*FI4*?RTB-ZmtVFn~{W*&|uigNCKhfva4e__>m0diB#KYA&&0e0~3BM)i{Z ztt1X(p#*<*ZU40DBVkYczXM%*^_GEl-Ecf_@V9#P`Ah7ANcH;u8P&&&lH!Ag{i#~zQmV7Z<;LqrH(gL1BByOPx?Xb zM$j8d@bT(D&MK^)k)9a8_o}Uu41yr496;!N2P>!gU}kE3?v$4eu}?v7Bp#mH%p>+F z=#3`i@p`3Qtvpe0-YwhgE@BBCc<0mSWW^`nzFLzFeBOjsy!70HR-%67j^0k$ug@31 zV@oFG;Y^@1x`_M>-#dmRzi7#~0Tf zQlLOMe$yK}Rii*K-t(<8@!|IcBk_mdk?aE>q4=}!c2$s2geEOEa^kLZqZej8^fM zM=B+DLCy)SsqnC#9$)?S#j4B~PROLwwT`T~>)V*Yk8B_a^2ifq)%%WFG|!=>Q2jPN zySn#D57lpQG>>oiAw`ZD^vCF{6-Mj$(I3|crWy$PBMDh_c!dEz*VbXhUpU@RO)e6N z|9oZRuk;``3cktp)}yqn6kRqDeVrJ5o~I@SN6n=Dz^E|&B5`@+1u4FevAsiHuH?RRQp z)m#E0%;oftdIlTf)_ST!e=GqM7jdRn-<_Mx;?1-^YL>uHYYxburJWouiQUyBf!!si z-E2gX<`NwQasF@=D$}*r?ADgrePUn~2C1U6qiuE1SG&>bR$AhU49!CYX_|{(ZKYjF zd1tiN|14*obZv%MU=TaQsxq_>?5_~jw$}1#YAZd3_yia_OcsOVW(fzLC8X2L4;-ynQLdIF7@R-si%@N$)`m?jP^j{U175bHjrN{ITr}uq zOWJGKNQ_4VQK~9)rc>RAjuuqYQM0JWU7)p|^R?_1*;;aAxr@y%(uzbE{;)sF$4IBj zkxqB@mUn?hhn7PXIa-n^Vo9AbN6rcZ(Qtqo{MgZk-}MyMzpGZJ#tr-Ee0N88F&g`_ zn>I(SDHy;;V%4pv>_x-L=6bbKB`E}bAT1kW(uM$#(mYL1Wr==mfNCA`VZ-_!bhKtS z2DLnekzi~^Ol!+ti)iJlTG*eEEvivv56xu$9)NI;=nscU>#cPXtm^DgtsNCawB}TC zt^WmgS4rtcUpKzqI4=&S6#7?0+LPsKw z0^p<@tGHZCmo(t>Md@tZ$gKYD{Ur9(71~Hu+ZSeMM{A=*rBER3Wn;%_V+1S|i1^uS zmhDjG;pL-0`=KN0?J9#a(SP*qE5@t7Dr|lH<6%0p$wCpvbJ*$|eT_lGNNBjvL zXic)a4JG$-xY*w5+I%_1aMVwWUpG3^`kS>R_TWq{tXf3937u%^>qdL3yu@MAzUi15 zj)j<6vlW_|$;(}A_)S_wY;`aUO30-ddF}$X?q(1zpBV}RRC$}$S+r-xw`y04%?(B% zS_z4$d=3sO>L=5VC0bjmx?O8Yf6vzbD_TdqK3dkt(MgUz^+~M*6{Hxg2!mcpiL3Z= z;Gc=NX?^Is6eF2UzC-gXWcz%$uNG8kg*0gzHf7ITt+Sj`#2cgeRazH0CGeGN<@_Vy zUb)mV#Vp|S2~b74kwVFLYG>qBd=Zv>m$pi6SR}|c-J^9?Ey2EXsj$Wg&X{2~mjh-k z)QZ$p{Go()jo=nkTLKm@@Ckf$An$|V&(m(z?v?+$XayG2u-ci-Ha?(*R1dgKTJj#! z=)rbP%+`_op4z?ZO>?ZZ@un%7t2P zb%o`mN!5A=mED4Q%zi|BOd=~Bq?#3~Ylg08st$p+dQ!(P7>W3)e2_!Z1_@joSq~ic zSq{<{2xZ5H#GL<53sb2+E6J(h5WvR)|_h&9}Zsj{P9$AjdRxF zp|V$S#CONFKh&6kAbW3N*l*^WW1RR-;E_An2oe!FI;H0>Z~B#!c7VXhADq(F>@u9-L*z2il8r^k{@t z?$N5$P_YQj|H#Opfv@UGtWCYvUYw;sNU*5|9~rIb#HC%1??%htC7e$eysf@y9h(kOC#T}&P)P5B-5jB$m8gtk`Fbry0XkkJe7~hoT6p|4vidRt&dX`7vBpLd61BS{~Qhv-f{Q2eKqe zB|mf7=@gFL#jgU(Gp0e>*>I5o;fa^cJE8q95FCp{>F6n~P4$RRQ@DhcO-p~`64oh* zB(LuWOP>EOu1H?SP&Qj`XbkF6-=DQ?*6g%R1+i$9$`6A6NB*L9RkfmFIubR~sD7*? zk+R3&vZ?524}h{}?BuW7U!pG5Y#(d*UAtEDMsJX_?VWGBThs6};CWU5Rgw&}caF%a zvsxDW?oVx*#I-jVpf#GFOWvzZwOqb^)l1S$w)d=7Xm{#MXwRD#vexId1*&Pl$I#S9 zYb?y#IP`l2ED(zY*?OlgRYF)5LhPueOMMSt0eZ5To+D4oy&k=}>dzZwD--pW>I)al z%PsV7La`4*MV6MGnUftEG-MG(?IHEqRF@213%U2o>aXfsGkjI5`G&aUyAI6aK6t=Y5;{S#3gg)jq&LfX(ucd;8<=~6BX zd2tl8X!1-~F5TksrRsj^(pYbs;A zJLnTs%V>yo@2Iy>ok#iR`#S2WRNF7}=$pDw{2!_{r79j3ck@kM%p z8sFz*m-hzMs4k#+mw?i^$|R=4tJC?89w$8s*3(EjqMHlK-=CoOrghb>mh9aUy_wiE ze*p4OGHopOq_R_eb!dEIlAzL-{dHxB@JGXJ%EgUyfiAgZkS+yCe*jWXYg#r)Pp6V0 zy2Y@BUTV$(Y}8QQtA-J$)Hf6xRR>j?e!K+#!$!5Ek`W+4l>II%a%)^Nwd{lWd^ke? z*e>*8n|UE6&j2@nuS^e$Q9^#0I`V%vTCtqV^r50Miny)AH^E4U9FM*q8i}(Ymj!;j zf0RDY{_?R=V{n+cQ02#s0pY8Bs3(oB9;f$GvkpaYG4VpGmeH?fO?B)VQ{B+@((65Bml|3%<81o~%h{Y!`NhN1Blp^evoS#f=w z>)N#H2JB~_YxEZE^{e$$s+K>>HeRdumB-re=eOAYjjmLxn1x#m7?HdKO*7c&>-C>h ztEit1nW`VQzr4&lT?fgEaU(u1_J#`qy?Lq!V74!Dh_WrIH*Bd3~t4>|NB{KVO$N zykIaEV^s_E@uFQYdKIwPsW5w+S2$jutbYV63>a!%aV?iIwzF(Irm_G)D zUh$xsygwERLz45(fh4znk=|CU9fd(Eo&!lv7#hU2)9{eqoNAmvU&CVTPoE{aynFmu z73;f9x1=T?f!?-eIjkf%Jfe3JGxbMd!cC>6kAY8f*?{d@q2DBjiGm;(KL&=j`ZLf9 z1ja(yA_f~lE84#bEo$8uG5iAV&o@`<52@J&V{~+`qrJF2s%t;brsT);7L>dOdm4?OUaPVSk0#h8nP4LF*BS02`VC1O5N4-zKL3Jr$>DV>3r8 z9hnc!^zbu!KtZA$VdcNLGK9&h@ALWzc>p3X6J&8fCL8ghK3H`PJ#^Je`WX8w$j+^| zuN%nAIKEnyk;+DI)DMd8Lm^yqt$AS@9oc1C3_@N|p4E^qkWkPFaZ|&c4kz2PN%7qf zjs`1yRliOy5JE3owncwYbsFG20i9;CiCcB4LZLwn0+cA+yiK1dW*7>Aj=(o%%pgxs-gBmB(KCN}nnx9Q4Lm z{$YG6TQe6mV1LeL8;60#Fu|rX>swtK=>mRG zT`sr(=COI-*`vW6&rW|2i9^W0*tv%9^^6s(EGK*Ln35&}epn?>{ix)t0B$qLSNk?t z8EoEh;9O|iL0pinr8V}~6Z<h#gI*!gq1LW}Q;I1Jh}Y?Q5`c&S|A;8g%rscQNGU zKidLKI1rHKb)Q46e&$m>jS7AM^RKUWq|uYV>Mg0^Q{3&fe?mm(hEAIFtNx)tSQIKl zAuVeUadq5px)Qvj(B8Qv6|%BUawo#UFf5PhRL~yUdex^Gef@tGQvBgikQM$33KF{% z4u^1DxZ#ppB%SQ7zw{Xj0v4Jf&531a^>L~YB4C~{8d859*K4i?!fANV;U@1TV0L-u z^>(si1on8Zv5G-NFz!)>u_*WvtXqZbT#{j1^x)Uar->ezj8K@yYFio;W%USdN%$SO z`RQyD5K{RYcCIGT%%erkjh0l_*62VLFlkfwET~z{e%CWs zxsj}9k!C`6>IE6bn+3gEbS0`_8e?g5rV&$JMRDzO6BJ8qWn8LO8TKW#rTGuTaK~54 zR<|~;ml%yeW=PI9o>uiD5zM1@rB=Yc$}w(Hg+Oz@G~WQt>1=79LS7&kFcYLs6E|S&>;F1i9#*E{)^i3Iv&P z`$b|mj39f#++jZNXXelkcYq`|6)R-H^vsznH$1RTUSqQCKkSXNWjElMgV-zIbGKm+mKaizgGL-dn>c$%FsQ~U(T6zP{bg#>SqiN%f{KhJeaHRMH;+onY^<=Pf zqYZhXp^z_i@^Ukc%@}J)?*{HcjudEEY3#r_6!IlPlZvtK6L5~wL}%Fl=Jujy&8VdP zzv!7%+z)ra(t)04?8HPvQ|rU#rg60?oh4Qn<*E=A26NgOoR-@sTAYpuTB~T#t z5XvZ2gu>C#{Vu!87^^dBOUI^7Bh(e*7jK86=5JGE#P)68+so-W} z(__IPyJEVH$yg+YlT@)0Cu#Q##fqRigjuJVIILm^qHs{aPYFeVJ$<9%LH-y}k=>{Z zn5HNfRiCac~*0qeT_zN51yZ`hKD@N2|&o`=uaL1$mmgw+$5uae}@_#GIbb-XlG0K z!S9%7NZAuc-yl0bAFM&_O4t`;_bvec2(`P<_>p%E@z>AN7aED8;|pR$SpWNtWHB}hqcrvb<7a;GAOr^z zEH0x~-f+{T$(2-o$S9!s4;s5fZ$9v|!4E0I;;|m|_#$JQ*jS$o@AyG}1Y$H|iSf1k z2!~i?siCw;L@)4=jaOkV&U)C$l{I8&#(u3IC0ENb9*;r6YGboDiGH%naK;$IGTLaK zJ2cK6@b4okKVYPBtReKm4#!|OE;j~h+TXNgh3ZYkS{&7S&Ay25j5Dl@s9Ae7-PZ)1$Us36kMy?c^ zo1)fe(UZn$?N6G&%5DRz1;p^yZ0jl`Q}bk+YDs&VmgH}YgkVWE#ym|6(&9C8Iu`~x z>{(;9)U%tN-iFwTI6zhJ!S`EOWNd+dVg{v*6#o1Pw_q_swlINjl< z;DO<5jY~97m!7JFCokyWe?kWiykw+m+9h;yoxSKr_dgY_H@?@drlbuvsL|C=Z*9aC zapMNSucfiIHvFGnf2yrDKJnb$Uri#DCVy+B@x=yVZXo#bbJ*J(4X@@|V^_Ia%=7t4t7qrtfbF-W- z#QsJ<{HD#u-=4fO)h^Q54q|_Z;E^w)v&`6~^`xDz%FzPch5qfU#(kPLnx?%b3!xVX zPx|NDHoE?GyG%OFk7@^~a;qHq0@pXaxWni{4O@-5+8;E1n~}>G|3BVtRLQ5O-!QVJ zxBJ{S;|4u%Jl(Ke?t2jNs$8zDg6<%y)^9heJr|Exi|Hg5!wCcx8$H&j$UIltb-G+o z=YM?DqQ`{?LBvP4L*WpT{`u_?5{#X=-|nX|JJp&XPuo7{&HurKKWMPq2%qzZJB{nK zXX&Ch6j~zE!ThDRi!Rz_mr4Kem)a4!=uNu}D6M$Y_|S9Ko-EiV=twT8$)hXgIp@EP zW3ED6z`5;^>o)yt45blWOskomH9_Iz%cgS|jK&Dg-dvjUw(*@7q0)Ecz)&g>ruQ_I z--YiOe|bjQO%FF7C1?}2o0sa|HD1?d(jD)q#;{XykL`avi|uybG!4mZQ7^oYTgtQ6 zhJJei6!+oxyCDOBMfcgGNHx^xRi)ea7_WJ*SgKZX?1F}HrjFTb%;da!_da_f;pmFD zVBv7ohv!mUm2hJ+xG}-*Z>RmAtI-il&3^kFBB4ff$pO2NhYcLV4uc;T)5=j0@%9~n zNb(Bx_)^_Yu?tkJy95YxwUYMvCUS(r)X%pshbd z@EfMnsiVdg-FFGS__e|-0*%?8uZ>zw8$t8_W6v6)bx-}r*reS+qrX+h*4yL>T=)cz z?WS*ywc0|O{GEh@#%-@3)qH1s>Uri8wbovZYlReOyZYE`-y3~3?G5_-2RSD9>k<5V z?TNlcyb}bdWZL%~*hiV^Nulavu#6lg_m6V03p{)jx(}1t@)4?6{A8HaXO5Xjcm8PH z?D^ZCz@kRd_XnaOf-5hB{vZre_LBj>@?gq3E|CG1Dnh-E8((W-DmWqMCERiYP8eLeLhA3prxnM3nAKiW$ zB(#va|7@?T(KSX>em2%G}6r|prJ zHJy$o2N#|F)i|rC4W++-lS{U}S#NoKL)8@Tx?qYh47>j@T4|nJZ0LPW-8T8JX#9VT z_1bsT?2J8GkUiW~nKbYWc%m^(b=|*_BDp_`uKCm0@43ka_PqdzuuC|e(&^>x*rp|a z8Ar9HH1luSdB~58a{1rJx7s?IbJi|{0cG`Bum|mZ+Hg*hho$c{$6imN4TTNczEYZ;OVpq{c4)n+){vcF z;8bG28;<6h=aAigV-s%SO`?vbc5?f+F~B+SBYWK{6}<1V2bhb--+~&67k$ zsg7%?;Wgc<>szTNMa~=wrR~n4BPotoJYU$uj&7nvIBIB1s$;9?cN;kN0-!%g@YH0} zrZmR}PwGfD>+wyqZt~4YK2?|QSnBcG6^~Z$|0bQy$Z+g$qrv+ZbG%b3*hVB6Wl8rt z9#SeOctReP_Ox>8<);zvd*A^_s)9fS%cDMhtz4G+kfV#Ou_6VAXEpe!VzI-)?pWkd zE(>l=>p)kGu-daTiyb|sF6)DTr{_|~2K&p$PA_xFP{)8T6i&DVVP01I6(cPdEqcU} z&u*=Dydnqk1%v30L)n<+c6VNQKptP=7$mCreX&>q_K>@M8b(=&BYD(O#7Z7@Jg2}= zG5i;R3w|~obkjjcu+cTtl1*KSEG&T)U&znqJnoS3pXl1l>Yi{MR6SuX?P%gSt1Wp~ zW6>Y1as(6v=8XsF&?>4zfDW~_0%p*n^kE&6Xq)NT+>=)v7caIHUst~NjI zm?R;7e>7nXhxBEWo^|X~7(?K1=y`{d;UPK1v&#+S2BQH7nO9&T?i!Xq<*E^*93~3HQ#6rVw6`=UdW@}n}DXhRpZnyfA zyVh}741$PQcBLG~e(2JtobW0TVu&?i-XY-?9hNPF{~E_U~;j*Hb&5tm%Q#c_kI z=ZDavAM51{-v25CD`>%j!d5X;G{i|TWKs~n~g#qW&lS{7iTN#U4yAV zxxEn*3}INLJ|OmLt(8XqehsK-@Bf*Rh&sk`lMM~zrxFo-CV z{C8FNQ2qHS*xvwC;O?DPOZNJE3QK^5vC)kXsu<=pS*P6&86^v=dx$DOLcRc;bvdl& z19eJK9>HEC*P%Nl?}N*{`(B6gKE)7$IZ-;}UfAbQVU$rIrJpDy6t=D|OLEfn1I#Rz z^r1sV1BC-ohLLRRJ#4X8lIF#M$os@0Q!tRc5KR~&3JHaXFdgS?#;QJZ+$C`64KSK7=5D<~LijlLs6_1j66|jM4sbxFwf<3og?A zKUOBEV(2~pvHH>v2OVEYqeR4;a8Z+EkQN`t7BB6EkVN+(hqP4&Vj!rCg^Q5jB6P5& zhaF7K5Xwo{CI|tN#^xNg8Bqi=L(`hPgS7p3&|LC2j!YGdfCQh4{{b(rgFj{Qw~ksh z0F3`8YN3eLYxu#j&UQS45kuA|;dre3(IGupa6E>Y z@3^Dhc0=N%@>(Jpq2Q!L`DnOr{jO6WNlwx*Swz^+4PZp_3%1qKKRa#`GlRu~2jY$W z8BXm}zc`9yA^32@WbUa%u;Cv_n;HL`Lqv?782}VRd=tK)KWyZt3O)W`^1~ z5bQuoDljjiPe>eMl4FIZn8bV*4+e3~Yj0*y zhk@{1_DC~}2w4FstfrkQ14AGN$ABvCTyAWVs;C4N2^9sE{KU^BqROIdXOSrr)`AgG zV{hStW~Vxt_lp$-f(UAy-^CoHzQ8Q@bTwr#7EDBbR#9w97Y@FHK=|>I?zZfQ?q-Q> zfKWBo-DgUVE*#EY_M#tOe02dX%66tzliZzHSZ%OE85*MLv)vt8L(Ei{IO2;i7Zet;2YZ_G@(P6Dq1b&KPt?Id4>yb@UI7`Y9tO$;z;u{c|+j!fP~9A z@1GenGHLTmV7%T@W+zs6xw&4{fa4v)!2he^AYe*Kfd%Wpy3oo&$992d^u7);9VKH; z4^_nsi>8e>gjaXx@Y#18hZL)QV{jBFjWO4WIl`qM!g@KF0ep=r3`c;O+AZ+D zZy#?eogfyDAz`nU0W*J3G?S>H9;c^n8yGht09ve=V78UzD<_(ti-YF_^C;uKe*^^t zT+QjH3NxGSon$^Iw<#72usbFzI)=F{jO|5CKrtm=gg_L06cGYp0GhG$*O)gc0K}XiEvcn>^Ken^rhh0U3Z3xhKNSmFF^+dQ+k z8VMad5(GmNg%2#S&mJW2gkd6xfsWh_meS%bbAzf5|8h`{@_B`lv%|jrnQ;W=Y3THUN{RjaOooHIb<6`Lh5jAOC z#ZVA9q-q(qC1V-bt604s$X6ZR^l)QGi16r5r+Z+2BObw_6ZaOby!IlVopvwh|EqDi z7@!`7Xv7*$T5et`dksMl>A?doy0YI_m?|ERzYNiV7q(|LkE$Cz_jC` zyIiz#C6?4_r8!@8i=bE^+wi!$HK1+r$xayLY0dgPsjh!mP5BLmc#IwTLqB^NsfzPE;QeWI=P+nrW>51#^i&1;Q_4K)ndR07P*IT&cM4c`P_P`;xg> zA}t1^Nghp~>yg$M>iQ6PLh{{+(s?otl26@Wz9+UUCKM0^W^`f6wd#(?Hb&UQjpoO8 zS5fd&(be`iVv;N3;1i;81ky|!`tv?dA=~^4?jUhWB9Q=V*rZOXKMH}qtBmTH&VV0L z1wt0v|El@0=mn7+esDJt$+7S?U_^8sg>emJi%1TZx79w!u>jXGMR*4aQ`lqMY#NDx zX>^sb99cW;VIoMmnOkR;smVg_#o?(l^J)7VSjO3%rdLjYBQV+&&_S~|dD53RAQ*Jo zE}P+mpm|^M|Esj5(QlirSogP-D2oV?C>Rru0HKC02iEbl|&7Da4)^{ff<)n zhL}ILV6Q?8WCVW#+!H*;{QN%iMp-3{NYUH&n~fnTF|cJGf{G@*`6Cb;W`5SV6R<)Q;jI&7=Jc?VnDYy>gOmxpaPf(^ zTz)!W=CM%+%q&^%1BHmp=Se+bP&^uyPtG{Yc& zj-C9*>?>>dpt^SxkFC(^ZxN9*4twCCkjKbh^>@gL0sRgSD0QNN@b%CPsisUm-T zh{7y8VfK?Nk-Dw5o4?r=4>!K*$^MrA|R_z^R=ADT4XQ+0{uGj z@n?>+ImR}KHh$a7R zO7l=Xo5-6X&2gNC++kytse|U6#*vCT|+zlq(1X;TVKj z4v)I9yEW$!S()3=ibWxn7|u*)8BV1wMsSomO2`I>vn9LL;gseROe8=BE@v)1?nH|( zO{X;VqCCh@exvFcTUjJco0V<^4ZmeM6%htQQG{2E$6(4l(ByJF&H~XU!~^O(NJzIt zXDXZC%qhtdDv}qA;%(U8MCV+wi@^YxAU|Q%eb1+|>svT~6le?bT!L}QYF3CQ^0Jzi zST8>u_=4d)#VJoRzWfAO8r7sZGgxIB=D}-WG#^!Ug(YlVhO;$$E8VF=TK$L%6Xlhg zk)*mI6Dlyybuumd#@Ui;v+<|673`r~Go7b-kQ8P@E&b^Ey;e?{Hii-qUiJPz(r9WH zkk=y%Naec*04SdWSXH)~2FjvTmX9}KDszFReL2o7m9P+`^6n_!lZW8`tURYu8F{!c zs!J0$8vC%b{4pGQyb$>RvOw)DAbuN?+!m0sHcgNK*V=d+K-|>4oimBO*VZXjVKfX9 ztj2gc<#oJ?QL+;3ZeV*gI)Gk@8~#!b9qE9MU+mzN7bkWqz?IC0;ah0v=Beo|S(LO1=_UtyIwb=R!W@o$6Oal9>+Y~#*f&YlVIN!E zTa6hEh5{I~ybJP%VHeL}ElV&aXL~?4Uhv^;Z$V!WUqxU0L?h~yE$!!&k{%WZi}!e7 zux%~r?M4(L=+bG@!>NyBIxMrZUrNl?f%OAT* zXL|=Z{h|c@gbAZ%(7r*=MAm7r^JaDWVNvfS`#|O9^y*M&BH{2Q)98eM^B>RUBYQ zlaUMpgo;Gaa;JPc2VedKyw%0?YGz;NoS_=PZ*gj*Q@vLdgIk~XN(En{+r^_AyTu!1 z;vFMo-#DrM5Dv>9S14ixy1WTJxgEa)of-?z%>6}GjYgh`#zUK>iOjtS-@T5@zd*mADWeUlNx&V=+Q}RzB^{gq_YUOhI4}G1Lfg_822XR(#c9^K8sg^2>8tXNO}XS6b~Xjc_R*4#f?C^g7|TO1*B#c zF3ux2DUv{&0K+JEih4i@SJFkjMdv{spWmVm2?kj*b>lIqlz9*f_+H{Y zNhJQxcU~+e1@mT5Iv8@PW`VN}+g9b2xiSc&@G9%m-I@g5~^020BP1;l$F?v`KfwJ9MC+c~Z)-o|@Bc6HK1`^t{O z_E~$s!Wx_jK8Ww)AtP=vr;>-97MuQ{k`rLMhx0|SvfsB@ z?K>b5c4UdOhgeiF3jL{YnNw<%_~N1wf6j>3KZwiFTaA&9Jq$bx{6`^t2)7X)Faok3 z0sp!35&Nc$;)1AM?o<||7$oQJ+=q;#DZhERMTJj0&#U5~ zd`&X17Yx`#pK-QOlL2Zgo&^Wv^a2{j9sQj10X2Il;XW!I=xDd1BQ(>R7q9}kEU3mI z0iYRcooTGwTBp=zVYlZ_cNqC$>3tCB+whW8n$H0VW1Sqra@IRbMMuaBA0I{`c3b0;pb4rsRrYhc;8j9S>b=#ft zIS8x<&yeg;asg)PhlvEQ7-h23ohVcTA|iuNr0h*+4twhjr_9+6Mv=F1dY5yH*giB3 zu#Imy7s}0y;vJNdcWm)18t}6xe?}CW5=pg1O&OsDxxU(!g^p(w4A!s7mlGmjB4nrUsIMkI)y}!hw=O4yA zRYR_(iaPmo-ASzOh=PP5pd*7$jPvtR=VUc4yegy$XMO`V$omL{g_CN*dm8-u--00= z{g0AOVJwV*y8@C=-M$A>FaOS|JYh&I<~)o;y8Hk#J^8)jVQ>*~Q4B9QEG9&tO_s^6S_6v5y=6IPyWe>ig} z8iq7=<}(Of$-ltW{lOm)Z&Tlfbi?0^qJ|SZdZjy_bgcZtc|^_)eCUe*I#ud&6q@zk zGtO;x*CF|k^M=2%_b>nDB)J}BSFy6Q_O%HE7F%=9KIS2~gSe`^e6=fYQ)`zxTS#(e zT{M?;GQ!pxV-M;s$^2ng^RxF1*Nt+SKCh4UGhI?R1I){waJnuRr~(RL(30;}rCF}d zq7dFR9t6Z6v7-7i@c8T8u5#Ix7gxbfk4v&n)C)tx7WKL{heh|wMAw_m`3?XQ0rM4* zX4!a{W^9(rw(G#Mi6D~C@V>*d*)D0xK+snZ7X&Y)AzaSKBhd$0}KiQPdi8LMyWQW~cZSnS*0C9U@` zH^8(-XNz1}G{4Bzf_>b?5e!L(-NH_f;p(|Bm`yaB%uvN`XgE9~jd1vCvoh?1EpmP0*$E zRgPV327i95E`(=Y?hm=t`QjV>R@fyYkf8K&i3Kle;nA=t>Rl04`xC@l>>vU0*4EaT zOUlAyW%#BJXH(FPAc_aNlir*?F`NUL?7#x7uP18^Ugi zVRJtMLp;{UCCyNPa9_ND%DrB|& zfKhRO@;8gcEi-d~E0>+W911 zn77oXLjLx}6=i53rVp=>9Q@od+;=aQHx7<#T-Y@gNd5=F8JmGQ1Ka-xVU7I+rLNfTWr`*eaUQ?-G0P>80>CgIqnPI3v+6dl7G zz{jhsaKR>C;d(*h-;1b-^OIe>?JqcI{^gRdd!bE${dTphLf!&ATf05?;TEuY*Sb2& z27cIk)=hCeDA(_WsNd&$mrUme4-K>DZg5>AIU_gqcjj5^ty%YJE-9~u@M{CO(s&`2 z&2S~Nr>DExO5{S1o;cIhi4Ird&{~x)mDub9C!aLa^?)4D2m4aPjg5Rc93sF9==_DyY6uHwNVgZrE^`PLZqu=;ykg@RBJ6av>Cr-+jKTy0qXeIOvdaFoYb zuZ3WO@(UqM^X^w?%8$5rw)O#VTnP*LHb3N2W&^mt*qBA&+?+%aO%ju$borfdHmqNa z11_5I1AB4_+K9DqD_%$L0?(%D?SSA}%P?cnp4;NZnQK|($!G6Aj58g8#yMJR3Z0?L%MzpTldYQz^v>W!uz?$n)*hN z`QxrO3g(ZotDbQAR3E@+8~L2u)ClIi>q#4V$hc!iSGlCw#Sa~yF_7t0cY7m|w{PH<_{`~Q%GtYxL zOIicxYbzgi+cym15CdOCzhXq>wn17D@4(Gn3o%L9qhR$uzYe6nayVx9^-E2CMmDdv zPY#!4+S1Zm+{ddo;Al_VfG#=ukv|`0i)$6#g+OX--$qcHTp&!UMdBSd7K`Je6Aj=| zV{>0Y$DCpiO@`-JI60pjj}VC;H#K$(i+D4J9TBzs2m==?UeXpn2~5W#~EeRjFV+FxN-^QICM0pn3l z{N*^Rc-xi4y1uO_0bE{CCZ3O@eJ?=SKXi-7Vl&@STLFe1V@uw3DMLgEp%%&StJ@P9 zN)fhvw@W^zf-k&W@Bwa5foc#k8@d-l&>dE!EPS@{KH#;6|K#J*y;5^Ot zt35(dl%eQm*$p&ew)-Pn#zqV#>+*?fwmpQ8t^E`el|w-H6hF|i=5tpzJNB8v1Ev*a zL%x8VD^4t4bzzSmPOKsXu>S*Gcj^V6`K#8A@L;id1xVj*~y!o>k04ffokxZ4megGcY^@G8tL|7Wxj+Y*KHRQij} zee&PNy@C+)_ZjS|q#fM%!l6EC9U_Eo`U|yGIbJ3g7v5Q%;;nx}JQXK01eVlJ#&=A6 z8IP*`3b2Aep6@0hc#+R7mG&j)U2Znyyi3{7LZCWTr&6JMsMbQ`Q!Y!n zgkh?KEm=TnJ}?v6B)28+?@$Q$ca6syr51#sodVG<6}$_Kw@I{A6au%)3bAoPb1RFD zX>JwEW9fy1XK@Ql#W8tt|8GsQr2Yl%FviX$Tb=F0h*;kgOVL0K2^^DBt!{E${(3_P z>V6-RQr4$g(y)VgT&`U5_x?6#ScBzoVIJI&Y03C$2%sVMWGm}=*+~$57*V&#vSHU` zSsU!a2oTB>Y*;AAI&2qmE;y;3l~3pL5U$yqooe{S{@u7F+V^WW1UcV~IZNh-!`ul``qH%Lp_T`k+tpEFYE{vbKww z_?@B{GKgB+CC0`yh#yjqpA}MC5+&80zAM6$;dOTR+Rjj8_(O_ z4{dnq{f@2@Q2&v8Cf>@kKINDQc#-!uyr*?SOc!4v*0+~+Mt=Da$(XL*7 zE%_#NzzcUwd4DX7BOYHN>@?3Dr1eJ;#k+4HBB1yT*!GL9M^$@dwoMph$rm^S&}~Q? zW(C-h!B&=dg}0X|>kr>}W|T ze*T(bsfegyNEB?Y)8~sX6=T#&kqhW!ug`*?!&ibhi>*kEXV{WusQNfp3*RUiJRxyOE#vIcPoV|SZrRJGD!Qu1W0E0tYm zwV?COJy)yb#2ViAHw0-Mnq(!Dx7c$D-8~t-ocfnN2JWZJc)Fnfxl@xZot^+xuynjp z!&+QrBi08Rn|O^Se~1T8wg^I88?yuH{B_956SHe518LN*ci_h|UUC!(0K=T5nI3O} z`LW){c5L7EK#thz2m(Nm&1UBt(yH@NBAQRLeo<}atf?AZe3PopHRMq|$S1%~+-&JOJ$AF* z4?HpD0z$R3aWpD@I2vMYBA-!~mAhwA}C1hBtGn0DV3kndMB+hTuouHKN3z3V;p$yO~ z#EC*Xy#9Tk)k{7wj5NYS$hZ_Mg2N%4Fj%Hk@&F!sX%V_y`j#h1-q#!<5!55g3f}hI z&dZXibTfh@?aB-JUIzoPg_X!&5bcvhTb988TeaA#Q{y9szVHR$tKcCkWyLb96O~@= zX+^c)Vi)-^o0nNKAPF9w0Gt1?C0~BVR}^QkC0RY`@#WZd!Or@a?i^OO+Fah5NyS2xzuDH#beU8 z8e~Ze==mIXIvf9QT$U1%kPe14_K;3Dbcgxw_GfG+nf#2kRnin!!7gpeN!|RM%^cxu zXP9Iki4VLM4bl@gD^gd_skXQ!%J|!_o#{jb2}NVqBQsL$2*)ke?{vhdb{(MGH+m-1 zl2>F|%8Cuv+u|zVX(oF%SU!0s@XiU&IeP2Fyf0fG!G>W$$BpocVl}Wz<2B>WVAx`f zTV5?T1yF6)$_1|+1yP5722eV8GEhP zk{k|q1r3+%flx$yKeC&^c0WPp#}@Ci0y;hNf#N|igqm0Fw?^pn!(O{GTxYT}p>i(O z?MDRI`LRxm4t!!YXQdx2HiIAX4B)osd9n<7vhwFN@Bmntu*h_VcX^8yG9cVtChH;7 zwwqlT#!5w!Elqni?G84_u`>GbP2YRXYC{2?4% zOpkx9&JLGNka_qYt2aa07>!;(+E|+>VxhK=wts71MdIkAwmJjc(|Eb8Gyf_uymjAM zc5*Tp$1n*&Y)%qAbj&_M1;-Rq3gE}91QJ9>@8+L?2tnLZO3o;*iLVgQ z(%3)S{ufx9pvnkLUZW&Lh`mI2J9b5)`xki^;6-~@-oo8or_WN{D%lst&eh58s7_VM zZgIF_^6-K8B4h_SAF1x+8ZFMWAy7QV{WBTZL(MYXZRv??ap7(I6UamsGJf%=KVnOg zGu-nu%1O5yLomO*sWC$)ahljS9H)glFPW%$SSkkvoso!XLkX+=x83| z6JkAb(3<{}Z7%~d^RztoB-tT2D=>!?;vn+r+>#$6K8Qb>!3$}3JEWKiOy;+8!`sAv z!)$vZ5--Nj(cBWcy|=psD{SXhK`Y#lP%iU|>x)w znzqj3$DThPy}mC{@)Zw!0(6DAAGnF&GSL-7SBW|e?5dU*LpZ`{9wZc^x-RHdT)&l_ z-Jfc7uv23lKR6@m^r6F#!`;}k*xiy}6MblDiaFrIvT{sh`w%Qo{4Sc9NUsz#wXw=f zI_0%Hg;g3tD1Hx(;o0dVon9)oAvly1WKa?y7ou@V-Ez} zn%svN9#Me6z<&k}3C@{pN64KbAra76FS+HnMlr`Dr4Y%m+nuO)44;*Tdm_!h1bTyb zMY?$}U=e`T0)cpv16e47T!uf5ptKe}+)R=`{3yu85|B>4kXhK!)$Ub%a#e$^yvW@} z)`lq%8zCOU=BdjJsnkk%#VgIorfG!mBx?^VEpg|mWx+ym8BdaqQvLw@OmY^pxxagp z>Km!ESI8=}2O`n4)y3{_H0nFpMk{jo%Kw=H?WSXcaA+zAx%X@I*FZ(r+%8x#*rsc4 z2^=S1;70m$o*gQMhnBgtKO+$XRSa|Q5L195jb~a2#VeUZ; zWjD(ShaqqwKfbFO;Gt7ee_){PO&a|+O3oTFL1EklJbjufUxko){!;e`nCoacS0q;l z*^eXL&2)O^QngNQKItu6Y`+4SDk;E*h%K#sPBY2tHQO-&a1HDpsa70@Ng`{EyGWus z425Sfe zvioPdogeZXFQmm+^TW?oRCzyykY>3wXckL=puv)t`Td{(_;Ja}pei)Gj~=YFk%GH; zpvVTNLwgV!JpLNK)9Fx}_`1RP-+3twy07`8?k=ss)YEpOb>(`)dT~8B{ySz+Xzx(cR zeQN`! zT@fS-=Bl#e)7cAmy3c8J>|Przj6+C@_tK(!fC{O+@I}=OFiRN9#%uK4-Ho-mjYQPm zun=zsOt{aj>_a?7t^9s>zF01_!*D`hIr;7g0bwsa=-#g3=NIj6U?;`h!DF4yEI};B zYm3~bPS-DL1P6g_@ytBHg;K%bCegx&-RH$NA|@(~9{BIqF=W|yR8`>2oUy{)+WtcD z_M>j~{6+}z6&Hy-`{nChNi^kgw=zQ|KJKm&eZny6hYZOR?imv9C1*nnPZV?MyT;v} zR@H!;T(a6N&3S%=RjXDI)dJcB;yO2ZqU2uP=` z8$n7KT=6mfdl_XHfX~I%%`dG$=(QI^*))yfuQ$#ihPzha=44l3zihLOeb`Bc6E9;Z z>!Z=BZHk}Z`FysXxsPh(e7>`;o^+I#D`xc;Af<9 zg-yUI?|ZJI!VRR$u2<(H}lYs8w%3LKXZJzt_Zeyy|lt2m=ro$mCdcn`WcrO^I90oBii|gH&scNtyjS$rsf|CA} zReXp%$@|0>b&&ChP)qT~!5stOGrsII_q%HUVO8%XUohzPh5JX<7!xf168j;i0oPhT z>NOpYJe<7*^BDG(`wLYMPY-ncKc=oaE~@71)3Hk<-60`e(v38NNOy>IDu}SKbe9q< zprmx?(v1j8ONi2?gfuMuUO=DU`v)KPo-=pufCK|b zSTNNEED$^a*kIiD2oP-QX1VeYgn<-r3j;P)*q7LMHhLi-+|gZjV%IlP1q}mqtBr+j zuo4F*1YSl4x?7_It~3I`kwv>dfcr2)0h+w+4*r{%0A*C5JN*Vc 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 Yb6m0(21b`RQyn7&chMCSmtIpHv!#nuL;wH) From d5a6c02e363d514464116692c2427664ddec7d62 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 27 Jun 2022 15:02:16 +0100 Subject: [PATCH 86/97] Log version at startup --- cmd/mailroom/main.go | 18 ++++++++++-------- mailroom.go | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmd/mailroom/main.go b/cmd/mailroom/main.go index da8576f32..9216669e3 100644 --- a/cmd/mailroom/main.go +++ b/cmd/mailroom/main.go @@ -48,10 +48,15 @@ import ( "github.com/sirupsen/logrus" ) -var version = "Dev" +var ( + // https://goreleaser.com/cookbooks/using-main.version + version = "dev" + date = "unknown" +) func main() { config := runtime.NewDefaultConfig() + config.Version = version loader := ezconf.NewLoader( config, "mailroom", "Mailroom - flow event handler for RapidPro", @@ -64,18 +69,15 @@ func main() { logrus.Fatalf("invalid config: %s", err) } - // if we have a custom version, use it - if version != "Dev" { - config.Version = version - } - - // configure our logger - logrus.SetOutput(os.Stdout) level, err := logrus.ParseLevel(config.LogLevel) if err != nil { logrus.Fatalf("invalid log level '%s'", level) } + logrus.SetLevel(level) + logrus.SetOutput(os.Stdout) + logrus.SetFormatter(&logrus.TextFormatter{}) + logrus.WithField("version", version).WithField("released", date).Info("starting mailroom") // if we have a DSN entry, try to initialize it if config.SentryDSN != "" { diff --git a/mailroom.go b/mailroom.go index d5bbc2c73..07b691610 100644 --- a/mailroom.go +++ b/mailroom.go @@ -163,7 +163,7 @@ func (mr *Mailroom) Start() error { // warn if we won't be doing FCM syncing if c.FCMKey == "" { - logrus.Error("fcm not configured, no syncing of android channels") + logrus.Warn("fcm not configured, no syncing of android channels") } for _, initFunc := range initFunctions { From c4bb417e18d7fffb39395fd422638307fe5c59ff Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 27 Jun 2022 19:56:33 +0100 Subject: [PATCH 87/97] Update test database --- mailroom_test.dump | Bin 1922065 -> 1900540 bytes testsuite/testdata/flows.go | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index f8c4781afbdc16431997708f65541f73a83b7071..3b07beb527bbb7ef1e6b6815a95f36b0a26e7fe5 100644 GIT binary patch delta 94036 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

qEwEaLC_XA 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 WW}=To3<>p*VEz%@KSKCRg#QadyJ3a^ delta 104576 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 V45<7stNzRC|FY)4to=X6{C^_n_0|9Y diff --git a/testsuite/testdata/flows.go b/testsuite/testdata/flows.go index e6ff80e13..6a3807706 100644 --- a/testsuite/testdata/flows.go +++ b/testsuite/testdata/flows.go @@ -71,8 +71,8 @@ func InsertFlowSession(db *sqlx.DB, org *Org, contact *Contact, sessionType mode var id models.SessionID must(db.Get(&id, - `INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, responded, created_on, session_type, current_flow_id, connection_id, wait_started_on, wait_expires_on, wait_resume_on_expire) - VALUES($1, $2, $3, $4, TRUE, NOW(), $5, $6, $7, $8, $9, FALSE) RETURNING id`, uuids.New(), org.ID, contact.ID, status, sessionType, currentFlow.ID, connectionID, waitStartedOn, waitExpiresOn, + `INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, output, responded, created_on, session_type, current_flow_id, connection_id, wait_started_on, wait_expires_on, wait_resume_on_expire) + VALUES($1, $2, $3, $4, '{}', TRUE, NOW(), $5, $6, $7, $8, $9, FALSE) RETURNING id`, uuids.New(), org.ID, contact.ID, status, sessionType, currentFlow.ID, connectionID, waitStartedOn, waitExpiresOn, )) return id } @@ -81,8 +81,8 @@ func InsertFlowSession(db *sqlx.DB, org *Org, contact *Contact, sessionType mode func InsertWaitingSession(db *sqlx.DB, org *Org, contact *Contact, sessionType models.FlowType, currentFlow *Flow, connectionID models.ConnectionID, waitStartedOn, waitExpiresOn time.Time, waitResumeOnExpire bool, waitTimeoutOn *time.Time) models.SessionID { var id models.SessionID must(db.Get(&id, - `INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, responded, created_on, session_type, current_flow_id, connection_id, wait_started_on, wait_expires_on, wait_resume_on_expire, timeout_on) - VALUES($1, $2, $3, 'W', TRUE, NOW(), $4, $5, $6, $7, $8, $9, $10) RETURNING id`, uuids.New(), org.ID, contact.ID, sessionType, currentFlow.ID, connectionID, waitStartedOn, waitExpiresOn, waitResumeOnExpire, waitTimeoutOn, + `INSERT INTO flows_flowsession(uuid, org_id, contact_id, status, output, responded, created_on, session_type, current_flow_id, connection_id, wait_started_on, wait_expires_on, wait_resume_on_expire, timeout_on) + VALUES($1, $2, $3, 'W', '{"status":"waiting"}', TRUE, NOW(), $4, $5, $6, $7, $8, $9, $10) RETURNING id`, uuids.New(), org.ID, contact.ID, sessionType, currentFlow.ID, connectionID, waitStartedOn, waitExpiresOn, waitResumeOnExpire, waitTimeoutOn, )) return id } From 720c2a647c6f4901e2bd8eaf4e5ea48e37380316 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 28 Jun 2022 16:53:58 +0100 Subject: [PATCH 88/97] Update test database --- mailroom_test.dump | Bin 1900540 -> 1900794 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index 3b07beb527bbb7ef1e6b6815a95f36b0a26e7fe5..ed45e454121c777f7ebd4e8acda56fb5927487ec 100644 GIT binary patch delta 87435 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 V?TtnT2mhZD|1MGV>53gBcqOBtfR7ES(FiM2 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 From fff6cc85981e04ffab34b1fbb39d56f1d5836b01 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 28 Jun 2022 17:13:42 +0100 Subject: [PATCH 89/97] Fix test --- core/tasks/starts/worker_test.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/core/tasks/starts/worker_test.go b/core/tasks/starts/worker_test.go index 5aca31c8d..634490e3d 100644 --- a/core/tasks/starts/worker_test.go +++ b/core/tasks/starts/worker_test.go @@ -3,9 +3,9 @@ package starts import ( "encoding/json" "testing" + "time" "github.com/nyaruka/gocommon/dbutil/assertdb" - "github.com/nyaruka/gocommon/uuids" _ "github.com/nyaruka/mailroom/core/handlers" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" @@ -32,11 +32,8 @@ func TestStarts(t *testing.T) { // convert our single message flow to an actual background flow that shouldn't interrupt db.MustExec(`UPDATE flows_flow SET flow_type = 'B' WHERE id = $1`, testdata.SingleMessage.ID) - // insert a flow run for one of our contacts - // TODO: can be replaced with a normal flow start of another flow once we support flows with waits - db.MustExec( - `INSERT INTO flows_flowrun(uuid, status, created_on, modified_on, responded, contact_id, flow_id, org_id) - VALUES($1, 'W', now(), now(), FALSE, $2, $3, 1);`, uuids.New(), testdata.George.ID, testdata.Favorites.ID) + sID := testdata.InsertWaitingSession(db, testdata.Org1, testdata.George, models.FlowTypeMessaging, testdata.Favorites, models.NilConnectionID, time.Now(), time.Now(), true, nil) + testdata.InsertFlowRun(db, testdata.Org1, sID, testdata.George, testdata.Favorites, models.RunStatusWaiting) tcs := []struct { label string From 53337f293508bb2b32cbc1ea192759067bc4998b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 29 Jun 2022 17:32:37 +0100 Subject: [PATCH 90/97] Update dependencies --- go.mod | 18 +++++++++--------- go.sum | 36 +++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index 8f3c3f6b2..3cbaac4d2 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/Masterminds/semver v1.5.0 - github.com/aws/aws-sdk-go v1.44.34 + github.com/aws/aws-sdk-go v1.44.44 github.com/buger/jsonparser v1.1.1 github.com/edganiukov/fcm v0.4.0 github.com/go-chi/chi v4.1.2+incompatible @@ -15,7 +15,7 @@ require ( github.com/jmoiron/sqlx v1.3.5 github.com/lib/pq v1.10.6 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.22.2 + github.com/nyaruka/gocommon v1.22.4 github.com/nyaruka/goflow v0.161.2 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 @@ -24,10 +24,10 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/common v0.34.0 + github.com/prometheus/common v0.35.0 github.com/shopspring/decimal v1.3.1 github.com/sirupsen/logrus v1.8.1 - github.com/stretchr/testify v1.7.2 + github.com/stretchr/testify v1.8.0 gopkg.in/go-playground/validator.v9 v9.31.0 ) @@ -35,9 +35,9 @@ require ( github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29 // indirect github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 // indirect github.com/blevesearch/segment v0.9.0 // indirect - github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect + github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fatih/structs v1.0.0 // indirect + github.com/fatih/structs v1.1.0 // indirect github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d // indirect github.com/go-playground/locales v0.14.0 // indirect @@ -52,12 +52,12 @@ require ( github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.1 // indirect github.com/nyaruka/librato v1.0.0 // indirect - github.com/nyaruka/phonenumbers v1.0.75 // indirect + github.com/nyaruka/phonenumbers v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d // indirect - golang.org/x/net v0.0.0-20220614195744-fb05da6f9022 // indirect - golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098 // indirect + golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect + golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect diff --git a/go.sum b/go.sum index 7726b976d..e09866cdc 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,8 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/aws/aws-sdk-go v1.44.34 h1:+ZtWIbtSGLNB99P8eBrxXfJZgiIouzUbpkf/MNxq2yQ= -github.com/aws/aws-sdk-go v1.44.34/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.44 h1:XLEcUxILvVBYO/frO+TTCd8NIxklX/ZOzSJSBZ+b7B8= +github.com/aws/aws-sdk-go v1.44.44/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -54,8 +54,8 @@ github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA= -github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d h1:S2NE3iHSwP0XV47EEXL8mWmRdEfGscSJ+7EgePNgt0s= +github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -72,8 +72,9 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/structs v1.0.0 h1:BrX964Rv5uQ3wwS+KRUAJCBBw5PQmgJfJ6v4yly5QwU= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= @@ -217,8 +218,8 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.22.2 h1:iEusd0CijvYvhW+bEZ6LWYQuaXS4Oac5WH9W8iK6DEw= -github.com/nyaruka/gocommon v1.22.2/go.mod h1:g6/d9drZXDUrtRSPe2Kf8lTUS+baHt/0G0dwHq3qeIU= +github.com/nyaruka/gocommon v1.22.4 h1:NCAItnrQbXlipDeOszoYbjXEFa1J1M+alS8VSk/uero= +github.com/nyaruka/gocommon v1.22.4/go.mod h1:g6/d9drZXDUrtRSPe2Kf8lTUS+baHt/0G0dwHq3qeIU= github.com/nyaruka/goflow v0.161.2 h1:56HkdueEqyxisxENHbPdux4QXtTw43MTcIL0ZNAhXtY= github.com/nyaruka/goflow v0.161.2/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= @@ -227,8 +228,8 @@ github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d/go.mod h1:FGdPJVDTNqbRAD+2RvnK9YoO2HcEW7ogSMPzc90b638= github.com/nyaruka/null v1.2.0 h1:uEbkyy4Z+zPB2Pr3ryQh/0N2965I9kEsXq/cGpyJ7PA= github.com/nyaruka/null v1.2.0/go.mod h1:HSAFbLNOaEhHnoU0VCveCPz0GDtJ3GEtFWhvnBNkhPE= -github.com/nyaruka/phonenumbers v1.0.75 h1:OCwKXSjTi6IzuI4gVi8zfY+0s60DQUC6ks8Ll4j0eyU= -github.com/nyaruka/phonenumbers v1.0.75/go.mod h1:cGaEsOrLjIL0iKGqJR5Rfywy86dSkbApEpXuM9KySNA= +github.com/nyaruka/phonenumbers v1.1.0 h1:OvNAOAl4A9a2kNpzziITbUVH4bBBeKHkHl0llPmkxaA= +github.com/nyaruka/phonenumbers v1.1.0/go.mod h1:cGaEsOrLjIL0iKGqJR5Rfywy86dSkbApEpXuM9KySNA= github.com/nyaruka/redisx v0.2.1 h1:BavpQRCsK5xV2uxPdJJ26yVmjSo+q6bdjWqeNNf0s5w= github.com/nyaruka/redisx v0.2.1/go.mod h1:cdbAm4y/+oFWu7qFzH2ERPeqRXJC2CtgRhwcBacM4Oc= github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E= @@ -255,8 +256,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= -github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.35.0 h1:Eyr+Pw2VymWejHqCugNaQXkAi6KayVNxaHeu6khmFBE= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -274,14 +275,15 @@ github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -360,8 +362,8 @@ golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220614195744-fb05da6f9022 h1:0qjDla5xICC2suMtyRH/QqX3B1btXTfNsIt/i4LFgO0= -golang.org/x/net v0.0.0-20220614195744-fb05da6f9022/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -417,8 +419,8 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098 h1:PgOr27OhUx2IRqGJ2RxAWI4dJQ7bi9cSrB82uzFzfUA= -golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b h1:2n253B2r0pYSmEV+UNCQoPfU/FiaizQEK5Gu4Bq4JE8= +golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 3ca20cd3020690985eae0c245db58bcea8ee2ba7 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 29 Jun 2022 19:24:31 +0100 Subject: [PATCH 91/97] Update CHANGELOG.md for v7.3.19 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdf195925..59c20dfac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v7.3.19 +---------- + * Update dependencies + * Log version at startup + v7.3.18 ---------- * Use new orgmembership table to load users From d91ed49b49129be8cb2190e5885ecfc0e6e8fc97 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 30 Jun 2022 18:56:39 +0100 Subject: [PATCH 92/97] Use proper query construction for preview_start endpoint and return search errors for invalid user queries --- core/search/queries.go | 64 ++++++++++++++-------------- core/search/queries_test.go | 53 +++++++++++++++++++---- go.mod | 2 +- go.sum | 4 +- web/flow/start.go | 9 +++- web/flow/testdata/preview_start.json | 44 +++++++++++++++++++ 6 files changed, 132 insertions(+), 44 deletions(-) diff --git a/core/search/queries.go b/core/search/queries.go index 52fb1d956..94fc81538 100644 --- a/core/search/queries.go +++ b/core/search/queries.go @@ -1,15 +1,15 @@ package search import ( - "fmt" - "strings" "time" "github.com/nyaruka/gocommon/dates" "github.com/nyaruka/gocommon/urns" + "github.com/nyaruka/goflow/contactql" "github.com/nyaruka/goflow/envs" "github.com/nyaruka/goflow/flows" "github.com/nyaruka/mailroom/core/models" + "github.com/pkg/errors" ) // Exclusions are preset exclusion conditions @@ -21,56 +21,56 @@ type Exclusions struct { } // BuildStartQuery builds a start query for the given flow and start options -func BuildStartQuery(env envs.Environment, flow *models.Flow, groups []*models.Group, contactUUIDs []flows.ContactUUID, urnz []urns.URN, userQuery string, excs Exclusions) string { - inclusions := make([]string, 0, 10) +func BuildStartQuery(oa *models.OrgAssets, flow *models.Flow, groups []*models.Group, contactUUIDs []flows.ContactUUID, urnz []urns.URN, userQuery string, excs Exclusions) (string, error) { + var parsedQuery *contactql.ContactQuery + var err error + + if userQuery != "" { + parsedQuery, err = contactql.ParseQuery(oa.Env(), userQuery, oa.SessionAssets()) + if err != nil { + return "", errors.Wrap(err, "invalid user query") + } + } + + return contactql.Stringify(buildStartQuery(oa.Env(), flow, groups, contactUUIDs, urnz, parsedQuery, excs)), nil +} + +func buildStartQuery(env envs.Environment, flow *models.Flow, groups []*models.Group, contactUUIDs []flows.ContactUUID, urnz []urns.URN, userQuery *contactql.ContactQuery, excs Exclusions) contactql.QueryNode { + inclusions := make([]contactql.QueryNode, 0, 10) for _, group := range groups { - inclusions = append(inclusions, fmt.Sprintf("group = \"%s\"", group.Name())) + inclusions = append(inclusions, contactql.NewCondition("group", contactql.PropertyTypeAttribute, contactql.OpEqual, group.Name())) } for _, contactUUID := range contactUUIDs { - inclusions = append(inclusions, fmt.Sprintf("uuid = \"%s\"", contactUUID)) + inclusions = append(inclusions, contactql.NewCondition("uuid", contactql.PropertyTypeAttribute, contactql.OpEqual, string(contactUUID))) } for _, urn := range urnz { scheme, path, _, _ := urn.ToParts() - inclusions = append(inclusions, fmt.Sprintf("%s = \"%s\"", scheme, path)) + inclusions = append(inclusions, contactql.NewCondition(scheme, contactql.PropertyTypeScheme, contactql.OpEqual, path)) } - if userQuery != "" { - if len(inclusions) > 0 { - userQuery = fmt.Sprintf("(%s)", userQuery) - } - inclusions = append(inclusions, userQuery) + if userQuery != nil { + inclusions = append(inclusions, userQuery.Root()) } - exclusions := make([]string, 0, 10) + exclusions := make([]contactql.QueryNode, 0, 10) if excs.NonActive { - exclusions = append(exclusions, "status = \"active\"") + exclusions = append(exclusions, contactql.NewCondition("status", contactql.PropertyTypeAttribute, contactql.OpEqual, "active")) } if excs.InAFlow { - exclusions = append(exclusions, "flow = \"\"") + exclusions = append(exclusions, contactql.NewCondition("flow", contactql.PropertyTypeAttribute, contactql.OpEqual, "")) } if excs.StartedPreviously { - exclusions = append(exclusions, fmt.Sprintf("history != \"%s\"", flow.Name())) + exclusions = append(exclusions, contactql.NewCondition("history", contactql.PropertyTypeAttribute, contactql.OpNotEqual, flow.Name())) } if excs.NotSeenSinceDays > 0 { seenSince := dates.Now().Add(-time.Hour * time.Duration(24*excs.NotSeenSinceDays)) - exclusions = append(exclusions, fmt.Sprintf("last_seen_on > %s", formatQueryDate(env, seenSince))) + exclusions = append(exclusions, contactql.NewCondition("last_seen_on", contactql.PropertyTypeAttribute, contactql.OpGreaterThan, formatQueryDate(env, seenSince))) } - inclusionCmp := strings.Join(inclusions, " OR ") - exclusionCmp := strings.Join(exclusions, " AND ") - - if len(inclusions) > 1 && len(exclusions) > 0 { - inclusionCmp = fmt.Sprintf("(%s)", inclusionCmp) - } - - conditions := make([]string, 0, 2) - if inclusionCmp != "" { - conditions = append(conditions, inclusionCmp) - } - if exclusionCmp != "" { - conditions = append(conditions, exclusionCmp) - } - return strings.Join(conditions, " AND ") + return contactql.NewBoolCombination(contactql.BoolOperatorAnd, + contactql.NewBoolCombination(contactql.BoolOperatorOr, inclusions...), + contactql.NewBoolCombination(contactql.BoolOperatorAnd, exclusions...), + ).Simplify() } // formats a date for use in a query diff --git a/core/search/queries_test.go b/core/search/queries_test.go index d30f9b000..e846ecd56 100644 --- a/core/search/queries_test.go +++ b/core/search/queries_test.go @@ -35,13 +35,14 @@ func TestBuildStartQuery(t *testing.T) { userQuery string exclusions search.Exclusions expected string + err string }{ { groups: []*models.Group{doctors, testers}, contactUUIDs: []flows.ContactUUID{testdata.Cathy.UUID, testdata.George.UUID}, urns: []urns.URN{"tel:+1234567890", "telegram:9876543210"}, exclusions: search.Exclusions{}, - expected: `group = "Doctors" OR group = "Testers" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR uuid = "8d024bcd-f473-4719-a00a-bd0bb1190135" OR tel = "+1234567890" OR telegram = "9876543210"`, + expected: `group = "Doctors" OR group = "Testers" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR uuid = "8d024bcd-f473-4719-a00a-bd0bb1190135" OR tel = "+1234567890" OR telegram = 9876543210`, }, { groups: []*models.Group{doctors}, @@ -53,7 +54,7 @@ func TestBuildStartQuery(t *testing.T) { StartedPreviously: true, NotSeenSinceDays: 90, }, - expected: `(group = "Doctors" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 20-01-2022`, + expected: `(group = "Doctors" OR uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" OR tel = "+1234567890") AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > "20-01-2022"`, }, { contactUUIDs: []flows.ContactUUID{testdata.Cathy.UUID}, @@ -63,24 +64,60 @@ func TestBuildStartQuery(t *testing.T) { expected: `uuid = "6393abc0-283d-4c9b-a1b3-641a035c34bf" AND status = "active"`, }, { - userQuery: "gender = M", + userQuery: `gender = "M"`, exclusions: search.Exclusions{}, - expected: "gender = M", + expected: `gender = "M"`, }, { - userQuery: "gender = M", + userQuery: `gender = "M"`, exclusions: search.Exclusions{ NonActive: true, InAFlow: true, StartedPreviously: true, NotSeenSinceDays: 30, }, - expected: `gender = M AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > 21-03-2022`, + expected: `gender = "M" AND status = "active" AND flow = "" AND history != "Favorites" AND last_seen_on > "21-03-2022"`, + }, + { + userQuery: `name ~ ben`, + exclusions: search.Exclusions{ + NonActive: false, + InAFlow: false, + StartedPreviously: false, + NotSeenSinceDays: 30, + }, + expected: `name ~ "ben" AND last_seen_on > "21-03-2022"`, + }, + { + userQuery: `name ~ ben OR name ~ eric`, + exclusions: search.Exclusions{ + NonActive: false, + InAFlow: false, + StartedPreviously: false, + NotSeenSinceDays: 30, + }, + expected: `(name ~ "ben" OR name ~ "eric") AND last_seen_on > "21-03-2022"`, + }, + { + userQuery: `name ~`, // syntactically invalid user query + exclusions: search.Exclusions{}, + err: "invalid user query: mismatched input '' expecting {TEXT, STRING}", + }, + { + userQuery: `goats > 14`, // no such field + exclusions: search.Exclusions{}, + err: "invalid user query: can't resolve 'goats' to attribute, scheme or field", }, } for _, tc := range tcs { - actual := search.BuildStartQuery(oa.Env(), flow, tc.groups, tc.contactUUIDs, tc.urns, tc.userQuery, tc.exclusions) - assert.Equal(t, tc.expected, actual) + actual, err := search.BuildStartQuery(oa, flow, tc.groups, tc.contactUUIDs, tc.urns, tc.userQuery, tc.exclusions) + if tc.err != "" { + assert.Equal(t, "", actual) + assert.EqualError(t, err, tc.err) + } else { + assert.Equal(t, tc.expected, actual) + assert.NoError(t, err) + } } } diff --git a/go.mod b/go.mod index 3cbaac4d2..81507601e 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/lib/pq v1.10.6 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.22.4 - github.com/nyaruka/goflow v0.161.2 + github.com/nyaruka/goflow v0.162.1 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 diff --git a/go.sum b/go.sum index e09866cdc..b861eaf4f 100644 --- a/go.sum +++ b/go.sum @@ -220,8 +220,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.22.4 h1:NCAItnrQbXlipDeOszoYbjXEFa1J1M+alS8VSk/uero= github.com/nyaruka/gocommon v1.22.4/go.mod h1:g6/d9drZXDUrtRSPe2Kf8lTUS+baHt/0G0dwHq3qeIU= -github.com/nyaruka/goflow v0.161.2 h1:56HkdueEqyxisxENHbPdux4QXtTw43MTcIL0ZNAhXtY= -github.com/nyaruka/goflow v0.161.2/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= +github.com/nyaruka/goflow v0.162.1 h1:MEUcRUYu8JLLdvVVpZvkmsPUSVS1+u2GYChM0tb2LhI= +github.com/nyaruka/goflow v0.162.1/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= diff --git a/web/flow/start.go b/web/flow/start.go index 300d20132..7e44a4f4c 100644 --- a/web/flow/start.go +++ b/web/flow/start.go @@ -96,7 +96,14 @@ func handlePreviewStart(ctx context.Context, rt *runtime.Runtime, r *http.Reques } } - query := search.BuildStartQuery(oa.Env(), flow, groups, request.Include.ContactUUIDs, request.Include.URNs, request.Include.Query, request.Exclude) + query, err := search.BuildStartQuery(oa, flow, groups, request.Include.ContactUUIDs, request.Include.URNs, request.Include.Query, request.Exclude) + if err != nil { + isQueryError, qerr := contactql.IsQueryError(err) + if isQueryError { + return qerr, http.StatusBadRequest, nil + } + return nil, http.StatusInternalServerError, err + } if query == "" { return &previewStartResponse{SampleIDs: []models.ContactID{}}, http.StatusOK, nil } diff --git a/web/flow/testdata/preview_start.json b/web/flow/testdata/preview_start.json index 95b711618..8f037d917 100644 --- a/web/flow/testdata/preview_start.json +++ b/web/flow/testdata/preview_start.json @@ -234,5 +234,49 @@ "allow_as_group": false } } + }, + { + "label": "invalid query inclusion (bad syntax)", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "include": { + "query": "gender =" + }, + "exclude": {}, + "sample_size": 3 + }, + "status": 400, + "response": { + "code": "unexpected_token", + "error": "mismatched input '' expecting {TEXT, STRING}", + "extra": { + "token": "" + } + } + }, + { + "label": "invalid query inclusion (missing field)", + "method": "POST", + "path": "/mr/flow/preview_start", + "body": { + "org_id": 1, + "flow_id": 10001, + "include": { + "query": "goats > 10" + }, + "exclude": {}, + "sample_size": 3 + }, + "status": 400, + "response": { + "code": "unknown_property", + "error": "can't resolve 'goats' to attribute, scheme or field", + "extra": { + "property": "goats" + } + } } ] \ No newline at end of file From 56002c3efda088b18ba3a99edf23e2c5634095d8 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 30 Jun 2022 20:32:57 +0100 Subject: [PATCH 93/97] Update CHANGELOG.md for v7.3.20 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59c20dfac..89b675056 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.20 +---------- + * Use proper query construction for preview_start endpoint and return search errors for invalid user queries + v7.3.19 ---------- * Update dependencies From 16c0934a8546852966cfd332896db866e31612e4 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 8 Jul 2022 12:32:41 +0100 Subject: [PATCH 94/97] Update README --- README.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 40abc7132..de7d000c9 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,28 @@ -# mailroom +# Mailroom [![Build Status](https://github.com/nyaruka/mailroom/workflows/CI/badge.svg)](https://github.com/nyaruka/mailroom/actions?query=workflow%3ACI) [![codecov](https://codecov.io/gh/nyaruka/mailroom/branch/main/graph/badge.svg)](https://codecov.io/gh/nyaruka/mailroom) -# About +Service for RapidPro/TextIt which does the heavy lifting of running flow starts, campaigns etc. +flows. It interacts directly with the database and sends and receives messages with [Courier](https://github.com/nyaruka/courier) +for handling via Redis. -Mailroom is the [RapidPro](https://github.com/rapidpro/rapidpro) components which does the heavy lifting of running flow starts, campaigns etc. -flows. It interacts directly with the RapidPro database and sends and receives messages with [Courier](https://github.com/nyaruka/courier) for handling via Redis. +## Deploying -# Deploying - -As Mailroom is a Go application, it compiles to a binary and that binary along with the config file is all +As a Go application, it compiles to a binary and that binary along with the config file is all you need to run it on your server. You can find bundles for each platform in the -[releases directory](https://github.com/nyaruka/mailroom/releases). We recommend running Mailroom +[releases directory](https://github.com/nyaruka/mailroom/releases). We recommend running it behind a reverse proxy such as nginx or Elastic Load Balancer that provides HTTPs encryption. -# Configuration +## Configuration -Mailroom uses a tiered configuration system, each option takes precendence over the ones above it: +The service uses a tiered configuration system, each option takes precendence over the ones above it: 1. The configuration file 2. Environment variables starting with `MAILROOM_` 3. Command line parameters -We recommend running Mailroom with no changes to the configuration and no parameters, using only +We recommend running it with no changes to the configuration and no parameters, using only environment variables to configure it. You can use `% mailroom --help` to see a list of the environment variables and parameters and for more details on each option. @@ -67,9 +66,9 @@ Recommended settings for error and performance monitoring: - `MAILROOM_SENTRY_DSN`: The DSN to use when logging errors to Sentry - `MAILROOM_LOG_LEVEL`: the logging level mailroom should use (default "error", use "debug" for more) -# Development +## Development -Once you've checked out the code, you can build Mailroom with: +Once you've checked out the code, you can build the service with: ``` go build github.com/nyaruka/mailroom/cmd/mailroom From 16b35e62bcc4090d33dcf83b627a32c483212824 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Fri, 8 Jul 2022 12:34:19 +0100 Subject: [PATCH 95/97] Update CHANGELOG.md for v7.4.0 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89b675056..53bb6b3e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.4.0 +---------- + * Update README + v7.3.20 ---------- * Use proper query construction for preview_start endpoint and return search errors for invalid user queries From 85db97f184f93ebbce59f7841f043b7ed3c5f7eb Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Sat, 9 Jul 2022 10:00:46 +0100 Subject: [PATCH 96/97] Update to latest goflow --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 81507601e..0ca8efec3 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/lib/pq v1.10.6 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.22.4 - github.com/nyaruka/goflow v0.162.1 + github.com/nyaruka/goflow v0.163.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 diff --git a/go.sum b/go.sum index b861eaf4f..2c1f0569b 100644 --- a/go.sum +++ b/go.sum @@ -220,8 +220,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.22.4 h1:NCAItnrQbXlipDeOszoYbjXEFa1J1M+alS8VSk/uero= github.com/nyaruka/gocommon v1.22.4/go.mod h1:g6/d9drZXDUrtRSPe2Kf8lTUS+baHt/0G0dwHq3qeIU= -github.com/nyaruka/goflow v0.162.1 h1:MEUcRUYu8JLLdvVVpZvkmsPUSVS1+u2GYChM0tb2LhI= -github.com/nyaruka/goflow v0.162.1/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= +github.com/nyaruka/goflow v0.163.0 h1:dR8phssqATprCPVxjJj6U19yOpOgnCwNQvvqYzAuIcE= +github.com/nyaruka/goflow v0.163.0/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From 4ba04258a9fd6a5de1e679c421faf565c9b40a82 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Sat, 9 Jul 2022 10:10:51 +0100 Subject: [PATCH 97/97] Update CHANGELOG.md for v7.4.1 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53bb6b3e6..b5bd8d844 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.4.1 +---------- + * Update to latest goflow + v7.4.0 ---------- * Update README

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 delta 102673 zcmZ5p2YggT6VJYKNiLN19+J>|t`}+mLFqvd6a<15qyQU3KZTU1z@ zBap>^8vf^W`CM@c;t!wO9SnM0p+l4wzFVoy;(cz9GvEz|9#P+7on-Yk+Gi*gXr54- zzLs^CrC;hlCJJ1S+ZUHiyXv#F@K?5t3VS!?T$v?W0mv6#n|O=Dwu&Nwj3R$rr%-ib zVYo}J)>>$8Vz!AH2+vENB|CTdot|((YP=d!Yh~9mDh1=(gVxZsye8rC8LgGjgk-ax z*Ad>D^@c8q_6GwC`>_lv{Xx;gGYfuUp@tb|172rbKs0cwI4!iUK|**#;Wid}Im>Fq z6`ogoRt-H^Xcf4_iyM7!3r#4t3OwPZEt}awQyN(fdgJoYAPq}R$P3*!GA*3r9-R=H z-qHg5;tB*fm=5sBks0A5ZO190k6aemALkI{q)aRfKiwfu3C(P4K>~3%2*~{Bb3-@w zN)2BseMt#*>tK-)46p5yq=sHA%{I8{bHuqq)m_p;AnG z+T6`5aD~=($qb!qQa5~KufLVhwVNz}J6zs3RSBuRtO8GXe!p`p)Tysk;0-V7KS>GQ z-_I)Wg`ERkN@!|-lWw0s&L`+Tn425=wlp=AH>4nZ@Ydg0D0QHP5s2#`Fv_Rpygj6^ z61wwNtF2&o+|U|x>OuA0!w+hq_XnHR{Ej%MsP^;3;?VevTH#rDy{3lx4mIogo#E~y z_p2fAT~>iB>>Kl2VyO8@tG+v~o~Xb5k$RzHS!v;ElUAsqtT7hU6W3Tk$4$u%kC^-< z3pJZ$LA-I<0&;amwyfuWw6QJJV6xSXFZ}3ZYZ5|drdS33@J-KNi4P5Z%&H%VD@1)- zQ#+wB{8VV77Hamag&Pd#y|7aWbq$%g0f!+>^Xn(%g>zp@(L(={1#-qU63qaVL#vAt zYK12*yHN>!z1VCk;0k}We4s7VVwqLo4)6H%eXg+^&FIPZU5gLBc`h|nemI|=>6TD8RQ5r9Xvqhs*iEu8+L5khht_>~Omyf7`u*Vr z9~l}GKfJUwL(2+p+mpjscgfvl8Cs?o>7qeOZs_c%Nukbr=NUBveky!g%@6;+x3wIf zBN*_;6;SchYEEe0zW8vjeJ;j&82p-&34X0PZtx4ugpDSA!SIUx6>_wWpwAzwIFv6) z5BE5j!dOq)f6ZV`qcK@pR_M7yUm3N6-tgGZW*U>@aCoWsIW;p}=Zk!UYYwo`dAKuU zy^P`Z&DOGM=(|c@Xy=!^%m&=lI!DV4FFlgQ=AX@^k{m4~bn@ta$zF%k9hXbHjw%J= z&%g4SZ91Ldlw;*A^d!rqd4-U-XOE{EAiu{Ie(jq+#*bjYM+fGp+2NFv6~@E_1D?1X zI`q4q8Ls-)!C2q$q3_ZRaR>%|n6pE3)C?;6OV`8k-v?Dm0rsf4dQm{=z)uM@O=GFy zsb`9@A846UcMyYx)j*-Fzx7tjAIxa0JD{o!9P^ikxZ@q4{;gAUF8C4>HQ zvNWom2TsoY=cF+NB#)-JSsox;3>t!tjs4hCgWdi>ATD3DpFvdx zHjU!b6%QIrHGU0I*zwTJZJE4}%Hqumn4f$xD6tvW;!`!|V4+F7G6^W@vW)DjSw2-} zfcs)N0u9_x4b}ZEfhrk`m%BI(v9a-zoPg8M582pYLoxzTHM!KUu`P>s{HWNd?L;Mw z_N@}rnaD1(LA2ZnMe~%MU6JewU^Y|fml9h>Xl6k&hwkcVNJ{{7nj-+2G%gu^3Q3_W zH_2H_r0ND*G7YQCz6%}x7?d~A>KP(4FPVKH+I2f&LuJyT*AjC0Ln-V@NgE0sSjn=m zD4hjaXxgW_)TUun=jBmVHcMKR$?OD#_|UBvQmG_YmOLWH>UR3wyfTyRlj{P%oK&5| z3TaHXVh~5mvf00(A%`-lQ6tcFAcq;s&EuAe42BpLHP#Yn)d;24qC9pv^uU+7l-w8+ z)I6UZlN|AQf^iu%V^cylZ&JYWRmo$I$4}M8tUe!8#7bCb3yxM0i{ zIf_}nq`B@5tge9R)V;nrOCFzt@2Jl{miooz4SM<9M(iFr4*YV{sU}(rI=>#{Xgi(d zfwp9-{6(olRZYSCHg79;(DCUk=Rf6Z&$5nGvQJA6O*o!Om6c4RADU>5X?R%4TewZh z{SSKgXITmr^<;@u))eyk$|u+-wl>vL=&5E*?vYN9Hz3BDA^Nt_+#1Ce+PWu==4lYf z@_Y;`TK>0hdw_qSGmqR zx><_ZQosq(6-GN%|Do9U{T^1&&>IkfotKnMIylf4Pve8k#y9(!i-jKl70T{*Y$#u~ zfY3pbx9VxIi(PUgT%BX-SY7Te&Cbipw*)sl2QtaaSAGPm$`$6C~DwH52NI zuJmLLNme}BQmaMpWV1VHNiSAErfg|@);E;$S0=UV&1&=H4y=|j4zI%rj zM|RFMavVKuz$=ZU6^{*E~H!fu^f&uHDk0! zXPF!%=NN0*<#O}e`>?}ugK)cCPUDnNd^0QHL;8WsG|rCZC7bs;z~;##4K{x&`fvoj z*p;aGdkl78e^x3fL?QMiSxBEcwFEG<6_ww@u2QFD(NrtU*cPXj2Rpk% zWZq!*zR(>Wr_0L+4`H{-dLF0S&$ryp+FHN7{NJI>&FG~ZRDRN}Wzp@!*=J%*E{DgB zsTkqGU@;ZR{O)q*m9yyfdL4ZE9qd7abzV<^hI_Quyyso)Mn;$O&{DZaYh_GB&E4!f zvpFZG0nHWCK~1$0xSA&9E04aHILR-uw_!ud)$8Nvq^1AYae8F`Lh$4VKHF`@X`psRzhekm7pOc@kx~YIQF}X z_d`|oet`W(mzzVj22M1!hTG#6`%ZE#wTQ2I5KGJG0$i(jm^GJ8@zxKqR*X_hKwatm zkc*D(wIp8oFiVz_gciguzpl1gNN6FMcFbiBsB$vY>A#P#%YwZ?@x?VTP--3pA^XRH zy<=WxjSW0m2IB6ZT1&B{WnEcT>tX2dR?pg!si7OauUQH$yREjGLK1rM8K{t&rL0k; z#;ZneJ|B#^8I`PUiFYykYg_E6s(jo$-)%$v!I z#Aw`$7T6#NkKk9uQ>^I-5!{H1$1J8t;pa_?o+IZIdB{& z8wyA87G>YGYnKmvuC%d!0_I*Aa_VO7yJ@Sre+< zrlwQHe0G^;-;5RuJ8CVB)pBN$kR}rvFIG!FP2UDX|C%SlDs)y8u1 z2vLQ&ZC5kt>LW0f#1x0h6Kpi>dA7kocLu3y5i=;@pa9xv*g&J>WU8*h&Rio_mRztP z;gs1)kRK#dtGTg3aL0>m6r;|AW0;mir7xN@O(%2IR64jA4N1D?&*3kbQ|5L1vA)(9 z>Bjovwk52g$sf0uJ70#SL?y!^#8@82fz0Lbfq-Q!(=ezUK0g(8(Hhda7hpoo?W#z{ zfTPPUwKg4u6-U_fkJ5s>L7h0+^S-Y#<7n@4`2BqNYwRAgAskkVR>F?M?#usv9Yz7Q zABjrxz?gLd^mDtFOr98Bj)0#RyvZg>*}^Yjc+cGkMO3>hY?wOfN-BrpZHHQ^Km&5S zsdc{B`Z2ExJmK&SP>BExhqoq^jUf8alJ?sW! z&Ya#LmG{6=5>|k@m+r=9R@P2Wpo7P3iB$73`<1?*1r}ncv?%l^c zW=lRlulSS=X0-kpV4vKNt;d)Uzn?npSM%wS4N6^J{~&8*w&E9Vkxu&|L!%Bs8PWZ7 zFjQe5@vWaRn~CJ{!IquzG0f?2{wJn!VV~6PZrYL?^ptF@vYEcv=p_m((6$Bo_cKo zkp_#?5eU-s&(s3G;xub0g&akGe((o2h>`bIp{@Etd7t}NSRKh#^lpP1o} zars?dI@AxkMjY2dQ_o;Aon`gpAuUw4Hb?v#OGzt@{xzx?r0G2W9McR&`C-Cz`W0u# zii=?O!yCZZ@nczbXl{BPsws+3py}t???$g~91AbP*00$JorW`*?5M7&Sex2y!I2Q> zuX@bQ{Ia8!`P3phM{*k!SC9@#8V#R01F78twZUPY6_14_w%v#=CJ z;bqC9`L6g}{=?sFzM-6OsX@z`Qn2tM&Z?4;LPEhvo$tSbp%^vcZfQjGd15hL9H_qdYHH48(a^`0;RFK5no*;Nxf(;&A4DV2RyA%weH%;t)36n@qkgv5V4o2VZMQg)ug`W*Oh;)1!?R2y$I&JR& zrB{}qJY$mJ;HMH4!-eVc`vdfHl9F$1472Qt!f5Y)G=_DYNN*%5=Zs3;AYWWd$z$}& zX8`68hPpaYTiIs-{Vx7?9i^3AifEB84Au&$=WLc5>TxiSb|&Lk`$!XZN9g#$9P#UJ zO85d3&@n~%Mb-~EJ=E?bO!OZYKnsmXRc4x#2;n(2M61uS-4!v~b_BZXh783x^t%I4 z`Z!A8uI2EtnaUTk3JTq{<94k9hu5Y)qnD3^SWJF>`uZ>CrH+MgdN^{Fx^Q`=(7Fc3 zuLSCttH^V+JK%9*pItu`^V*#w*0Z4H%&<%m(}q>?5|fh4T7i&8{uny->8yiI5*%Y3P>K2OOx}u^MkT~fKsOSe3aG)8QbF@$f z(!PsEONkV0iZawVZM5m|^OssG<`n>JYnm_uw#?s7Ea8V*E0?L|uc&xnppr;)N{ofz zbO!zWeupx`(2`DAEUi6?G>oLofCilkX2heHJ2c$?9h@S_iYcPKZm{~Z-_fw#ar)dL z-R-ciu1AwQaF0jyy0p<_tRbh<8Q?9v%0T1x5?edJNu}+ThIIBO zQwLY~0_`Q4cBr?uO1vS=LL2|5{8&5C^y*)rNiJ;1omkk?NXNoHU^MM<@>@D!shAyM z+bYH4YxB6dR%C-ar|ULy+=U4gzB##S{!{))snU1h9avU!?BA9e3kl{`kbl()`oQeV z&r`Z6&`6gRph5%^DX$Br`m5e>qZM_=K(2JbKhkqI?Pg4WVQ2jF>kSb;`RL@`S_Yrm zRe=ZMn|L&`vYT?!Xx!`Pb8l39Qjnca_}p`7{*4M8Z9S9(4#vR?^HdUQH1DBYHEQ@E zc|Ad#+--6HEhMie$l2KoMErac{(|_zPUwT5C_6(NYg=RodqUnM-qGHs0J*S|w)Ihd zGFO4y$=8&Lu{KJvD%H7JxoGqZ$FA02nP$ow9J?b%;pkU&i-MzH>kQySHh(Zs13|uZ zkka4eAnuDs48|G|^TWH{rq~$G$pOAJ`r6+IXZQ5M$~VS<;Ms#OZnT!pCl66_t-gX( zZ#1?Y(E!1dlV`~1v|$+S)uGC_w7;I!+~32LKLrgQ2llSZ!<9Lb2K;jI*(1crlm^Dg zH2UcdMc%z3G{DVI->GymbW||tq{@3CPJ7FgR6h6~1?P+0Ca5H(H|oNacjtiO0+Dyib8?GphygSC3YHGDvaz_>wWoy|R6e!|mbr@tAWOUjnRw70Nj= zbdSRyge^B?Ja~G?1m$fL8T-KW@vzz2O@z2pjt4bhvlY>@2bI%u_w>SRn@T%*dyIjL z$l;*KOUct=popW&qQ_z2?3jSnls!%Pj`ozIsR0u(CneJr>A-ip;DCX(d%sr11C`2s z1~Xk=A9cK6YcBOF&hmMi&<>;iH=sJaIL)NFKW3)#wIm|w^6@@TD5eW7=<-mf2ecef zH*`3hM+cu&YG^?>R6YEZ!8CW!=Y&&n{t7*lpL$wpU~CA&(})Wt6fSxWgKz$<(vnen z57d*!PQ`PIal*r}Y2s|ua)dgiX7P2im24%(-o@`alvJ3I8rsQ&bk{sZI^bPUZT#_h zN;^g?d!tF)gD`(D&R33z5xCrNHSAxYyd*h@Uq0HkP$}Z`o>%f2UF;V_LLwbls9X|L z=nf(VC7TXS((?F^i_k(T^9hjsw;y5lhX0&-A>K>c~leX?+<#Xz^%%TQITH8kEx4WG9N{& zIaVr*4KBeYd1$3_n@P0S!<}y_I3FDl$`~iuFX_9*iV-B@^0-8N&SW)>Kf6ZRthP`uZx!3wL(6-T3A#iTdf*!B^J?)EqXrf$139I)?-J4PX<=}=zGzAo3L^ga*f-u zzSUM0+*QpI9hx!wXpvKvRhb?M}znvGxFsCaNX+M*}ZqS0tpSQ#|z zQFva3sVdy2oEmLVn##59@(JS@9ppxj6I8VU)_!#@%|-{`QNE!S8?El7<4_{+-+}?u zY=($ZpWowCsI&q-$z8F0Dt1Nmw2QjFgJ#}eVpaAaYC_V=@7gMau4pL+KI%c#lR~g+ zo3f9de;A`5_>Rd)x7ST`YeVg9-7Yw_cC*2A zxc;S5m)Sv{q{ro;()Say$j4ME3r>e4zy}GDjQ?h>KnkD8Wa4trW0CkL3CYf(fhXpCO7~OVzvlNSQJXI@$KIW;ATt+Hzz8#B7y++7qriF7ptCAfEbjb;*@-*mc3>waZqZ<)4#FmdES_2eSQ4-3*vQQ5V)Mr;ZI!_wIR%_G`7d?>A)()=+m- ztURD@*Chy#DHbjtPOSsL<0FHt9%T#;dX)FX@x0;>A{&e)eRt5!yB z;1)HD|9MSxyWloZfHsnWiwFkrTKd}aaF!_uj#yF-1`G|Nm9s9=7 z#CQc)C1nG!_Rs%hG%YMkai!^l^I(5%tmE?uY6(kp8OsZn_PR<;SjAZj8@pE{D*Fo# zp98hAgnRr3JG@FstVPwE)GV4_OZCTGBp#@x)}`~mDOrn}t9F|AFLt82Y3gnCX_8u> z+Fdm$#I2v3*QupeGWy|eQ?5POoYvGo5%7DXzm{`zNY{({L1#l;U_{{=bJ> z+0`auJ8*k&z-gAQI#`Oa9e5zSLV4l;>12}HL|UQZ%+P>}I%*B%OwrUVT<+p3D}&d~ zRB>{hQ`?dWmj{T;t84}$2jb0)n$vg;Mg>1p^eaTi0Olu+G?x={b%Y`tS3l=x+ zRJjzsYxPG<5d9()?Ba6xwN?~?t5Su7tMZnp4$aP2zcaTYH@sc-UPWE^*Onw=&s$fZ zHWf13har;T^uwiLF{b1HlwG+ ze5)NS{tR)~lF2VLRP!yRghLcfb3q>F6+{pNSjV_X$>8OURRm|^674HcG_J@(z(P-@ zQ;#I3@lTtmI9qLcBJU9k40@ zA!Gq}-C5M^0h260_+9N*8^YjSotOaHoVS9F+b0+lxcqLKHvj=urC+ECyu_=*#%nd! zq}%TfU|%XajKl8+pW2AoaeNf3!|iiWVG%lc;4TYO-qkE`hGX?(c8F)+AEBPgz0g7j zo8nkBDWHB0RorqgxN@Y_Bn;tud|nXzvTP3=(T=x)sQm4>S`7+!sq~zev=w7CwIe(% zrxa{Z^*We{!T`WF$rJ1I?d{Z32B{h|9DVir#ase@oTS=!fHJlWCG3cuf*8RRpT(wt zo6qa0Heq%|R~v&2(u5@Ra`9KI5lG6PrD`oP!Si~?7t$q)XZyIbU(xJmtxD*i}}S3OwZ>$+nyy4+?o0!Oeg+1Fo5Oy~b}S2J0PY595$_39E4 z4+9Og3NLVgm-Q5~^!EURMJRIccYCQg8P4r*6*(NdP9Nx{M8D*?3sEier$9KXjv5@t z4X%?v*cUTTk2}mtPPmMAmVwol{pfa4%FSvP`#xfM!%ykqH{L9!uYmpNP~4yI{_1M&U-Y8xtBgzK%LgDg%}-J&K&T#4~?v@=A# z>Q;o<^j#F6DDb9`e!DeJko@N$F$%|gU9Q0S805gd)`(!O-Eo^R6sCIZ@d|FJPQ3)l zYl6w=MQL7xX(9eiY2{Mq}|j*Jz^C2hE8JU;%@ zXs9fz-_oSj4IPCu^#Yusv8 zpJ{Jkdpo%fQbEnFb`kEAMnz$yFL)-Q-FY+Z$+Y%<$Y0TeY9p#R86Qs-_p6&1HM1(f zPQ$&>1~eiMdCTqt+Pt~;BwF!+`n9F^Jnlu`Lv&tjVlcqvhLyTwqS%e=Otjln9KdP$ zSs1gH@6;0+PK$p4eEANuF*l;r(xuyl-~K4X zoZ=rvUn>*~jETz@UX&bua4L2yO9Q4rc2}zZ*srXyW7ETbPe~L(D)fefPR~&Hskv)m#ja5E%u+vn@tAtS?q6$G zc`n*&G?9kXnd-0V0Mx8rspiQpeUaoCDtSWPp-uqs(3@&rn&`|A(^Vw(nLZIpIf`+2 zoTaW%=KwALEwhbi77VZVB-W|@EsKht5yC}w3k`WnU1r~70ei;)u|SZ(ve!O*ok@T9 z7$A;tb)Hdo+sn3?z`ij+1cm?kjH+Y%{Mv-}i$LM$kSQte*i*hSf&C>=4n3M(LItzc zx9zPhoKUm@q?FL5+3F^HPYd{J6o?cPjueyn%s$eBu821OpPUlznx}SS_U|psHzJtP z>=4>GU;S9Af0B01Q1j))A_IiKx&X$$z2ix91Qe+VXMmaO!G8^@lbHQ>3+KfcoJcMQ zU%gNr%IqsnnGL-pk&JGFj)nbjiPN3b50v*#QOy%p|1mj`)cXbX7yAjT`toRXSRBH^ zlEWW;5i8aHuZ6NKN=7tif*)9{PGk0*Z%r~TMv!6?AZ9O7Q<&XnA^j5R3}*zKQ8E#- z{`Jccm~r2k%{&-sCMJWFpIEB4X7-}fCelMONYRvqUR7!_v)AY{5jHOFkw{-iICT&b z5c2q%<$@erqKWdq2#Ux`AY>&pq*0%$^=R4qP?XEw!X7QN1^U0LjFP8kndm9OvEV>MCbLv``hew(@mVIF*yGTzOVf{Ob~mcY!h>O4Ca60=NG@BrZIbG z3v)&kGa3j_Kd)3z+lN~?kH_Fd!rtkL)i6O^tJELuBZ|y!pNK(>gu+wBTk03~X%^0J z5=V$2&TDQ$EPFnmwHhXe{UrIdqG7D>-rWr&)7vRZx9KCOjG_?wZ|Vx!3)T(ACXf6Kx_*!(3mT@sGC zazb2r6WaE+`o4XSh4EHoXzRlBv!u#{U-vo;=hmB`}$1+uEYRA9b&pq*~eJG zYZ2;VLbU0=Eie_UxjNPUw1vndiPDh}6NwGPLb_`kf>J6)B=+`q)Y0~8tBM*^MP7Nx zSZP^h-exsq|I$L#V-TZp(Lm((OBPOi3{Et-ST^=%9b6q$ZB`L~A>1X~H^Yd1|6TPK zdtSg~L87cI`RfTfsQp%TyFFk5lcGQ~IQVP(Ef%nL4A6+_{n~!N1*{tj48mMeKeNxZ zfGH9v8Rm_K)=Gj0?NsO5S6hf{BJ(2xY6$_g1=Mtx`h)#r3u9dj2KGHf%4X0_?_o>- z!NOP{gMrNtA+b3$=%k@Rme|#x$%k+Zni2ha+FoPArlfNSLks>1B;EhHXo zL4>Kk@gcm4_Wh&H_BY2g5s5&hHha`9_OlkwyD>P?AkvbL)gjEDFve_XTTC~ez@iV} zZQs3D9R@XIVeE*(h>Z-Td-th3?42#NT`|2yVm@i)r`Vu}TR88>GzIn|((|DGQ49D% zOaswi%-#pkz>5~nUlPZPuxxNp#ku_jXzm_QCDx?}532Xj&SmNilz+*Vkfdy~YTXiP zIVPx*CLY4fSBy3JFepNrh??Yxn#8_QtG>wI$A4c&pyE{mzVUzX)7hI@(4#R>xKj{3 zSwP*tP^<0TER3&XFs=)U3>;QB*zdH^j>n)Gv50%@l@{=96o}YDLTq6^iW3Cuhb9iUs_lvVz3bAcjwpQw0FsZejfu3I0zAZ zaNQnLH{0K9U^4Ag3PGv&7Vvx&Xa?h*w&yf7+s%ls z_h`%=m7h`%+kF-euH&HRrA~;((DBLNs-2jyNXIu5gN5%v% zg_jWYmPvd8G)M9e>K^+l3vFx+n!`_5eo())e`EniM}Z<>O*^9|GW%%@dYgpG698h$ z{r5gFeEj{i>#|zJhyA4PN1%NplaE7U8Z&~i70PEMTJ;AUr$|{;A@sH?65j zSu+V0l*Ps`y?0sd%EB{+=xrf=PRsu>Y#fIRK9H^dsQc~rS-{^T z+_3_c4%?r!fPY4skBvdvcSWs@{h*miXkKI(@P_#4>Q!hKdvg<57#T%OK+(cB+Uxce z7RpBv3J?I~CY@<6_THj+gt*?qw8ivvyw;7@%~xzm$|0-DftV_R03j^M+;rtats9TP zcj-adqi8ei7pz)%N5Rqo(YPRbR@HXflUkVcej3vXoTP0O5i~&m-a_}pqDO*eu;G-@1v~Pf zWxUM4wX}OgKumm+qLi5Z_+&+)7LkD{16nqUSQWHgXrTmRP+${O)Y0Bgam!bUly(+Q zn^+tfWU@2GYv9~w;cS!dQ;0B}P|eyxx^Ei7P1a@N&NBNGB{NjH7BO<=THnyYbtyFP zIcN!giuNJxn2*0?1U;S*IZUe;;-`qn!3!YSRG6l{O<%l-+RyDur+?D4RpeM|B8X=@ z_LBcq{KS(S?@{;-{3RR0+ZtceeXH?Ph9=^zj4?_8VZ%+d9-;Q1rBK7L)dZfx*h_AX zpLp?N2Q_>be~H&DLeCzrPupCezcg2So#t&r`MVr`98o;1kZ@a zB68_UKIX0A$DsDbUvp`2Z&dGdm)3}`)kCm*@<{|3mz_ii?3Hq@Pii12nJ2CqjQ>70 z9_PTD5c{b(1yw=Ew{%7Ph36HD=_+pDXh)H@oX)2jWys;j`wBF=0q)fS@QR0+@q zoDQV{MbJf~>T3sRMY^cbK>LiI#^WUhlkj-K7c?RhKk?qcA-XvWf5}KFyeY7syxI5} zc_)BY7HRFNv>5`C%A06oC4#jP zh-7$bF8<1CuC1ld^6(c%sS`5T%>gd$0e;B_qABmgTWBL_Pd>^YBFuh%XpCW6V zkTsr5=UZyqXhA)J(n>o*lM8WEiFED+q!tySa9@dbn#zl<7LbH}nEKR5d?IqFCo+eW z4C*xqC$T^SAR&NjqT&b`#pQ0St|IZq2vVHir@D>s7gCgK=nwH1Qi@O0H;qM^Pdi8Z zn&2;yy-V}_+HU%^DSk$hatTSfNWk!;?9G6-l6Ex1U;jy(o$JSBf(a!weKO8uGLd#& zCxpV)wAF5;Hf<2J^HFnDLjp*1qp8&c!LjOgcpqTrY+JfW4z&?#^r1FwfxNTDbri_# zRf_^~>ux5$T3y^m)h$s0xvC%1Dui%Eh(Ap)w8l>>9nDM;O&Wr-wcSDO&JZ3h*q#oL z%g`ZOZ@O(Rh~HEKC{jQ#P_@JOD>f%nQgL^wwwkJ(fJV6_^DfIeVL3h{79beZG{Q6o zmOp$>Ah(SE=?pQO;0B6ZkI0HFG!_X|j^s!*g))KqJ_M>-zXqy$cu+&?1*Amop)xOi zLTEHXf@7X&pet?XHak%lZ6Iy#iavVyER^JG17#!i60?Ym#KSZofWNHl!rjy_XaHg} z0;_L=Ug*^Z0E>V7s8?J3L}DEr7Gji`@;9hEQiKWVa}8;FPi+e|YLA~% zPe-0LHYBp8QM>+HUwZL>5ZneG0F}dvX2(GTt*69}0El!pLONT%!J*1&F|EjSIGWc- zyO(O00vCB}*Z@1>FYq;*gO)&b%d~f?Zf65|`I0IAw8A=8DSBq}J-WBc!TsdT+}Ony$L_%WTV?7ba!|BL{`#=)UyZv!r)~}QK~V>MAHhPSJJ>_A>DH zQ8S^Ok?j-JtCE!1+t`=82;Sa~)t}S{$e`*g`cwRc%*Xan(Ue8E0~$?jK{8A^wzjo517M}D)Hb$^r6aUOw4^@(aypTE zvWFfWfS+>Y$olw_?zzQ+A~_?=;3jsO#WZjr03gFm#mK!I0x)n8%8*%+PA>{=pLCBF zqMJl67jh@?Xw;57b4HMLa!ym)3VtPuxQ{ybTz#&1jxP&fQohRw_k2 zC62@(ZG$a5q(-FC;*l8NSE3B#%QX6)GfG=XTZPh)3jrw(`)Jke)=#7;PuMpf|uM(|BJ7+x|Cv^-pnGGq{B)7Ej= zX>K2ZpI8Hj$#Vz(La6^|lzAuqLZtp-ioXkgLI0eiGvY7A&}Y-&2edWx$=&!Vbpt}< z^QhfKZ38X62W5zD-%C&28v~V5>r(RCQt2dZGL0MwDB{w;psU7ozW{y>~Z#t7#;rXi5;>ONe73aGF-aZ~2u^B&ib`!V5hO~zFs zGT0@e>f8wh)c;q+rsY1N{mt6Yu4gneau^|-E)hBG)btq1ZJ zW|__Tk!9wkQ_moksPt*A5|7|T(fv**Kk!$a_(1z}Vy{-42993|*|P zVsy{Se7bW0f%oi21)Qg3y5XUZ!!z zCPusSdmOyMat&Dve?4ol9N|F?>C~%8oUD39bl4|mhCBg&;#KW7M!VlJ(UE8r*W3tN zt{9qtc;yw?yyAaGlv2@BBrhOx8KK21VDP>CON^ws+;GFpxQzR6QHlTgx`y!Fc@e3? z^`0lr6B7zu_pXHWQ27~+PhY9wnm-i9bR*OSm(S)ibT+auY0fGwf#8B zUJ)hjiEAmMq^WFdLI!{REg>bhzhVs^p{ez$#ls23JZp`Hc!p^S=K7KI;76uPzqQ(E z#)d^`aQYE=-&n*n^O|*=rzEv*6W< zhOvYQC*j2sgoHF-ikWKxoY3KfCSY$vyEg^Hj(V|2N6-7aU4 zmv7S+GRpIy%}5R05ybVT`Dc|(-g1Zb9-|HK8q?zzo}=axLV%=E@_U-b+wIbtFq#xZ z6JnvuiSl?nR6W?1v1m7V{^omFX4I{{i6Awh2XfwA1b^eno83ZGc58^c`?Aw@IEa{V zh%oRHKIa3?k6_UEO)>G{$tRD5(AAGnyWk@&favKBG2=$GwJ&a%5fDy$w6lzLrs7q) z)K73C;AN$~+EPXxKCqfZ6q7?nmeb3hAOe2wKJ>_LkaeWs`Vd)vhkV*>(|%1;@E~Ti zIot#u`V_NW*%Ep8wfAFY=at!#__%`*ReH3?b%VlmAVEsJU?%#Z%A0LEZ~d8=n2!4_ zTChz(vj`l#f2Q*{{-@o`Xw?5KFj5*^Mvyt4E{msapM&1=FGLeN2BEL$c7xF4b_OD% z(GhCg9uFt{d06X<7?v-L##}zExUNPF`qU#@6+_BwWOu=qiFD_Lr)Z&GZ;?YnaFZ^D6hq2)irHw-9C-ItC3*O*IvEHgCUsne=qZ7_(WsLq= z18G}Yq)UNE7_y6>{7Ji!u^}|S$PhDx$$NOWv)T{@Z!Iy_9Ex0g=Q*Kcj@HwS+zCG< zZ-k7Gr?E9)&&3N!025m+&3?&_*wBkwFXM$`^CH>v$7X6aFY>SkIK(5 zwlu;%+~PXHK7{1Ar4PPC!^vN2vbj8Z`dWg6((ll-X>Oz}^D5Tj&bt{7fWK+|Y1>04 zmj$cPl$-DRO{j{x+hP_OVxqj*;$&$4xi&3)HkLmhK?IUa9K0BQxTfiQ_}+%1|Q*pkusVv?ydtpt&|g z$PLx?Dn{=-eckZzrb%as%z-=w*|n-Utv+04-)^J^6ej68^z;=inKw+-w=g=UnK&No zY^4&117{MWD>kb(BH{)c2>@VqEt*|!FWn@B0Lh_~d3Z$zqt2jr zAA@SzS&~?bSLNyT@h;)Z7@oD<-G0Pxp32uRV>+^}rXb&?R1-|>D20t6Y)y>ku=)lP zn^H+3tf0D@p1!cJF3Z!XZjnBNDyyz*7wc?Yk$!>U^-iHiq?CHG3OW!{AKDu&+vn-| z+|fYC13W!mxSr`gKDMC_9lb6_3n1J9HiF29XxS+-hu1XHJ2G0*$RHaJTDf3wt}noG za9j7p6h5(uX!nn`*R>n)@byjg-i$td`?_+(+ZHqz@;`2)SuVFqM6p4K${dL57COxD zkE7(^(Fbh&BKv_}9)Jkx4y|;UEUn+Wu0HgB5uGa03;CO^k(Ed{?uqTziS>S>MDK*u z*-x%3hYs%O)CV%mn>i`C&B1{OsSi!~ahE=T;ejl%yGWges4HIPf#@RkIi}FdcX;*N z82ckiGj1&*KgG>(b#bd-hbi%Q6z0TAZ6{#_ST-GOrfPgyP{&4~-H@8~X6$l0aVQ4Rvvx~D#o(U!W{ZX#wS-s9xEdZC=% z8tK3lK*H`VbTJpN237RYKZm|*9J56sZNnwxA7BC)yI?M5i#!q0p!M2CmL@#@#LHJ&lnpK1&dQ08=#NGglAvZF{HRY zby$T|i`BR2I9ESaa6Q-)*NQrTeSW9d`>p{A?^u+m&qewpQLx?RkF4{uEOZU?A?dCU`i3+E{s zl?{Vdl3MuU!@}rj3$~m@Mn9F7>n%B;@GUHfb{# z@ero3W^baMYVOka(XGMj+Q!kloj?IZYfm*t z6C2RlV~O#!W0aoB_m9+vF?w#$bu9z2p+w{r_hH?zX)!J1vBI^ZG1cs~Xv+cQG&_vs zmUE{Pvv~Gc9R~~K=vwMM;1&lonWysfI5APfC!j;I)ky6hz)7i%k&<%okHmcLtI&Hg z8u%9$VPrcBxC6Xug8mw#r0J*|@wd2;0)uCbt|T_%&pe>x5O&j)>%i!_g#^?1N%1!R z*F?QJL-MxpkD4UvA9~o>_Yuh9;%_~K{hj^@Sw(msrRHJql>(L5 z^#X4~b8279-hlc}(e3o$dZ-ebtfvTLRdgjEi+3S1xEHSXs9!&b-u|hW;i9S7=dvFa zhS3|dboo69ya)sjnuW%JcB^1^lwjCI?WlGR`dXJ|kEaJKu`Xs!7t;B<#1ayKs50NC z8A1S7#ngnvcA)D1$QT`7Y)_$DkE8R~AJd03wmORCL=I2mC>HNI6I@}7Vw!gO`0OWy z2)r0m3w*|-kxzh@KECjXcIW(V_5QapQWwrc==`#vLV{d1|SGYC%!qMP=m=q8s$ zHyvYPPOMPm=`^4_dqRv35RN@nUF>z~cxQV<`soFob_5$AQB|QzNz!wcRATP&{{Z2fwL!0{}?dF*!V!wk0V4f+ElH{BxF=jt?j1}|A7_NhIeUe_t!dqen$c)w=xT4D0c-C)&5NMvJ? z-qVO5TQ4Ls_ooQ{3lqGNo$ zz`>_)(T~A1{g9eXWB!d9Cc;;|I0Q#tiJ?cfJ!lq+93G)C3C-xm2%zfB1k)TwNZ%rMC^ z8}i0A5Dgu7CN$t*eGbP4?L1&^fIeg)HWa{L+zAbN!^67HNIMh(;(=uW?BoXtqrLUi8M^tpwL%a>O2OGdQ+Yd9~`zt)SO zaK4Cu-Oz#JLq~kvF<}|DjWP~C0@xG+MkU{1ZZ01ertiQbR%dus+j&A9F+Im3t>F_- z;)NUB(Vs$%7fvGellq=CYxwb${*F_q!MaC#5&6~)j87K5+btoLH~bDvQtnO*Ex(c} zdFutkyPnpInR1^jl;(^BZwNFso~x<)9;!qc8w+z{$nw5v|BqtGKVryAxkQk&;()85 zso?GMGkQ~Ac?R~2@?f+>kup*JlQ4+lmuPiDYp&RhT2SxBqSlO;;2zs~7OOMwtp2Yu zC8lTWyI3~(W)NataRzzr=7a=3<{XxdGA#xRq2&-Zfz@kZLJI%!Jou{IA0@z#H^quB zLX2tWGo~~dQig=?F*Q084jqkc=6MvBcQg52A*%N)?A)J!fr(7Znnb|jXed5Aga{RM z)$KPSWS5&pz<%sl5`1wOJkKv)5~_4)b7O6|@Ujj+@Vj8d)nAPnb~%vB*)noVq;tog zVzcUb$(Ui}tY95n7CNx{ce92I0@yTKgAR@a9S!~#HshR#6yR9xjw^}5sveEcxjgxg z=zGoUF$*1tp6d{IT+y>PT@iR+{uQCoAJ;^D-G~pn3b7&2KM_D6u8{yNtgxlLf`s@i_W_nc%EAt$(y zLlq$>eQmb-)Y@jdM#sN3_yd@a_lmcHWxZ=6MSlKrg3ZU+fY>%bsc7TS!wHRezTJjp zwDZ-Nu0fcOYHH!`ZE!7HHlL7WE64MWl`evIML(i|T8#v5F9Y;71D92p-9 zF*~?3OQ)TWLI8fKYfEADzeGbm0CmR|NodWqgu2u=#r799Oo{;U@P`D>nSpgXCDo<~ z_j^R|ilqHU5M#s~w z4vs)luI?q;@|C%dkJ)s)xMDvo@;)>8lRrSzzpL`pvDQ~7#AFHCBsGq^{O{pjF z5L2!J!8D17VFbkZzEo8qf~+dv#Sp6>v!&3<2DW6;Dn~gE6B8t{LKxAfOU!QuKUrkM zeun7x$UGw8SU{+zfvpbjTi=EaGcn(y1lDdVFddK1G_V!$9Sv;I_V*P;pk6s8Y2x-0 zp7cf-Ytu#$F7{}oeUKdBeH+{0#A(k>i4(~xSP3+|4g{|6O9?s^HMOPkpPSgQmFBiG zS_eV^T*Q~GvT6KcTnKk-Cb&4hb)<7A6utb=)w(6vh+k_CfuW9DVx-!QGa>(=h3ytR zIa+A7iV@-9D!yygVQE4dzpIrEo~zYG5wK8z5?s^TmdUrawm|{bu5YabB(LLAwHsqA zXoA;fcwwD#PZXcEqEZ*s#4M-a(uYIf)}7|HnRl&FNUe=eU!8Q>+A?}afC0c0OV8xxYLcRSl(%1@CU2S*cFo|kYqb#$=R=1;b_)rNy%ezXC! z?~D-H5k#KoV1s+(kk1%2z%GtYLd}BiXk$){7e)&9bup~Iov~=^br!1S`3?pcqxNAV z5nt`1b(^4hrgyOwFmjbfz~Tc&5?rwbTfzAoFh$C5QHuSDRK-(ZI7SsS+oBsG$OF3x zE!km{$u}R~pTTNx#EN;6nO;VkMm0i0fJAo{erddYa!0+XwyrGQSEL9Ph38{XC)phqhSXi?XUJ0 z%dBfe2*ChvTw9~|$-cHm+}_vL1K;tuF~R^(3^<*xmSM{ZmjOq)BDo;VATMqzV0;S_ zaQmFfyWcEG7~I>UP+HfR1Nn`uEWWwF7{HZ&ky(?UF@rZ%e1PlxEv9PXCAUDQFg>C< zaRDzzD(4cP(kkG~28wQu9x|7%6fqxez)U%npWE7cD+o@)KaAeIVsRd4*4DBeUUr)e zmi(yx7PF88gD3+Zqr(F%;$bHFj85^rEnI!wZo{LBw~Muye_I5{C&aQ9j`05sg^+zX zRIHu(gCk&A0tUF|ICMwhZ~^{dNCYfRPf@$WNzBp2a&Ub@&CvM=!G}iE$*`mXz|^)9KP)?TUUn95LwN`81V7p zdu$6C)Iqcsu6pr!gZTJX_mSwe)<|0kJnctfdWD4{jC$ZSq64EKx6h3d^U{|rJd^gtCk+Jns zeC7UxL=fI-ybag4Z_7ey`rz@ExYojKDZZIy@%^ zwEuv0@y06{crlz;JRtb{MYUCg_mhuJ#O6n{UNtCpiwK~0;))!W^Fy}!@MOYVqwQ~+ zluN?=J|B&E#8ymY4}*JY4-4*Hd(99tw;#_{0eBCh*{&K!A&Q(}mi)@rkSSnRy(xlO z)32H4nIF+<;~y1EbMRX+48moJ6AY5ou3Z9yu1*Dm==iTDr9NyDXw`@3)4rGv!F+zY zXtnjF2w0qo1sIpPiFAI3EuQDju;JkL++NZ#_fBFxGb+Pud?L&suFDu*N5@ z%!{e_JXpYW<_X2H<+%u0n2ZuUd;vD;m*$H>xaU}W2|D@l1-5~V{T$OH%z_f*V^h5r zLV3-49wbrs`DT+sVb`aU*$lVcjS`dT*M+d`w=b|H3!lnJCc*r&M-72@`ym7JAh7-g z90caQV7mtYwzc>H4e+%u+H8!yAq(XK61IT+)bjL~Y=!jaV%s0IT0Ha@nK(c0dYt0E z94|k=jB#~d0X?wu>(ODix$<8%mv$=9LUMeSd z0CUwuXs+2^6PplxM8!A|*=&oJ;|sAJ!q^>O?uvITpI&GCkc!_lx#WcqjjI;AbJ{9% z%DoUFIpr7EW6JlhhlG6hmVpkMJ^b9;HZN`u*GF1#@X`&o){Je99h;ZW-Y5=)J7UKs z9u5^BtK$D`60n_-3UI)|BlQkiS=b`MFj2kO_k-frK8upKz_$2$v+Yjds<$>7uu5F2 z2?RdrUE3fW@SB+o5}ZVfJ{Z;V>r{QVVR`3n6Grv>n=G;sO4)n64Zc3-JEkOfVQtA+ z0AwKT04elHi&%~$m799MXUnDiyP%}%?Xo4qQhV2G4tqa<8xWJQ)hfcnbVa*unNXSA zjUteYHxqVarH}nUD3gbFnB@p@CT z82hJ~ZGc;E}>3#h8LuMd<%ogf4h5LCiI1ySn2K`F%+5er2OOt7&Pg=1qOdatrTFt7^|QMW%^SF<@)$ni(uC zFR&lX@{mxAlm^4}!skBaeVgYgi(PRVY;p8V=xp~tz)MU}svI0W)1aNS0#p4^6IN&z z_D#>XVLqvb0f1AQDSr0<=J50&$#5o_7v(jpYM zFQWVZUfCY$RjB32syhNG;^$y~QBUYgv3svZb8v8gk_zE-@4&yw;~5T7@QjkaZ;d*E z1OWtsRw#Uqhw`rH6oKODIEML?s zN zy}LcjHH}IBTTKZQ{}vdNq`v0IfMNtm2MfXTyS)ca)_jlWDKIacBZXWX9t@!?DEIyA z1rNDkM7LE^Udp1J$7En$sV^-lsn%>m@FIkG<`ZJh^H+rNtESK1j*paGxH4finui2} zckFg?m&C=6@%W&*m+B7b_-xP%sJMQ7)P$xjv&lD~PnuAsXEphj_?f~*)By!YNP}7w ze!^gny@GQsri+7?Be9XEV+Tb6{5hgxy`bE zX&MNKaV5ty+9OyH^WnGVI01>RQgE3v@M+d;<#QW_K%DD-amR(a&UlQny;KW?**fI@ zZ)J%K9#pi1c<2dnkoZ4=>ZXRrA2jF`!u{~X+@~*W!366I0Z20kG(6j3q2)xO995Vs z1EH&6r!V&sLjeU;wyn0I(3tUQA+!>xMk(LdfD%_`yP*)6yxE|J4jripL`SZ}A4V7s zl6-owbpK$zW5*Fcc}rniGQOqokHDWTW#5M~pe$Qzywi%zFhzQjQzk;ZS#J8{%qVw5 z;RUhlU70FV;Xr|4VB>C~RG`O_*jm_uS=kz~6UogS1vknKj1a9X)kO_s=2{z}1RA?8 ziZ`bWB-w_I=StFsVXz=`p@?a1E`(lxLZjKS;vP2Y>s$+=n}D3~yZj&%@9 z1u^Y7xW*7t=9iVQtw1oTVMeYHkaVUdK?t9HT5QP7>LdgWE*#o;zg%&Z_jVTc6_BTs z6yI6;O|>IksJ)OWV__r2!$aDhAIiaznb$?=MTPG?MsT!4wA_4KA-Lf<<@k{OJ5ebK z&BK<}O=!Zb>L!G2r2oVw<3Psa&efS-5g`q8 z6pj&)E;E{Rh-=c38WOc4Uf0FVn4K_mf`?LYlRAh@4Ph;<13M#xDRB|%aPnil0^HWx z?ufm6St@Le{E|Bz&zo4;SQ$>oyc5R+LI;7g!xYlmbQiWEajwEz!Hh;N zVS>&=8AfPJ^12KEz@f0wO3~bbsp=urgg#_UlkW~P#=u<&Bt1TW9|>XuR+kj#A+#h* zJur*h9()-DDQ0vQZeBt&a^4frwLrOZfFOJ3wwG`kIG`y_20?O$!M*5i)wyvUp(;Gi zXh)?Fz#{zX4fqi(ZnPfgn=NSZ;6lX1t>`VRCuvigbO|E|wZ62==$TEv0}b2t1Gtj* z!xUiU3Yqb|{FNvg z1Py?46BO9nt3=$A92g=jBZ1z^bvdh8(TUgi39Xo1KL9SocYH${w}}?6!rVyEFf>da z#Lp7sC}=o6h-ScpEXHv~5aWF#=$Qo%QFia5Vo!T$?Ju+^=w6S}@)xc`fP6niBOr6; z#3*5^K(JPMFb*;YdnP}{o%}E$93*VW9zfXtmg!PSm-$5A_x4R zK(JqVFsK8U7&-yeaUy3sAj1kvhbUw-7sgXG(D^4%$dGcXVuEl0T>T~~hLAxS(uy|k zHVIdRC1b3vL2oi_2HYp%vLsIwek7GuK%tacvXq*lpsYz0lZY29_zW2|_plQf3-9IM zZ*Uj=rU*gsHK%ZR6(L}q@X$o$WiwJcRcOkbohrmb6U-6FDT{<$L1G#zh)C-Yp#jq; z7`4cdIe;fRwxXglXc2lcXVOC`6ugAR5@qVfIYg97>Qo)hf1wostZuf$Wsp5Sm0VW*&gR zH54S0p)WwGUj1)M(bAagTUV2f=f=Az8rwHWjU^W)G7{i>>cqeWKmp}rlc*o zw*n~c&1z+t0&&_!2rWso2#Pq@a;t$F)Q+)+xuQVz7CQ+_m7&Uk5gLUvw9_k zo=bZbEx<@HCs$$GaT zyq0cHLc@3t@DgL6@Gv`s_jEYSUozGSjRdNRjq6}z*sB#O?8I0^f}qf5-UE9F z7&Z8903uU8(x??=eHOHpg^2{IAU9&mjP(_>rcrEIJB^f9Ft#n?iqnVJA0#BKh2n&Nh0O%2scdx$&&bc{ ziYFm!q4?ZdqR*V$AykFI*jBzNY_9=0G`C=v7y!N zdZX#6OzC#yNF}DkIYC&idZS_O)c(tDH}19SP31?>Lsw?q9xz^HejK+dgulWV)H>0S zsojeWA*s9g2}xZTvqao@I2-aW1Z2~2;6&J`JS6Ry&HL#NRUB5}GP>!g;mDjkK-Zyu zo$JYoIx|-t1Oq8>Z`2b6yDYFq9~O3G<{YL});+dKPoPZkN9Y6wu+6ycU7VTHqZD8D z%ICHTNjsotqZ?6nT-c5odYsNF_n@*6IE5D4o)orc;!g-+{UJHdPYgsm^CV?#+b)xs5zRtj z9SORvI4>z!8MecTkI|vmW7=Wa9mN!+_Hc_U0-}cEo`1g}a2-;iJ)sYxm=wjp6rk{( zD!unT!LjdN4WMrKjP{lBQZbMd9B9~Ezx_FGedu#~>#slJ*9y*lcQM_4b1p@~8a$*7_*h)U_XYcGG=$K+Ejwv;a@5PPBSEly zBjWxFP%C~#$CsRMyZ|QS_0<{(+@;v$vGuPkf;)c7({1Ew0@Gv(w4%DBIhT?VdYU1l?yrO`ibNQr}Z> zu{hr3SYgajSV3W?zL4Kh@XG8}$gRRv7+58&C8GHphlXShEQYzHVaSA53x%BNDp`4h zn-Goq41olj8B*LzsLkZp2wN)5fWIbVSe`#cMQTsTR{VAuQ7)oC;F=BiAcPE?=8=RL zfd_gFDa96}sv)!YqmVbNefxzw7EnNE1{TP36ehx8c{EV&;4P6Ua}Mn#d4n^)r7I zAbyq_BA^I1wPa^(4h3?GZ*hXGvGG<-ktJtrELhWM!|-%R4m4OJlanHmJ`svUpE--< zUkpwozl})5l4>~IFg9Y*JOS|%^cgcyYa}Pze4p5NR6Ny9xx@dNusG|D7jS+K5;@-~=f*wy3HFEEHxLh_sj+`e>_1 zt5QREb^J@cjo6U{Oyg!$pv5-p*FvO2(9D2Y*Id*|VDVR5`@hD%z;>e8RlIjwhzQ;d zn5HUXQ?Qw|E=zc+12BJ_z2mq#<{&9rM9Nv652M!5#YBcDRuM3uLkqdh_yDkXe(JWh4MEo4EkF+4>n0O@lL)j=j zM?{ptr%}YhLsip2kyaGjuiTw|?-YmP41zg=jTlApo`UM;$za*1=YSDb?t#xhXpX88 zDd{e8#i`7knK=Lt%9wa5(79Ebk-QkNdd<6M?FL9Rfk|*&Mp-3Ge2D823_@A)Lbj z;$2lDJ&0n`_A)jJE;(G^$R!8W?cnUIjCn=FV?otA01)_Z)*T_))=i|Tg~vFZos%md z_5BqM?xxv+9v}qEPIX7d+(&d*U?BY)6K`lVDUkTyTmURDU(q>CN|AII34UwiK|(Zc zar!5FJHSdWTGN*GTwrGTQ5>3Ys;(*F5QGwV1)Cc6k3|kwhP`URgbx!H3!3xCr9k$W zzZ01X-yVup?2!SK`XV8e7K2b)?>UGQ^A`?}raqA8rYQ^+;2lo`Um!-74cRvefa_-> zae}{^dJhJF;&IpHw&MC(9>Ss`A~|S+hS){LhjSWWLuOGA2$CDXgRkE>u_A63>l%Rq zD~?Q2Us!JEaTD%tgGv*1qCfauK-Z6JETHH2ct!r=gK%cGEJhIW`SzqTF7tCQ!dJ%Q zp)ak>#y&$Pb|CkdIaq}0c5ZXT|CUyYN%aZ!P7Dh1fORH<*?{oVwp;O=m^e^I1QAojO%7d%C}I;dH4WH8;x$Y%k<`Xv8~7@kBr8eXT-n~=KtV2m z$2gDxF-`2ooq!``FaSRqkc|W_65*w`xA9;M27|C=-#K+9(P?~3cH1j^kpVxkz04NF z8p(69=$N26#AqyBHExpP$l+!f^&{WxQgCY=kBEpO+~nZLa7U`>7Eu6I`g48@i0wu) z;Ap@c4@1}7j1+jearfyi{ET2FGeFstfgj7Y|GSk=cV#P?idRD`__rKUAcw|8W1<_s z257Uqwjjd&Lv>`*z zf{%K<28S{D6*>aNM%>nEFt&9G~t6dMa#lFgF|) z0dM@PH{TqZ^oHiG5yFh;d)WKE@2vU&2H$`!0Bb@$4sIIuoTU4UI#J#k-t;j1+aeOH zssf55=P3>X;j7q#z;mfJaf`+h+5N+{3uN%8o#N=ZjP2C-OnDKQ18G=itV_R z?84B+ewxd)a1p-}yjO=%5IO%Za(N3J$d4t;5}C?CT7p@alKc)(JBwoAAO-eLN<2`7t^5hQk$q$O#st?bklvt`3ICil=3v;IWnRVq*1 z|E!>^KP_@1f0c&b1SJmYEA}JuR8cB9)f4!mF+O(Gm9RStzjzuwiyc7jhMl!Lr`TC0 z|Ey>(vS>Szp67A0v-BjK4&E7}e))Nkx~lSZQgjLB+M4`~0gA)9;E~@ihzbQU(?r_p z4cpaPBw>wfu%#qF2cjZ)1Zj}pH`R@)TM&7BnH#=0`<+R?j612t^FPYhrf@4i8Gu>O zbWsOYV1g0<@JoW+b{y+w!<^0(wN`E6h&BEXM(X%xzB>5Q09xIWAYLUBL*E3iv~>WW zV!~Ch9)IzaLp#C!qt7;eu>dA+D1xCnGnv=v<)hHtTsfu!sZoaXgPLMYYJlrYy=AyS zlLUb#4N3Yf?Bn=U(0RN6pyJwgOEg_zprEB-?K$L)UJNDt%wab>jO&FBX<2+%WW{W| zBTD+8ylt5^rhV{_SOKcwEb&sn@C+K(fvtTgY6>4$1U%$J&W#Y8?^#Gl&%+GcpHXmC zQefQCtjiCBD3=DR+^Y^SH4oIK{v%&Ns)~aJt1qZB6emA()j`UW2qq|6JV6S z;0;__B~#35n_gnec{ zJfaAu(PLPFKv|G{p3Gr12Px>Z54#rS^o&XN7(k@y6aGQ~)vV$Wj6T0cr5J?tJ}c@( zpH$F$$>^aVb|(|{lyasllcqREo(99Lh73K=j|~SPt_4901h=069x|aAF-oIngFNz@>zGOcCo^o>;Kh7-3Iak*rd6yM|IK(An7q%pqImS%!Bv-?BeD zb;TW4?&P{0?j|A9sROo&Mmi;kblQ@14F$1J_`u_5Fp97ndWFla_X@9OTFRglqMZhS zbVM)=dbe4C9G1pYJmeJ|*{EZ>mZy zlHVdkDE(b80wd9wFFRPKn5i=m;YejPR6}N(K>Up7ff_TFi3d42ft!jmt{fje)sRV7 z6W`=GGoBJVx{@Iy#4TfvC?-x*BL~umsNG4dP~4vBtSSBv+7B={TA%?OM+T0e&oRXa z&Ts@C$4~oohQ#^z2EGL(8{?EM%n5aFBX`Wi`t0tpscp7tX*e|c&P!0{ zp^yz!+KMD=X*5^X7}#W2pqrpTO4@Gb2gI_6HVq~#X119FxMPB#Uf=~+PKXZB(-mTS zU4gQpJ!aY@3N4LXtH)GXiu1tHP(bpWDi${Es}u28Q(S&$SkSAsr&mtTTdYn_7m3xi zVd=sF5(VFQ4IWLv^vuFaY^+MG$8q%15dujlHdu(x?o6)-MB+?VC-E#6N9t0^4|{-% zC-5i)m)(hNz(iS#qZMpBtY=xcr6^iHk-z4cM0c+5P4Sv7$UR%Q$FNTwFHi6r?7e9y zV0q?Fw&Kdh$XU@Zi=1^tJZ8k#;cOgS2Jv*CH^m${6c$wH-4}KU$!rC%y5QLY4JBGJXoXAHSe%Z8=Nz*Y9-|s8JDx zuK)~1@Lawg45kJUb8E!13mVK(0`?uQ7!;YQ#LP?|F~Wj)OcjeLa?d;g_SF3|zm0Yd z=Y7TRVBti`oZ?j~rFdf8PsLt1LRRn75UiL`zeWUA;13Rh3LuJ1=swLx;=fq0N0cJC z6`o%ILq|fgek*2b zRqLmi?|88dBO52)FQDq=XXAl!K6vrN;Favn&8o))aT;v3){8|Fg;Gfhz5RlI3Pb}d z4@j=r`3FoCUv3J=;551UJ9_gSL+9O(x=nT_#Zwf}#AHksuLdIl&P5BjQF$f<;qJ?# zRGR*zAN5)6NDy9HmpM08j2A17HpSJ2kp=SCFoXCppghNOn^u?K2VLD50*-(^n9N0h zpV}HtO~x-ojPxe>|d{=l6;~K#Dl`arbq5&*(C^BGy zK%vEi&W3z=h%5DDyrMd_OW^`#(_q*w$k=&e8&=fH{0bFkDq1UKj@Tu#(i*W|bH?(m zfsckOLut2QTo!<)Nfg2}^9lVF*+ zv}wf#e4R6z9}wifCl^bb`hPOrSBRlTZE~F)73|@JseBvgIEQjhpOGuYMx-=C+<_BO zK$H#)*BSYiOS`CPl0Z*HqbrFJ!z!h*oB~E;oSdS^WMz*|*e*66IC^}+&AK@tk|ouR zmwA1Rf=z;TH7FloZqG$^K(7L zR?#^k2^ne%8XC%oSi##s{D8$~(Mf8G>|Qvg*E?DYG|PTrH6B>T_4u7=3V_qclYg zp-=5;QhI;3Hu2nnslxryh-vwc_^H6a1%9TWm2|VX|7~RlXVuq8oDQCb9R$sOvyWfT z7~J2*_jpfEglOQV!F3Eb$Y#W!z(EFfExViUFW#0!&=PYyv_m1@lL5c==R$>VZ3)}W z!Mnu9=i@*#fG6bRC7i%V1`ppM$~fnSs%Zfnu?EjEZbz>-c#<&(MdPN3kV#wfHbkzV)mrH5{p7PiO&yg4X}%1VbVf zf=C(Ojc!N98BJ>Pw}&Fo3lV%xydd3?!FhAahHbV&u~>oPARy^C zR>JDB9N>t|B%Bf#H&hd8K|IAS57vfc@OAF(>>zV>W)PfS2VzfGH7MtJmKeJgoT=C? zS3Fe)H3W(W9>sYKO%=mZ;dGz|FMQ#Jf;5QS=>i3XqZTZ_)G5>?W-Q*C;pZT3Fo4+= zi!>SrBL^Oc6$&`m(nT|38&&et9rJN$I1@ttQ;=pmD3#gR^DgAcC9yR#;Sz2b@fw9d zdB4#}VO)ZEMUG_sEe;nUi-0q;G7YRceTl8U!%q(@8%Eta6*1&bI>4W*b*31WTzFe< zy{D|^j0@UOE&nS2!rOL5d=wtn8DjQ@wAn#qu*otd^5E#E)5Y;JTOV*})aY-mY9^`n+58UanLXHB;Cm(D(5BLws|% zz@ENC5N#UtlHT5jXhmp;YfhY=Sk~F?VvnjL>b+Jv$4h8Prsu;&_(z_29hjp4p-vOvaX6`LBtxUp0=yWD|HD&?MD-Rz0M=NZ zHRlvxmlX@4ZX4oWfOj3s+hlddI{;WjgLvHsW?A_N;q}?leIZaYm*k5*i2RXQM88cY zdcB0|T8$72IlGGkEU*hQrnrC-F3eS18==q?mmT2xJ%OJ9#4(QS3Yj*K#oGjAD<-Se z_&rv7hTlI#3#l#=Lx6}a`sXy?0hH|?$~*vO1bR<6gwmG`T>-Q5nK)1YrEWkXUmv*7 zj@!}!B?`8e8C5JEz)!O=YKT3+w}Q$7LBenl%&!vhzx$E9^RSzO392vgOZE$=R8} zkg#$NSO=6k0++#pgXFA+N*NIBSr2yUWjl_zJ5mSzhVEKYw@$?a4~mGty0c+W3a>(R zvd~U3f4Jx4?y)Y9K~(^v-EV;s8%whhhm(ZD1(UpV;D>}Lx=|B?CdfcC4q+?ID#T^r z`9FxoYW5(LteV9}s(8)IU=7~0N~{kVZ9kwMg{7R-8K^MKg`W+0^G01Ww`(Z92BIlb zRW&Agu8JABLPXW58o5;`?#Mvq3@fVA=|W*le>DwlM~GJ0<8pum`eO%v0K8*{HS+MB z{X=X>JU?U4AnjI|E0z8b_hazQiFu$G>wrBSQ{rAr1t@c|!?ZN!qGS}OWcVyLC3fG$U6d^cGcFM?vwTwMY**+}IM zM=-@r0wfxD-O$n|LofpX)+(2sVaO1jlR@Rd-Jw%eLiurS=+;B+aZ4~pT zaqVR!X$f+Yjh9Hk(ua-#Lmn=b2(@5hsl3V0Tk`!PCsq$_2_6iMMJjZgw=YL7A9HgF z%gfq3B8|vIUCBpwwJ1VzM@z+O9iiXYtS13S-gvc8^>L$NwL(9RF|bE?PG-9S40q{m ztQain$okhJsHch_csA0IW?IOkrcz+X2yVy}2A2cC922_?rP< zo_%ZF8^m`9uBvAn$z_a5M8ZZI{kBmYl)@XAni4c*@;GS$-z`=m#Y$UOuGNqt60C$X zpZ3y_SQ5E~WbI!gF1tGhz7O;}Yktn|UuGBVpWapt9Z3VVBkxVQhY32SLI>J0 zgA^neA)Ti+8@PXx(Su`p!FbA;-Q6V5SOU_#4adO45YPz>NTyU`LbM$vtggwGbaO^3 z5B5)1*JSZ863f&&NLG>+Qi(o2fo|>iTL*?c#gRo2jji}`>&oJ>p&lLhs|CPHmr9N+ z1Y$~A$QvWR0@T@uTqIyX*elKppDF5yYr)MG{)0~X9TYZkihmtQ^D2({K@%6IhnM6&_b%rx7vQu; zTK(Xwz^imfFN&>r9kB+_=dys){VfMLz~XexY`&Gfhp{-lz7oBide8?p zELv(u_=2XC2UF%`0RMd9=pnQ?Qf6;oNj{GjaKNmP;K?_B55Nw3k}Gi^ zE~pcD0+@ebq%Fd{S0fMdAm54U?NPh|Z3B^$sEJCi4)fW1D?Q%s9y?CamC z6&$Y>_>|@Bv&Kl=3H`?61J=^mZnp+91qA^6G@%RZr0sesyKOp|Ut@r%psaCX&|@ef z*H2YzkXJy#!?v!6`i3)afhyRC&9cL~brbXPaA#6l4Qyjy+uKq^X|zPVC>-Z&ER z1gD5nC<7D)6DWj;;yG;LAcaus)Og8vNJSMiyn*nq*~kx$M{#d%aCnF-HbeI}F067~ z1_h8Num***$4f+wG2@X81*eW^&*+EsBsZBX`AfnzbUz6HuPhEEfkUMLDLxO75viOC zL_v*MnN3qAdwC-Rm~(L)DM)_*YYL8(l5OM+L<%7WDTHbiI0*&~3P^#VFa*#W^;Myr zaD@S(7n}cwgvR4EQu|HKRf+TCV|Chmfw}FU2%74_8<~ItMT1o(8cJ#E}p`( zXhoAf91(FubwE3W@TA(xBK2aShRS4R^2%iNjs?F-fCNUyO58*% zEr?lx)5P~+k^~D$C^q@GEd*+X%eixeGdj(N%=Ya@-O(voW{|B9>{nyS==Q6?!B3|v zCPY0`2XKunR!D5fqw{!#u=Ym{6JiUDuHsp^GFhxiHY}I?WN)8=Ld?U@hN@X5vlO#I z6b$fd>}<@RKjocpl+UqR39%A`@YaPOXyk1yOuR#Q_bRhZ9Lyp^*JK;UU?d%^gK**GQ~b zs)XiXY0hX^G5F*x;AtOa!z~T~fVwSIOv4F*+(DO+c#71n=OKBB9H(l228f0I#*;JF zzLlL?GqPtbfCQyMP1tEDtBKuWNjDBmSQeGdX_X!+IRIp%B| z1;FQRq|}2-(gArf@b@Rqi^K{yd)9c5)*^ehNUWJ|TO=2F6$l)ZIm^7kF#h4j2Z8ft z`y`ps604XApw`%z9_(L~Mvo(2w}B|}4fzE&Q^q1%GMU(2p^~2l&dr6q3+I6o5{kkrnq9Bfd))4s zF}U4EJ1Gq6ErhQj*34gVB#K|HkokbIV1CC){<0v1E{B7_m-G4k0fP6YdBVuHU6PJW zP@Dv!q`x0Wi50kL(?aKcj2>`A&WN4-$ho%@e(t+5@-Z9Jk8(A?6j z%f4SaP$JTj8Ir0apcAYC?Vt+WP>W-d{-pW{zy_Wqh9u~v$e%^oO1%rPQZ}_3QZSwdlCC@oa=}>%Bexn;n=A=I z;Dam;5cq~&-ae4uWfp}fcbP#T1h^SB@Y9OpW?76wK71n6tD*? z`|@B!-^nyL9Zk+g6R+8l(H$iIESc5%g@F+1^rHJuk}shh&>dy~FRPDRGGp zLXP&j)2;X7oRXgfPbR;sDGIJE`ThJ`-=8nOR=a#8nM|(icPnXE`PZf217~ji_$Od; zgs$&a*ETy=_X)lAEW+iXLFR#jl8;N|Pp?=$o;+S7aYdc}+oAd)Q}(W2UNc%gyl42_ zlZPyJE}MQbGxgEv#L_C)7{}n_H{xa%jLsb!xXQ7_WU}jmK3l4?_quNQIrg)PuI}#;yd~{y+V7I{T~jV|D3P$C9s6*J6*1(T#psVURZOcG@T349pe9=Z@ijhs9H{ty{L_a*?m^rj^ zpYOO7Q`O_$Q@4Kq`r&-L`H{ZAZk?Xox$W|A(`$=|KCB;XqH1~6qs5EPGdB87iF&A- zbEh`vS;D80(M8SuqKi!Ly2Y)&u%~&{fs}0TgDd|1ESTYRKQ7Q)-fmp>%aDUwQ71C! zZ)Wq0x}WBK8t!!J$Nq`6#+QH8cYgZg;#~b>HNQ7JoV=je^Yi1AI}4{ScoBWT;=Y@6 z@OZzx96|T4UicXFRsX)}EZ^V(F0wrxo|mq;v{*xU_F$`%BfGz-J)xRy^~k2^c3AMP zfaGxRik)kpyj&!B`f|}K`BQKGvAyqVU%YifaOqa~#IH+@SK_zt>(Z(#_{C3Pq*-%j zu6}O3w(~u^pK1PH_zg}elx*4CPjV~oz>IC~*8L;Q+&g*hTr0jeq;yD7gteskuDz%C zMAa>r*ze`VZl?R?y*@3^U43(bk<*?>XA>h#Ck!8V_u1&>%&wU=K5OJv&u5$&RBu`} z-)QE;@{H));hX!1U%9+uSLx*y?@epporp~B@oRkT!`TDc>sWLvs0c{1l-do6-Z#ek zt4;!u{9Ii(EJLF_AmZ*GdBmohp9TxfGai?^NuxE&4-K`Ibt`zSQQpt^#_GD4gLHDE zOV-p)mdZSHwabI+JD1;GVwGSl4-fR7kt%iakagSnL8CmQ!Z?BaxayiA$Q^WU>6K*x zYPo~@;NN4CZnEUpPvcX6Bt$QJJF5$Nets^{yWPsVVR7R_$3Lw}EZc0BJ801|R6WyG z=9xD;+gln|_2_iJ5S=KE+(A>r`poRFlRIc#7%EtIlX-T(p_OZsux^=r?bEQNgy=CZ z>aW&+ep~i4>{Dn&x+eYQEGs&_FY$fqt_8cx3lb`}B)=Ie4Zh;~MI-lGc$wQX<3|6a zjre1fU>@BfH@css{LqZ^r9YQuheo(flO>8?pV7e6~)X(DBCyYvo3NHOP(56C{||ys!9GJN!-J@|o$y&7x|~t^d`=^pgIl z1*ZaMOUo}Y{`ilOE6a-7U0wFhYJASJC#}DX8Ia^!=$?99y2B**+7WTCckpbN^5aKZ z<+gi%Got_GYs-qJIJ19OJXy7W;)oacbEHrWr+49k-eBJQk7ip*O z1|}GfU$(hUe!pu-#*4ArbMK*K6-q+$QDPLfx$dfWjn}mk`q4+KH?J?W_I&a)HE91~ zv*|iNzU>b2@ziNM^-lYb54_tyKf7M%OK!h|`Uj=6Qog=hcC^Z8&+(do-gj5zkB;c} zHnBi9;NXYdsJCYQ*Q$MG<7C<1i&ji{lX&-Zx0xL-eU(o&JO1|j#J;cgcF(>xb5UI6 zsFx1SlCMlnN{b-BYQK-0`8crVtA6K_$w|GxMuf~_5-q=c)hb@FcD;CM$hRq(_lAF+ zt@F;~%|wq)=N!xnOm|JS4U_e{*71C7?OUtM|Q|~lpmdv zXZodR{^7HS_79%$OTOtxm|69Irv3Em{Q7Karc;pn&1`#JivRJo_W$K?j4Cqyt|N6F}mzh&4YtL;DbZ^u8u%v^U+!E4X7fj9N-kY(XJH*#j2-Ul5R%!c~~j< zcy3qptLc=#90cynf2=DzJCPt;eon32&pbxcnA z(KCTNPmam4@lSelZP?Lz=V9ZjLv;<`M3i;zoipk|{g}abatjw+j$jJT4k@p=SRenc z(5C)bQo%x#-N^-alaAIKbg!%MGntl`V?L$)eSWunZz_7-*t2A0!N@B4vc#V`UlyKN zTVCboy*K&Vu*Wl=JWd@m_}s6PMTrj|z0WTRAG%;>y^`OYGiOjB}Lv!Bx*}Pnho=}6Z|NC1sNkSu zf7>yGN51ZTVx4Co8eQAyKYXI=fAR$nTzmXC!@5()F@u9Y_CE1$M}pVYov&UMCXT-y z<7ewyWbnKH9@{IIZ7oj@ah~GQx5!{hh&W~W2*;l3Esnt=~sy>3u)( zqwS~LBV;QgMe7gTP2BeH@%v@|dj}Ng_F{^4pX*3T(t_iGzx4l9_}yDFbg~gsu%fct zjJB<7H=7E7?!PI>JmSrq-{oIkQ_}LK=OHVzO<;3XR0NPEB;S@8%UiDUy5x~^xm##g zm#eF0N9CAktCz;jEshv8&U0MRIMp|IkMiZX=bjbdNF4*5&!V0jGVdZwR7~i4wcEzYg=ufy!qC-X|He9 ze+%Cwy_5B6S;m+1)0x;C8={#0a{Wo#?JmuV{L-=c1%{dXCquiu$RWJ`+q{gWUnX=- z|M*;c^tT$Ll`EubyM7kj-<=WHgM7)Ed+XXF+1S0OHdyn>zUW`-*SN zinHXsiWdrn1xKDh2bGdlPdNo<}&j(-T z*N3}hdWKhbEqqy@H_P%~+Sx&ME7ole&$=(oZ2#h}x!xkRP8%ayi9*s^?KtR`ntSc( zhr-a`?GDVoa#_CS{70wJSH_+&*?-L9O67?G`;S;$tRFr6pP1F#g5Q4mwBUT{uXP@| zfw6J-JI5T3h~0j_Ti-(wF3k_Qgv;OGa|~S`@#EPq(`j18qh5s;UwyW~;+)q!yNcGn zwnG!*=jz@t>OAe`ij?8Zxfk2p^f+0SZ>t-eJ2WKPY`$OJzg~rT#Q}2NPF;sTz8ZD; z-sifd?K4kJz5e0Disz+4_v~6t+cfrt=wAO;ft$wGPuw}rVPA^^|3~iQGA4AJTmIZ; z+}JM8K_S&~$%WhRXfUUXAGmDax_W&7kDpE%joQ}p$dNZib<3BA56mtz9=AE$DDA<} zipQ}}-n5DxD(%^#t#DdEj())Hd5+2QY3*${AgB@+oGc@0y}!OJf|C5Q?CA2^VFJmQ3)$QK2A>y*R3h}G4WCDm&9A@s|A(w z!nAfK+HGRt1N&bAN3jnZ0!V zBHPqgYo<&ozqr^Y_&48f>citFL@KN$bHYAj3KG7 zdsT-GDe3q=vhz;M#d-HS#SSr^^cYG`(6^Zcd8Mr1<=E zUf=Zah(4irI^0@yapb(Q8F%JAYk#6;%}&g)dY>70RhACa?QM18*|oC5>bu^{F8))YKHJj5%3Nipv9|8kBH_xXJJ+oF z@kwpvYlEvj>wLn@$1f=?`o|?{q1SUedAzozm9=Qvj#by~1oh8W_x#6I68dB0$MOe@ zJrl%M@%}Rg4PJXA>cq;5Y7OmYS0wA_OwOte3|LkEOFMs=RmPl>i2MD^;?p|R%zSo} zS*GRFaz|*2nTeg&p!K7pwOxdRR-7^WFMYz0z31l^w$a({nL71|)(Phv<5<^DWy=mN z+R{g!@4Kt%_JLnwZXNbsJz~JDo)^`f)lO8NQyKSW*Q!2G z#stNjnU;U}Y~{x44qs|g3sRYG=kzaWZOK-58tEDyH22NEf~z0iZP-+%(a9q(`_Ev{ zi6@PU!+v*|yedwtw!dK0x}uQLXZ=&=n3>)WJa*yy$3^eui3jFhl8lq?%sIAZL&fbX z4VP_+p9Z&Bwc4!H@UT(B0~Vtu?R+w7lWVG5pl$l-ISJkDyoV0=JCI_uJtMo<^qVtg z1jM~GG&!*A#;)%2=i^H}f=`T0>ik(xy6d@NkAIGI+%PSC(dz!k_Us$4V;yEY=FVs9 z58)o!{z=9@wrjOVi3A7a9ycRTtSKGpdv(c`yA~mH-6z)_xBL0;j)67nS(cEZ@=W4dl6(I#e=D<)t6!ms;S?G1HqYKszD<`1dTmcJBC+BbE2 z(c98%wK1o9k4krOSfV%AFgDQdzxhGTs`aa*=C4dYwbpQKvVLs5SJj0uCa;rI($iS+ zanT{SH=j}*%69DU>-+NG-iB(2>>`F9D@~h!xz<{i^sL351OKeF-jTXxL`&hwPQfEj z*sULxxRi|hzF_I_E_44(-u%Muin`xmIRbyYiB(Aou!{UL-70JT{yUZ@OcI8@uDZW` zg-?vj=8(2FEz@(pg?QMQx#xTf8)Nfid0fh}#hH7epMGVk);;{7Ia^14%^mIj>G$RZ z#a>o<)T*^`@o>X^E9SmjxolcBlYDmAxwI39)!wf^79z^g(h|Mdv&u=DZLwGCAPSDu z*d`AyEL`{O?$dVR2fM}&yl(^RzBf@SuYQ=6T5Vi-q~=YoQTV>iSysz?`Kx5>83xs~ zxG~o{Z%W$N=ogo-4lvn0?$Bd5$0?D&O}mn+TNXVQKD}6>RW-2H!ZjxQJ3Eh^(4ynY zi;jy_FJyG`Ewy^k;`z7DZb4QN91z zym(q2{>4J|%^E#m()muC9?u!K@#26f*DJlxrG7qh-*v9t=aDbe=JgKn zd1u;rRoneeDY4uA?pS;~Gq$6=GWuOWWKDW;&dE`8l3HIrL<(E^Y<=Ec+$HYwvL`_W z+Iea=!Qp!rom;v-c%D{B_|~-jKbw8dd6ZTaEqlLqk@t^230^^q{5E(v5(~LU)M1r~ zfm<)v`3!k9JZ*jS%lhc8cg~p{ba!ZPzuo!DqMI=bN9$X?_3b}k$%*UgMZIGl8X4A2 z%@3R0>-9iU^EskLms+GB`_%Hu9lwR6V&{%d9kbni%yL;qv*Rg_|K9T79{DbH<;z)L z&-R(>c|SokWTwQjzk_toncjVlRDB+9lHOTv8o2ZH@fMc1I)6NSe%M;4Bex$sTGzIH zT-zZ<`}Wt>&Ln%T7Q4lp&2G1F)SVCN9dFM2K5%ontV7(()G3D7rpQ*L7$jthFWy$o z=;!19PUB6E@9nS%t^2Lwx4j-=G}hTZ@yXrp;=6}GI1lW9DeR-FTF%H}?vbn3#@HN7 zxa;+y?G8VAc1ZXXd8$*JFOMT844Ece($?X?o?BbXT1@Hdx~@%ecHY}bU+(u^Y<1|w ztRIiPE`;4TefZS&ZP+Q(Cr`V)oxjP{`KitA!9huVkMxP};1=%guH`>H!=S=-jNYIQ zK4U#d^K<(WJ9W6&(QWZuPhqc*{yF{Bv--JdAINLdNqg@HyI2qT^nG@JwneV`R;0S_ zl}VWUp2c%hqcYz26h72(ysuYpzd?PqNyxsRkG)kdngr{GXIl!sUv>HC@sowQ-U&rx zjH3G)hK9yC7@fQ2p!W0dmct9j-|S&*9TqU!Ga)#>I55I0|G0DfypWHg*)x}$Y&yR+ zf6??#YU$hC%^Lol+?w&V@}zvnyiLbW80g-#KG5vvOzqPFEj^Bne6jo8rp1oIk0Wxr zFLT)BF}!20>AO*mCaWF$T6}2{u=-n3Ta{%#T^2Ei{uDEp)5l+0991{zz2CLMRW@2y zvKF`FvrcH3tk8OOYJOBvxZVr=63$VwdP1ohEOU zKiEY$xw+1c;G)d)6OL3>zqG4(#RR%q>18`aKk!++{%V&xzrmA&kH$|myIo(Q{d9zp z$FC)0oG%$w?pUPuz(;z>E+8O$%93e@kF@S}jG3V;8oK^Ro5i!1eNXApEY&w6yiMRu z&8ub6r&J1lghk$*Fj|nbq(-+&?yJ$IHU;f*%Vrk@{q$jcoMstUbZ1F3H z2`alh(r}Pmz3b@TQ71NC%aj;vlYTKbk5ol4>Dk=}SPq&wqrKbVXq!#bwrUwoi?WHa z+M*RR#AuYfb#8NG?XSNdRj+s+ey8rLXNdm$W%3=1XItrJY{w?ELG?RrRIoE{k&}ui9GNF=cW`%VpXt_7>0GO)iVmKOR4l|7>u` z)}IkeF8WTo<=g92diU^V9=~#SIR`Xv+j~IyPK&FRkw-22CdJ5|e9xHb&#KUDYuPO~ zTAqDBsxG4@xQ9#Wypm-9Ia&A2COUV|`yP>^mllw*eeVR4r`e;hc;)6_rRA+c{~hi= z#i^&?qTQRbbYz>WELzvwuBe}4+QWE<>5co{MT4V;^=YGi^k$r%@nO>rU%XGhvi<#G z$oXe|ZhhUHqo-Rk_tA@H;QtdBf5|P&*lSyP<=Xc>@-T4UJ;maBu0K3li>wXK`Y_)<-?ho+tGYR7(DSCVaBnj$p1km8v&d`Oqjf8{Hun|)~Y zTg~l*_Lg;*<_LClxjlZ~%QCZmZmN@CnB7VfynJCc$o;lsB;;HLFrlSTYeej51mmIUb_Q$NxH)j|w zd+AX!_M!Yy*GqXunOE$Np78j#x>-@c92FHk6&0^%i5nt=LY^hY1_o_=W_hgJ7?-it zevbvV+N~!H?X_t@?E6PL+eNpA1-8`I_x*fM?~7>q{;@0DC3LzH@6u)3#C`!=GZ)3H zZnjFB7q1$By450w)?*8jehq%wBDTY%uI&nwONUtHbhNkD8zjG4*+*ko=h*W{gRHJh z$c(YDZ`0h+zjC$b)Cb|G_N#Av7kjEx&uQJKbr~4DOLxF#gX@PU7hf&7wXfN<3q!`W z&~t8;YOK*a>ZW>Mfy2MM8LbU1wKE>AHhoz#>r|bi%JtE;_A1#URxEz%{m^gkRuz@_ zjp7YsXRYy!JLd7nZ`I?mKA!Rs7E+VcW`^0>UyNUN=oB_4-c- z`w>@tyyEn%S6L_C>g^|NMYO zO_}wIx8+@KmD{!5cl%10zAy=ny|rOq+av3I`l|cPACo=RXXHoGrlm*kK04y^d%b+` zbtd-1w^kY74&G>gyCmVt*n&r=!q#>(LsDpses6~?-UiSK{N!Cbj=8h>?(Qur=ZcTG zj&*4j84xvgZTp?+c3R<@2dFH}SxF`jq&1zg(vqy6aK-nTnmu`=H8E*_QWam!vjZDZ`aP>oS<*NE#nZ&kfI z-;NpTHA3A=D%loSJ!yp3^`JDp&K2ig^|CGsllPgg)@@kr{a2dB3(KT;b=GhC)Ol;* zQvWS+ThGWuZ zrysNWY?+c2duGG`!_qf~SJFIh$Hs}Xv2A-}Yh&BlWMgb_V%xTD+uRr%b7R}@dH(P3 z!+llHnZCOF)KpDXch^+MSD@Wtvo1Ha8;wZMVU9FbS*T(sjnD! zukns0F%Bjv{*gdgxB9#nX67)W=c7q3!%KbRR#cUk+5E+QR@geAxs+0E8)`k%wT zRr#RBM5N`f;p}RK@d8T(alu)|n)Xd2lpDt;u*{b}p^j)zBasOw6a%Er+O)eDuP z6^ym@F(j9l6!!)sOKRZ@bPBbNF(jKLD@UlJETXxSMJQ~Wj)Q1KjVbuY$n*i!c?AFy z9&k=izyN%m%^hzoJPqPtRO*tZEU|ptj0Y9~JK$R_L;(cLK2Y6n$^j<{f(%BCqKE?H zV|;|~s?(koQ{b{=TKc*Hvdmvd_psw{oBGAHUKp)rC9AGxv8fnGW>19=L4o>sg`0aA zw{h{2SkrM-jYcJ(yeoVOLsyTEPY_d1Sd9j8ex_|f<&qTWso0!>=<&J0l)VC`ON9+@ z`kD8iGh;R&KMK1sYT}Yz8nIWJy`pU(=LwOvp2p9DANpkt6l!j`=jEtBhV_TB-vCQl z55ibg5mhxhgD~%aWI}Zz(xk{ACzj5LLX?_O%JazIO0SWPVSxqJC(M6L3?kjidU;|y8Y;OfdU+7v za8w<1;%tX9&b*hA!OpSdo4|#kP3@6MN`{dU!NSs?E#&o#E9q*IDW6x&h$tfkyei)3DP$*Nw40s1~Qs+AWtBz!{km+@*SJD z9YjMvv1R_dHQL9R(Oy7+)GECf@muYg4rtobr}ZetOF{K*FX*>`Jlhmx>sc|l)FJak zJj*ypc7NkaAF`D{nMdH5A0QH(=`Hp%IaJvH7;P2KC}AstR!oBWaW66D{n5Zsfv`^@ zaS!d7Rg|_!5|>D!zNr?URa6I=!IxA6mr)6{IL%}$!thAhTFlSxtGp~hxq%uK2d3ud z^hNIR9cYM8%SM|wn^!?r(NqT#7%3czk8_Au4w!#i2Ae!h5fP{_!AntP&!42L;T@xIsB~03F;#AV2&}U<7Tl zpn14Zpm)dU!!oG(>{1q5_qX!a8mNr=qY!i>m&lB2e<6p63oRQj|D7sb;NIU4b^+-``WDkcD-+SK7OkB{9%M@kesRw7RCx~ZvxmqQ!C~g* z@r%&H`Nhf;rj1-n%j1{!4Z4IzQgbp9pe;K1_1Vy+%B5 z?QSIsMI#B$5=77|2|Fo3O;+8|{1fw&jF30?j}@o&1+Lk9tsfE}XT^ zJ1PvgVvgSNrCJ_bd1RKJvM6UoghNipAS_ALQm;|L;tv-DfsMnmjgOA!9PQ?<++g;DrPHfBE&)Z@+xXT|BBY3BH``uu9F(wJq z<~1~zt?S1{0J!+rk1VLWbl!xM`dXQTRk>O9WiEIuAKstp{&1gbt}V5`g(0N4C2%Do z30X17e%1`ZhAMouZ~N;raOr&ivJaf*e|XEDkkLpTC1b;60Et8I*X^QP49FZ@uKO)f z{}DmRx*Y%cz{DrjhdMldU%faXVik2l1?S~b(Pa>o#SvLy+T)BdWjsmSUon3A{Z2g~ zgCoMP9X@gwN}9|R;FQEPh})*@ahmR)kTv(NvXgi7#o&^Vx6AoV+1=%m?#n9=CT?r9 zHhJmriqcE(2b`l#IaJQ|NTrMZJ%0Iqlpr++V`Ojqf&xRT0(6CH0-AZKT9$Y%~|F0I1@yjd`e1n3cm6X*4e}+tr`} zZU216ZiJXXtIY#olGbLSbR4KiwUvAyZf7}K`mPV%;rp#0+x znM3c{VAlImnA3l7-t*7b-TSPr4OfR)Tr1OzP(Y*DucNRWqS*4r)<2FrNTs&n@&7za zX)`W%_xS~NPAkK#$op4YK^u>4m^?_WfILUPR4XVPeQ|Bcq_G`uecW3yS- zDcg12<9(1j7C7L!hILY z0VWu-Dlbddbtysp+KYaZU`~%&x%yB-xY^C#a22?bN2CFdQp|rFcYDI>iREzvR4uIk zA?}R5Y7|Jt>l5^|s;lIIEHU)CFY~PZx{c@@nJmxLg8@XF@@LJAIv*oml9G%9lgPNc zVtAvsb34yi9v)4j3osZq)!h|j=rwD$AHvxFvK#4hHl@oKnv8hceed z=t4bxh}-Q1IAjozhV{6t7%d!h+zYV-A;5B8AHybe zGu&S-_(>ua$+X>yxLDVh5yNutD~;v_t|*z=gv8u8doClv&8DIB#)kV>-09k2dF&|D zEJRgYT3$mQ*Kgi?_`Q>qJVQzN#^-YnB1g6~ly~6;{Kl9#oz7nBlW{!k^L7`_(L8z)?-ZHwuKN(stS1J4ey{pw0RfJj2_9!fzr5i{owJh>Jp(tHw!DJbV9(%6DcgJKAP%-Y!g zN%#}K)nBYXr)t$GomAQVdD1d8YK$_}E-8<$<39-@G|Q^zdfd0un-gad zyW5h9Dfjq}mKBhI?IWqwRia%V&U3zrZKUTbjzJQ(-Cp`a)i%|M6 z4tN6Mzc^smMcrQo!kDnvmhYII@Z&;hYw5dNMdPCR*b*XWU1o{MD-aWY8<^ieBGwgJ zkaJRH{sD=6d3o96o_kcM!c_uPtkmfj!Bnp-EB4`AhX2iS#bwCF3|xt3JabZuiVl6V zU#J2yRkP8A*#?VCkoe6)8WE8^!<{Huk7i{s9Gt1S=#3Id+OWy$lgx%RH3|sI=!_%g$q7JIZ7|Lx*|Ak1k zFjes~Fp={{uo)r8PSn-xk!~GUHab-O=-yPD)Js@QJ%72XBlsT8`W}Q{zm0C5t@;Z?ZqB-b$G4zcj-Mn|630 zs^x-=%TwPQ9Z=aZoWN7F zj`bZ~L`qR=eYvZw3aKYDljmM;g^KoZe!wURE7L;jei}9c zFBD_L!G_ku9DI=!%V(57kAs8N;aS^-w2I#oculH$}xt zG5r*r+N4NS#%w$tS{yFZrbr;-Ez!>DS%8t~C#jo=q4&yEJ;#izMa}lPa|XG6ECY<{ z$?(j>Kn4c{m8LCi7NLc$?#zR!pyN@>i8z_NGLc>A2;!tS$9!IT)^6GtOR6hy4(eis zkfkyY9_}tB+5PwBUs_qC_I1tvr*-N+4qiLe_1|U$5dC%$*q5$OrdXUqp$(?+ zKfx$o?C`!#9(%~FwXS9`aoVrtG!K8FqWg%V`J{fR@a%z&`mHAcqhSL3iBqs*;r}Pz zKmHSMWDq>EBIow^QggcyP{39He|&u6{}Eu}e^u=MuZn9lD@vd+5|r&W{j=X(&EX)t zt3ezevZHVTiFD8xqIj-#Nt#I*#@}J1k}_G2`>nqijBt`Pdxo5PoIi1`v^f*ifR@Lb zbF>?~j&~X0o>lF&x_1PrFK^#kbLCA2&U|%BZf)dfVHGlora=Au7nW3v3j|R{P;x7f z{>3ZE4Y2@1W=?8xe{UtFd$%A)goP1d_6MeR7yVVE@4RT3ru+0t#OlS)5JUIa$xgL| zTQH7?#|$X^7bI*`ZY85dN?XAw#V-|X!?vWuBd6nRsxy;}nZVyFX+STcZlQTcJ+Scb~! zaFpG=QdOBocR3pu%8-L-MUmDwq0X)eu^+Fw6oCP_r9hPoVp<^+#R#&uLtxCZVN<#5 zrp)9@^&kawBj%jbmAqBeg9?6fi`aR%;J=G3%zV>$b#=^PYDkj+kN@$n^#6b3;M|2k z2IT!eE=JGyD?*Y2V0PHwFt?^TkfvDVe~oydu9bxvxcPG`;Mrzy5=C7xt!qTfv|{nZ zz4skJ&MsTP>{mG(eVa8PorXWsun3SR>Yq@Xz#LVR&Uzdo=~m6dC9_h5vO%Q9&ZUrQ zJ<}F7VTE?Z`x{z(6G|+ELbVZHEdOT_9To z>K|*f51f_>Z1ED(qB&~CIq4ff@NbLCECcb=FE%7|%PqG<*G_yU*#qT|+5-ov5$ov8 zS3@hyA(~5yf4H}wYinit5w69x&k;XhhO2g1Rd?e=jov>Djs>!f2^3=rzB~Z#Bvlp) z3*O*ZC=I;-<7oQ-=jcQi0v~w(|1U#zBM<_w{!Qv}>> z@^xwT5ky-4h*Q)@RW}9Aei?Mi;YG|j9Q)XN7{tWO^EfDq{D8ryvK_a9!Lr&-Dm2n4 zZ$^Z+1hm|8cWyDbl!RBjR_qYSG2A(6;~*f-ez9Eu+C$7 zH>aU()Znm-GS;27wN5o*Qh3nS?=H&5EkcdXag79n9nf3c5;-64>$BQb1r9H_GAb@G zl|nuOe{WC>SAgQHH|Ov^fnIo(dgQ?sA z8C?;RN^TyXzH!aSRg`ztv`%{DmfETYMg1`jI_8A{z751hj*n zw^^RT^Sh8y_!-1=T^+}99Tt_~u?+f|!blp24d2Ab4J%VpS$<+>OMTI;b+;{9`!;p> z%>2R{o6nE>r#~%MIcez|IkrVKaOzyz>90z>Co_2Bh4&Q`4Kj1L?pfQ+v{;a(zBcJt{aixo8$SCtdacBA3W z=Wx`X@6We)IFIswq>fJbYq#6H5w~8&ReV+$szJJVK5xsrne%>F}_IThM`+kY{lF8F` zTQ2cO3HMd~`&Ce@J-yNxAw%D9(LAhDVZ>NO%SB|@(ICKEk?su7u6b+t`8xWTvk)&< zop=*n&FKAfUDHy<)WW$6@|*-?V&?{lu^HG$Z&3|;pg%|6m1<)nM4n$lx2LC{ydP?b zznb3K-e232vQcYeC%^6-xg&YXp&Dxc?P}`~+shy*qUY#!*VZ6!9+`VZ|cv$yZw&c)rw=eF<4Kc#1%>r7xQ;4_y!g*JIb zie@}j5rGA5fl3U{u{nUgk%S6*f&F08@Wbu1{?qqe`6B-L3Ico_zyHe<6GA*tFV_4; z$0Yo*^h6G)hFf6mn^_$clq_5vPSC775k6 zC%6{V9aXp)uz|5|I_!ZR2)uJ}F#sS>K&86p<@C@O-FpK(kA_r`d@P)!iZd%0D+^%Z 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 Date: Wed, 18 May 2022 16:07:41 -0500 Subject: [PATCH 69/97] Have TicketRecordReplied update last_activity_on to avoid making two db updates --- core/models/contacts_test.go | 6 +-- core/models/counts.go | 6 +-- core/models/msgs.go | 12 ++--- core/models/msgs_test.go | 2 +- core/models/notifications_test.go | 2 +- core/models/ticket_events_test.go | 3 +- core/models/tickets.go | 31 +++++++----- core/models/tickets_test.go | 66 +++++++++++++++++++------ core/tasks/handler/handler_test.go | 4 +- core/tasks/msgs/send_broadcast_test.go | 8 ++- services/tickets/mailgun/web_test.go | 3 +- services/tickets/rocketchat/web_test.go | 3 +- services/tickets/utils_test.go | 6 +-- services/tickets/zendesk/web_test.go | 7 +-- testsuite/testdata/tickets.go | 10 ++-- web/ticket/base_test.go | 21 ++++---- 16 files changed, 119 insertions(+), 71 deletions(-) diff --git a/core/models/contacts_test.go b/core/models/contacts_test.go index d9b93b6bb..764069862 100644 --- a/core/models/contacts_test.go +++ b/core/models/contacts_test.go @@ -26,9 +26,9 @@ func TestContacts(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) testdata.InsertContactURN(db, testdata.Org1, testdata.Bob, "whatsapp:250788373373", 999) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SupportTopic, "Where are my shoes?", "1234", testdata.Agent) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SalesTopic, "Where are my pants?", "2345", nil) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Bob, testdata.Mailgun, testdata.DefaultTopic, "His name is Bob", "", testdata.Editor) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SupportTopic, "Where are my shoes?", "1234", time.Now(), testdata.Agent) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SalesTopic, "Where are my pants?", "2345", time.Now(), nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Bob, testdata.Mailgun, testdata.DefaultTopic, "His name is Bob", "", time.Now(), testdata.Editor) // delete mailgun ticketer db.MustExec(`UPDATE tickets_ticketer SET is_active = false WHERE id = $1`, testdata.Mailgun.ID) diff --git a/core/models/counts.go b/core/models/counts.go index 6f2e95b7c..238e89eb0 100644 --- a/core/models/counts.go +++ b/core/models/counts.go @@ -48,18 +48,18 @@ type dailyTiming struct { const sqlInsertDailyTiming = `INSERT INTO %s(count_type, scope, day, count, seconds, is_squashed) VALUES(:count_type, :scope, :day, :count, :seconds, FALSE)` -func insertDailyTiming(ctx context.Context, tx Queryer, table string, countType TicketDailyTimingType, tz *time.Location, scope string, count int, seconds int64) error { +func insertDailyTiming(ctx context.Context, tx Queryer, table string, countType TicketDailyTimingType, tz *time.Location, scope string, duration time.Duration) error { day := dates.ExtractDate(dates.Now().In(tz)) timing := &dailyTiming{ dailyCount: dailyCount{ scopedCount: scopedCount{ CountType: string(countType), Scope: scope, - Count: count, + Count: 1, }, Day: day, }, - Seconds: 0, + Seconds: int64(duration / time.Second), } _, err := tx.NamedExecContext(ctx, fmt.Sprintf(sqlInsertDailyTiming, table), timing) diff --git a/core/models/msgs.go b/core/models/msgs.go index 359053afa..b1a5e1d97 100644 --- a/core/models/msgs.go +++ b/core/models/msgs.go @@ -1157,9 +1157,9 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs } func (b *BroadcastBatch) updateTicket(ctx context.Context, db Queryer, oa *OrgAssets) error { - err := updateTicketLastActivity(ctx, db, []TicketID{b.TicketID()}, dates.Now()) + firstReplySeconds, err := TicketRecordReplied(ctx, db, b.TicketID(), dates.Now()) if err != nil { - return errors.Wrapf(err, "error updating broadcast ticket") + return err } // record reply counts for org, user and team @@ -1179,12 +1179,8 @@ func (b *BroadcastBatch) updateTicket(ctx context.Context, db Queryer, oa *OrgAs return err } - seconds, err := TicketRecordReplied(ctx, db, b.TicketID(), dates.Now()) - if err != nil { - return err - } - if seconds >= 0 { - if err := insertTicketDailyTiming(ctx, db, TicketDailyTimingFirstReply, oa.Org().Timezone(), scopeOrg(oa), 1, seconds); err != nil { + if firstReplySeconds >= 0 { + if err := insertTicketDailyTiming(ctx, db, TicketDailyTimingFirstReply, oa.Org().Timezone(), scopeOrg(oa), firstReplySeconds); err != nil { return err } } diff --git a/core/models/msgs_test.go b/core/models/msgs_test.go index ace219b91..13185b753 100644 --- a/core/models/msgs_test.go +++ b/core/models/msgs_test.go @@ -595,7 +595,7 @@ func TestNonPersistentBroadcasts(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Bob, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Bob, testdata.Mailgun, testdata.DefaultTopic, "", "", time.Now(), nil) modelTicket := ticket.Load(db) translations := map[envs.Language]*models.BroadcastTranslation{envs.Language("eng"): {Text: "Hi there"}} diff --git a/core/models/notifications_test.go b/core/models/notifications_test.go index 934e32f1c..f6e985786 100644 --- a/core/models/notifications_test.go +++ b/core/models/notifications_test.go @@ -165,7 +165,7 @@ func assertNotifications(t *testing.T, ctx context.Context, db *sqlx.DB, after t } func openTicket(t *testing.T, ctx context.Context, db *sqlx.DB, openedBy *testdata.User, assignee *testdata.User) (*models.Ticket, *models.TicketEvent) { - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.SupportTopic, "Where my pants", "", assignee) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.SupportTopic, "Where my pants", "", time.Now(), assignee) modelTicket := ticket.Load(db) openedEvent := models.NewTicketOpenedEvent(modelTicket, openedBy.SafeID(), assignee.SafeID()) diff --git a/core/models/ticket_events_test.go b/core/models/ticket_events_test.go index 34ca21ca4..eab35dd73 100644 --- a/core/models/ticket_events_test.go +++ b/core/models/ticket_events_test.go @@ -2,6 +2,7 @@ package models_test import ( "testing" + "time" "github.com/nyaruka/gocommon/dbutil/assertdb" "github.com/nyaruka/mailroom/core/models" @@ -17,7 +18,7 @@ func TestTicketEvents(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "17", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "17", time.Now(), nil) modelTicket := ticket.Load(db) e1 := models.NewTicketOpenedEvent(modelTicket, testdata.Admin.ID, testdata.Agent.ID) diff --git a/core/models/tickets.go b/core/models/tickets.go index 78f984521..852334160 100644 --- a/core/models/tickets.go +++ b/core/models/tickets.go @@ -124,6 +124,7 @@ func (t *Ticket) Status() TicketStatus { return t.t.Status } func (t *Ticket) TopicID() TopicID { return t.t.TopicID } func (t *Ticket) Body() string { return t.t.Body } func (t *Ticket) AssigneeID() UserID { return t.t.AssigneeID } +func (t *Ticket) RepliedOn() *time.Time { return t.t.RepliedOn } func (t *Ticket) LastActivityOn() time.Time { return t.t.LastActivityOn } func (t *Ticket) Config(key string) string { return t.t.Config.GetString(key, "") @@ -699,14 +700,16 @@ func recalcGroupsForTicketChanges(ctx context.Context, db Queryer, oa *OrgAssets } const sqlUpdateTicketRepliedOn = ` - UPDATE tickets_ticket - SET replied_on = $2 - WHERE id = $1 AND replied_on IS NOT NULL -RETURNING EXTRACT(EPOCH FROM (replied_on - opened_on))` - -// TicketRecordReplied records a ticket as being replied to, returning the number of seconds between the reply -// and the ticket being opened, if this is -func TicketRecordReplied(ctx context.Context, db Queryer, ticketID TicketID, when time.Time) (int64, error) { + UPDATE tickets_ticket t1 + SET last_activity_on = $2, replied_on = LEAST(t1.replied_on, $2) + FROM tickets_ticket t2 + WHERE t1.id = t2.id AND t1.id = $1 +RETURNING CASE WHEN t2.replied_on IS NULL THEN EXTRACT(EPOCH FROM (t1.replied_on - t1.opened_on)) ELSE NULL END` + +// TicketRecordReplied records a ticket as being replied to, updating last_activity_on. If this is the first reply +// to this ticket then replied_on is updated and the function returns the number of seconds between that and when +// the ticket was opened. +func TicketRecordReplied(ctx context.Context, db Queryer, ticketID TicketID, when time.Time) (time.Duration, error) { rows, err := db.QueryxContext(ctx, sqlUpdateTicketRepliedOn, ticketID, when) if err != nil && err != sql.ErrNoRows { return -1, err @@ -719,12 +722,16 @@ func TicketRecordReplied(ctx context.Context, db Queryer, ticketID TicketID, whe return -1, nil } - var seconds int64 + var seconds *float64 if err := rows.Scan(&seconds); err != nil { return -1, err } - return seconds, nil + if seconds != nil { + return time.Duration(*seconds * float64(time.Second)), nil + } + + return time.Duration(-1), nil } // Ticketer is our type for a ticketer asset @@ -915,6 +922,6 @@ func insertTicketDailyCounts(ctx context.Context, tx Queryer, countType TicketDa return insertDailyCounts(ctx, tx, "tickets_ticketdailycount", countType, tz, scopeCounts) } -func insertTicketDailyTiming(ctx context.Context, tx Queryer, countType TicketDailyTimingType, tz *time.Location, scope string, count int, seconds int64) error { - return insertDailyTiming(ctx, tx, "tickets_ticketdailytiming", countType, tz, scope, count, seconds) +func insertTicketDailyTiming(ctx context.Context, tx Queryer, countType TicketDailyTimingType, tz *time.Location, scope string, duration time.Duration) error { + return insertDailyTiming(ctx, tx, "tickets_ticketdailytiming", countType, tz, scope, duration) } diff --git a/core/models/tickets_test.go b/core/models/tickets_test.go index fe90bfcf0..e4541f013 100644 --- a/core/models/tickets_test.go +++ b/core/models/tickets_test.go @@ -150,7 +150,7 @@ func TestUpdateTicketConfig(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", time.Now(), nil) modelTicket := ticket.Load(db) // empty configs are null @@ -171,19 +171,19 @@ func TestUpdateTicketLastActivity(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - now := time.Date(2021, 6, 22, 15, 59, 30, 123456789, time.UTC) + now := time.Date(2021, 6, 22, 15, 59, 30, 123456000, time.UTC) defer dates.SetNowSource(dates.DefaultNowSource) dates.SetNowSource(dates.NewFixedNowSource(now)) - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", time.Now(), nil) modelTicket := ticket.Load(db) models.UpdateTicketLastActivity(ctx, db, []*models.Ticket{modelTicket}) assert.Equal(t, now, modelTicket.LastActivityOn()) - assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticket WHERE id = $1 AND last_activity_on = $2`, ticket.ID, modelTicket.LastActivityOn()).Returns(1) + assertdb.Query(t, db, `SELECT last_activity_on FROM tickets_ticket WHERE id = $1`, ticket.ID).Returns(modelTicket.LastActivityOn()) } @@ -198,14 +198,14 @@ func TestTicketsAssign(t *testing.T) { ticket1 := testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) modelTicket1 := ticket1.Load(db) - ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", nil) + ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", time.Now(), nil) modelTicket2 := ticket2.Load(db) // create ticket already assigned to a user - ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my glasses", "", testdata.Admin) + ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my glasses", "", time.Now(), testdata.Admin) modelTicket3 := ticket3.Load(db) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", time.Now(), nil) evts, err := models.TicketsAssign(ctx, db, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2, modelTicket3}, testdata.Agent.ID, "please handle these") require.NoError(t, err) @@ -239,10 +239,10 @@ func TestTicketsAddNote(t *testing.T) { ticket1 := testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) modelTicket1 := ticket1.Load(db) - ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", testdata.Agent) + ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", time.Now(), testdata.Agent) modelTicket2 := ticket2.Load(db) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", time.Now(), nil) evts, err := models.TicketsAddNote(ctx, db, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2}, "spam") require.NoError(t, err) @@ -267,13 +267,13 @@ func TestTicketsChangeTopic(t *testing.T) { ticket1 := testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.SalesTopic, "Where my shoes", "123", nil) modelTicket1 := ticket1.Load(db) - ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SupportTopic, "Where my pants", "234", nil) + ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.SupportTopic, "Where my pants", "234", time.Now(), nil) modelTicket2 := ticket2.Load(db) - ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "345", nil) + ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "345", time.Now(), nil) modelTicket3 := ticket3.Load(db) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", time.Now(), nil) evts, err := models.TicketsChangeTopic(ctx, db, oa, testdata.Admin.ID, []*models.Ticket{modelTicket1, modelTicket2, modelTicket3}, testdata.SupportTopic.ID) require.NoError(t, err) @@ -304,7 +304,7 @@ func TestCloseTickets(t *testing.T) { oa, err := models.GetOrgAssetsWithRefresh(ctx, rt, testdata.Org1.ID, models.RefreshTicketers|models.RefreshGroups) require.NoError(t, err) - ticket1 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) + ticket1 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", time.Now(), nil) modelTicket1 := ticket1.Load(db) ticket2 := testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", nil) @@ -345,7 +345,7 @@ func TestCloseTickets(t *testing.T) { assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticketevent WHERE ticket_id = $1 AND event_type = 'C'`, ticket2.ID).Returns(0) // can close tickets without a user - ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) + ticket3 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", time.Now(), nil) modelTicket3 := ticket3.Load(db) evts, err = models.CloseTickets(ctx, rt, oa, models.NilUserID, []*models.Ticket{modelTicket3}, false, false, logger) @@ -377,7 +377,7 @@ func TestReopenTickets(t *testing.T) { ticket1 := testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", nil) modelTicket1 := ticket1.Load(db) - ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", nil) + ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Where my pants", "234", time.Now(), nil) modelTicket2 := ticket2.Load(db) logger := &models.HTTPLogger{} @@ -410,6 +410,42 @@ func TestReopenTickets(t *testing.T) { assertTicketDailyCount(t, db, models.TicketDailyCountOpening, fmt.Sprintf("o:%d", testdata.Org1.ID), 0) } +func TestTicketRecordReply(t *testing.T) { + ctx, _, db, _ := testsuite.Get() + + defer testsuite.Reset(testsuite.ResetData) + + openedOn := time.Date(2022, 5, 18, 14, 21, 0, 0, time.UTC) + repliedOn := time.Date(2022, 5, 18, 15, 0, 0, 0, time.UTC) + + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Where my shoes", "123", openedOn, nil) + + timing, err := models.TicketRecordReplied(ctx, db, ticket.ID, repliedOn) + assert.NoError(t, err) + assert.Equal(t, 2340*time.Second, timing) + + modelTicket := ticket.Load(db) + assert.Equal(t, repliedOn, *modelTicket.RepliedOn()) + assert.Equal(t, repliedOn, modelTicket.LastActivityOn()) + + assertdb.Query(t, db, `SELECT replied_on FROM tickets_ticket WHERE id = $1`, ticket.ID).Returns(repliedOn) + assertdb.Query(t, db, `SELECT last_activity_on FROM tickets_ticket WHERE id = $1`, ticket.ID).Returns(repliedOn) + + repliedAgainOn := time.Date(2022, 5, 18, 15, 5, 0, 0, time.UTC) + + // if we call it again, it won't change replied_on again but it will update last_activity_on + timing, err = models.TicketRecordReplied(ctx, db, ticket.ID, repliedAgainOn) + assert.NoError(t, err) + assert.Equal(t, time.Duration(-1), timing) + + modelTicket = ticket.Load(db) + assert.Equal(t, repliedOn, *modelTicket.RepliedOn()) + assert.Equal(t, repliedAgainOn, modelTicket.LastActivityOn()) + + assertdb.Query(t, db, `SELECT replied_on FROM tickets_ticket WHERE id = $1`, ticket.ID).Returns(repliedOn) + assertdb.Query(t, db, `SELECT last_activity_on FROM tickets_ticket WHERE id = $1`, ticket.ID).Returns(repliedAgainOn) +} + func assertTicketDailyCount(t *testing.T, db *sqlx.DB, countType models.TicketDailyCountType, scope string, expected int) { assertdb.Query(t, db, `SELECT COALESCE(SUM(count), 0) FROM tickets_ticketdailycount WHERE count_type = $1 AND scope = $2`, countType, scope).Returns(expected) } diff --git a/core/tasks/handler/handler_test.go b/core/tasks/handler/handler_test.go index 29ef05c97..2e3497850 100644 --- a/core/tasks/handler/handler_test.go +++ b/core/tasks/handler/handler_test.go @@ -38,8 +38,8 @@ func TestMsgEvents(t *testing.T) { // give Cathy and Bob some tickets... openTickets := map[*testdata.Contact][]*testdata.Ticket{ testdata.Cathy: { - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Ok", "", nil), - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Ok", "", nil), + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Ok", "", time.Now(), nil), + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Ok", "", time.Now(), nil), }, } closedTickets := map[*testdata.Contact][]*testdata.Ticket{ diff --git a/core/tasks/msgs/send_broadcast_test.go b/core/tasks/msgs/send_broadcast_test.go index cddefc88c..116f390ec 100644 --- a/core/tasks/msgs/send_broadcast_test.go +++ b/core/tasks/msgs/send_broadcast_test.go @@ -135,7 +135,7 @@ func TestBroadcastTask(t *testing.T) { // insert a broadcast so we can check it is being set to sent legacyID := testdata.InsertBroadcast(db, testdata.Org1, "base", map[envs.Language]string{"base": "hi @(PROPER(contact.name)) legacy"}, models.NilScheduleID, nil, nil) - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "", "", time.Now(), nil) modelTicket := ticket.Load(db) evaluated := map[envs.Language]*models.BroadcastTranslation{ @@ -272,10 +272,12 @@ func TestBroadcastTask(t *testing.T) { Returns(1, "%d: broadcast not marked as sent", i) } - // if we had a ticket, make sure its last_activity_on was updated + // if we had a ticket, make sure its replied_on and last_activity_on were updated if tc.TicketID != models.NilTicketID { assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticket WHERE id = $1 AND last_activity_on > $2`, tc.TicketID, modelTicket.LastActivityOn()). Returns(1, "%d: ticket last_activity_on not updated", i) + assertdb.Query(t, db, `SELECT count(*) FROM tickets_ticket WHERE id = $1 AND replied_on IS NOT NULL`, tc.TicketID). + Returns(1, "%d: ticket replied_on not updated", i) } lastNow = time.Now() @@ -284,4 +286,6 @@ func TestBroadcastTask(t *testing.T) { assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'R' AND scope = CONCAT('o:', $1::text)`, testdata.Org1.ID).Returns(1) assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailycount WHERE count_type = 'R' AND scope = CONCAT('o:', $1::text, ':u:', $2::text)`, testdata.Org1.ID, testdata.Agent.ID).Returns(1) + + assertdb.Query(t, db, `SELECT SUM(count) FROM tickets_ticketdailytiming WHERE count_type = 'R' AND scope = CONCAT('o:', $1::text)`, testdata.Org1.ID).Returns(1) } diff --git a/services/tickets/mailgun/web_test.go b/services/tickets/mailgun/web_test.go index 98d544972..f831263f4 100644 --- a/services/tickets/mailgun/web_test.go +++ b/services/tickets/mailgun/web_test.go @@ -2,6 +2,7 @@ package mailgun import ( "testing" + "time" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" @@ -14,7 +15,7 @@ func TestReceive(t *testing.T) { defer testsuite.Reset(testsuite.ResetData | testsuite.ResetStorage) // create a mailgun ticket for Cathy - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/receive.json", map[string]string{"cathy_ticket_uuid": string(ticket.UUID)}) } diff --git a/services/tickets/rocketchat/web_test.go b/services/tickets/rocketchat/web_test.go index 595ea4ca6..b37567263 100644 --- a/services/tickets/rocketchat/web_test.go +++ b/services/tickets/rocketchat/web_test.go @@ -2,6 +2,7 @@ package rocketchat_test import ( "testing" + "time" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" @@ -14,7 +15,7 @@ func TestEventCallback(t *testing.T) { defer testsuite.Reset(testsuite.ResetData | testsuite.ResetStorage) // create a rocketchat ticket for Cathy - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.RocketChat, testdata.DefaultTopic, "Have you seen my cookies?", "1234", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.RocketChat, testdata.DefaultTopic, "Have you seen my cookies?", "1234", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/event_callback.json", map[string]string{"cathy_ticket_uuid": string(ticket.UUID)}) } diff --git a/services/tickets/utils_test.go b/services/tickets/utils_test.go index 2f77afed0..f917ad80f 100644 --- a/services/tickets/utils_test.go +++ b/services/tickets/utils_test.go @@ -52,8 +52,8 @@ func TestFromTicketUUID(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) // create some tickets - ticket1 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", nil) - ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my shoes?", "", nil) + ticket1 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", time.Now(), nil) + ticket2 := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my shoes?", "", time.Now(), nil) // break mailgun configuration db.MustExec(`UPDATE tickets_ticketer SET config = '{"foo":"bar"}'::jsonb WHERE id = $1`, testdata.Mailgun.ID) @@ -123,7 +123,7 @@ func TestSendReply(t *testing.T) { image := &tickets.File{URL: "http://coolfiles.com/a.jpg", ContentType: "image/jpeg", Body: imageBody} // create a ticket - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "", time.Now(), nil) modelTicket := ticket.Load(db) msg, err := tickets.SendReply(ctx, rt, modelTicket, "I'll get back to you", []*tickets.File{image}) diff --git a/services/tickets/zendesk/web_test.go b/services/tickets/zendesk/web_test.go index 1a189734f..c597b0da5 100644 --- a/services/tickets/zendesk/web_test.go +++ b/services/tickets/zendesk/web_test.go @@ -2,6 +2,7 @@ package zendesk import ( "testing" + "time" "github.com/nyaruka/mailroom/testsuite" "github.com/nyaruka/mailroom/testsuite/testdata" @@ -14,7 +15,7 @@ func TestChannelback(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) // create a zendesk ticket for Cathy - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/channelback.json", map[string]string{"cathy_ticket_uuid": string(ticket.UUID)}) } @@ -25,7 +26,7 @@ func TestEventCallback(t *testing.T) { defer testsuite.Reset(testsuite.ResetAll) // tests include destroying ticketer // create a zendesk ticket for Cathy - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/event_callback.json", map[string]string{"cathy_ticket_uuid": string(ticket.UUID)}) } @@ -36,7 +37,7 @@ func TestTarget(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) // create a zendesk ticket for Cathy - ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", nil) + ticket := testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "1234", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/target.json", map[string]string{"cathy_ticket_uuid": string(ticket.UUID)}) } diff --git a/testsuite/testdata/tickets.go b/testsuite/testdata/tickets.go index 806409c64..e2173a3c7 100644 --- a/testsuite/testdata/tickets.go +++ b/testsuite/testdata/tickets.go @@ -40,16 +40,16 @@ type Ticketer struct { } // InsertOpenTicket inserts an open ticket -func InsertOpenTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, topic *Topic, body, externalID string, assignee *User) *Ticket { - return insertTicket(db, org, contact, ticketer, models.TicketStatusOpen, topic, body, externalID, assignee) +func InsertOpenTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, topic *Topic, body, externalID string, openedOn time.Time, assignee *User) *Ticket { + return insertTicket(db, org, contact, ticketer, models.TicketStatusOpen, topic, body, externalID, openedOn, assignee) } // InsertClosedTicket inserts a closed ticket func InsertClosedTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, topic *Topic, body, externalID string, assignee *User) *Ticket { - return insertTicket(db, org, contact, ticketer, models.TicketStatusClosed, topic, body, externalID, assignee) + return insertTicket(db, org, contact, ticketer, models.TicketStatusClosed, topic, body, externalID, dates.Now(), assignee) } -func insertTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, status models.TicketStatus, topic *Topic, body, externalID string, assignee *User) *Ticket { +func insertTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, status models.TicketStatus, topic *Topic, body, externalID string, openedOn time.Time, assignee *User) *Ticket { uuid := flows.TicketUUID(uuids.New()) var closedOn *time.Time if status == models.TicketStatusClosed { @@ -60,7 +60,7 @@ func insertTicket(db *sqlx.DB, org *Org, contact *Contact, ticketer *Ticketer, s var id models.TicketID must(db.Get(&id, `INSERT INTO tickets_ticket(uuid, org_id, contact_id, ticketer_id, status, topic_id, body, external_id, opened_on, modified_on, closed_on, last_activity_on, assignee_id) - VALUES($1, $2, $3, $4, $5, $6, $7, $8, NOW(), NOW(), $9, NOW(), $10) RETURNING id`, uuid, org.ID, contact.ID, ticketer.ID, status, topic.ID, body, externalID, closedOn, assignee.SafeID(), + VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW(), $10, NOW(), $11) RETURNING id`, uuid, org.ID, contact.ID, ticketer.ID, status, topic.ID, body, externalID, openedOn, closedOn, assignee.SafeID(), )) return &Ticket{id, uuid} } diff --git a/web/ticket/base_test.go b/web/ticket/base_test.go index 714ef258e..c25ae085d 100644 --- a/web/ticket/base_test.go +++ b/web/ticket/base_test.go @@ -2,6 +2,7 @@ package ticket import ( "testing" + "time" _ "github.com/nyaruka/mailroom/services/tickets/mailgun" _ "github.com/nyaruka/mailroom/services/tickets/zendesk" @@ -15,8 +16,8 @@ func TestTicketAssign(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", testdata.Admin) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "21", testdata.Agent) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", time.Now(), testdata.Admin) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "21", time.Now(), testdata.Agent) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "34", nil) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Bob, testdata.Internal, testdata.DefaultTopic, "", "", nil) @@ -28,8 +29,8 @@ func TestTicketAddNote(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", testdata.Admin) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "21", testdata.Agent) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", time.Now(), testdata.Admin) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "21", time.Now(), testdata.Agent) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "34", nil) web.RunWebTests(t, ctx, rt, "testdata/add_note.json", nil) @@ -40,8 +41,8 @@ func TestTicketChangeTopic(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", testdata.Admin) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.SupportTopic, "Have you seen my cookies?", "21", testdata.Agent) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.DefaultTopic, "Have you seen my cookies?", "17", time.Now(), testdata.Admin) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.SupportTopic, "Have you seen my cookies?", "21", time.Now(), testdata.Agent) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Internal, testdata.SalesTopic, "Have you seen my cookies?", "34", nil) web.RunWebTests(t, ctx, rt, "testdata/change_topic.json", nil) @@ -53,10 +54,10 @@ func TestTicketClose(t *testing.T) { defer testsuite.Reset(testsuite.ResetData) // create 2 open tickets and 1 closed one for Cathy across two different ticketers - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "17", testdata.Admin) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "21", nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "17", time.Now(), testdata.Admin) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "21", time.Now(), nil) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "34", testdata.Editor) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "21", nil) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "21", time.Now(), nil) web.RunWebTests(t, ctx, rt, "testdata/close.json", nil) } @@ -69,7 +70,7 @@ func TestTicketReopen(t *testing.T) { // create 2 closed tickets and 1 open one for Cathy testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Mailgun, testdata.DefaultTopic, "Have you seen my cookies?", "17", testdata.Admin) testdata.InsertClosedTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "21", nil) - testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "34", testdata.Editor) + testdata.InsertOpenTicket(db, testdata.Org1, testdata.Cathy, testdata.Zendesk, testdata.DefaultTopic, "Have you seen my cookies?", "34", time.Now(), testdata.Editor) web.RunWebTests(t, ctx, rt, "testdata/reopen.json", nil) } From 5682fc63f2d1b2bf62f37db2089fbca419d802ba Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 18 May 2022 16:37:58 -0500 Subject: [PATCH 70/97] Simplify BroadcastBatch --- core/models/msgs.go | 88 ++++++++++++------------------- core/models/msgs_test.go | 16 +++--- core/tasks/msgs/send_broadcast.go | 12 ++--- services/tickets/utils.go | 2 +- 4 files changed, 49 insertions(+), 69 deletions(-) diff --git a/core/models/msgs.go b/core/models/msgs.go index b1a5e1d97..0e8cd8dee 100644 --- a/core/models/msgs.go +++ b/core/models/msgs.go @@ -901,58 +901,38 @@ func NewBroadcastFromEvent(ctx context.Context, tx Queryer, oa *OrgAssets, event } func (b *Broadcast) CreateBatch(contactIDs []ContactID) *BroadcastBatch { - batch := &BroadcastBatch{} - batch.b.BroadcastID = b.b.BroadcastID - batch.b.BaseLanguage = b.b.BaseLanguage - batch.b.Translations = b.b.Translations - batch.b.TemplateState = b.b.TemplateState - batch.b.OrgID = b.b.OrgID - batch.b.CreatedByID = b.b.CreatedByID - batch.b.TicketID = b.b.TicketID - batch.b.ContactIDs = contactIDs - return batch + return &BroadcastBatch{ + BroadcastID: b.b.BroadcastID, + BaseLanguage: b.b.BaseLanguage, + Translations: b.b.Translations, + TemplateState: b.b.TemplateState, + OrgID: b.b.OrgID, + CreatedByID: b.b.CreatedByID, + TicketID: b.b.TicketID, + ContactIDs: contactIDs, + } } // BroadcastBatch represents a batch of contacts that need messages sent for type BroadcastBatch struct { - b struct { - BroadcastID BroadcastID `json:"broadcast_id,omitempty"` - Translations map[envs.Language]*BroadcastTranslation `json:"translations"` - BaseLanguage envs.Language `json:"base_language"` - TemplateState TemplateState `json:"template_state"` - URNs map[ContactID]urns.URN `json:"urns,omitempty"` - ContactIDs []ContactID `json:"contact_ids,omitempty"` - IsLast bool `json:"is_last"` - OrgID OrgID `json:"org_id"` - CreatedByID UserID `json:"created_by_id"` - TicketID TicketID `json:"ticket_id"` - } -} - -func (b *BroadcastBatch) BroadcastID() BroadcastID { return b.b.BroadcastID } -func (b *BroadcastBatch) ContactIDs() []ContactID { return b.b.ContactIDs } -func (b *BroadcastBatch) URNs() map[ContactID]urns.URN { return b.b.URNs } -func (b *BroadcastBatch) SetURNs(urns map[ContactID]urns.URN) { b.b.URNs = urns } -func (b *BroadcastBatch) OrgID() OrgID { return b.b.OrgID } -func (b *BroadcastBatch) CreatedByID() UserID { return b.b.CreatedByID } -func (b *BroadcastBatch) TicketID() TicketID { return b.b.TicketID } -func (b *BroadcastBatch) Translations() map[envs.Language]*BroadcastTranslation { - return b.b.Translations + BroadcastID BroadcastID `json:"broadcast_id,omitempty"` + Translations map[envs.Language]*BroadcastTranslation `json:"translations"` + BaseLanguage envs.Language `json:"base_language"` + TemplateState TemplateState `json:"template_state"` + URNs map[ContactID]urns.URN `json:"urns,omitempty"` + ContactIDs []ContactID `json:"contact_ids,omitempty"` + IsLast bool `json:"is_last"` + OrgID OrgID `json:"org_id"` + CreatedByID UserID `json:"created_by_id"` + TicketID TicketID `json:"ticket_id"` } -func (b *BroadcastBatch) TemplateState() TemplateState { return b.b.TemplateState } -func (b *BroadcastBatch) BaseLanguage() envs.Language { return b.b.BaseLanguage } -func (b *BroadcastBatch) IsLast() bool { return b.b.IsLast } -func (b *BroadcastBatch) SetIsLast(last bool) { b.b.IsLast = last } - -func (b *BroadcastBatch) MarshalJSON() ([]byte, error) { return json.Marshal(b.b) } -func (b *BroadcastBatch) UnmarshalJSON(data []byte) error { return json.Unmarshal(data, &b.b) } -func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAssets, bcast *BroadcastBatch) ([]*Msg, error) { +func (b *BroadcastBatch) CreateMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAssets) ([]*Msg, error) { repeatedContacts := make(map[ContactID]bool) - broadcastURNs := bcast.URNs() + broadcastURNs := b.URNs // build our list of contact ids - contactIDs := bcast.ContactIDs() + contactIDs := b.ContactIDs // build a map of the contacts that are present both in our URN list and our contact id list if broadcastURNs != nil { @@ -1045,7 +1025,7 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs } // have a valid contact language, try that - trans := bcast.Translations() + trans := b.Translations t := trans[lang] // not found? try org default language @@ -1055,20 +1035,20 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs // not found? use broadcast base language if t == nil { - t = trans[bcast.BaseLanguage()] + t = trans[b.BaseLanguage] } if t == nil { - logrus.WithField("base_language", bcast.BaseLanguage()).WithField("translations", trans).Error("unable to find translation for broadcast") + logrus.WithField("base_language", b.BaseLanguage).WithField("translations", trans).Error("unable to find translation for broadcast") return nil, nil } template := "" // if this is a legacy template, migrate it forward - if bcast.TemplateState() == TemplateStateLegacy { + if b.TemplateState == TemplateStateLegacy { template, _ = expressions.MigrateTemplate(t.Text, nil) - } else if bcast.TemplateState() == TemplateStateUnevaluated { + } else if b.TemplateState == TemplateStateUnevaluated { template = t.Text } @@ -1093,7 +1073,7 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs // create our outgoing message out := flows.NewMsgOut(urn, channel.ChannelReference(), text, t.Attachments, t.QuickReplies, nil, flows.NilMsgTopic) - msg, err := NewOutgoingBroadcastMsg(rt, oa.Org(), channel, contact, out, time.Now(), bcast.BroadcastID()) + msg, err := NewOutgoingBroadcastMsg(rt, oa.Org(), channel, contact, out, time.Now(), b.BroadcastID) if err != nil { return nil, errors.Wrapf(err, "error creating outgoing message") } @@ -1147,8 +1127,8 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs } // if the broadcast was a ticket reply, update the ticket - if bcast.TicketID() != NilTicketID { - if err := bcast.updateTicket(ctx, rt.DB, oa); err != nil { + if b.TicketID != NilTicketID { + if err := b.updateTicket(ctx, rt.DB, oa); err != nil { return nil, err } } @@ -1157,7 +1137,7 @@ func CreateBroadcastMessages(ctx context.Context, rt *runtime.Runtime, oa *OrgAs } func (b *BroadcastBatch) updateTicket(ctx context.Context, db Queryer, oa *OrgAssets) error { - firstReplySeconds, err := TicketRecordReplied(ctx, db, b.TicketID(), dates.Now()) + firstReplySeconds, err := TicketRecordReplied(ctx, db, b.TicketID, dates.Now()) if err != nil { return err } @@ -1165,8 +1145,8 @@ func (b *BroadcastBatch) updateTicket(ctx context.Context, db Queryer, oa *OrgAs // record reply counts for org, user and team replyCounts := map[string]int{scopeOrg(oa): 1} - if b.CreatedByID() != NilUserID { - user := oa.UserByID(b.CreatedByID()) + if b.CreatedByID != NilUserID { + user := oa.UserByID(b.CreatedByID) if user != nil { replyCounts[scopeUser(oa, user)] = 1 if user.Team() != nil { diff --git a/core/models/msgs_test.go b/core/models/msgs_test.go index 13185b753..68dbb4f6c 100644 --- a/core/models/msgs_test.go +++ b/core/models/msgs_test.go @@ -626,18 +626,18 @@ func TestNonPersistentBroadcasts(t *testing.T) { batch := bcast.CreateBatch([]models.ContactID{testdata.Alexandria.ID, testdata.Bob.ID}) - assert.Equal(t, models.NilBroadcastID, batch.BroadcastID()) - assert.Equal(t, testdata.Org1.ID, batch.OrgID()) - assert.Equal(t, envs.Language("eng"), batch.BaseLanguage()) - assert.Equal(t, translations, batch.Translations()) - assert.Equal(t, models.TemplateStateUnevaluated, batch.TemplateState()) - assert.Equal(t, ticket.ID, batch.TicketID()) - assert.Equal(t, []models.ContactID{testdata.Alexandria.ID, testdata.Bob.ID}, batch.ContactIDs()) + assert.Equal(t, models.NilBroadcastID, batch.BroadcastID) + assert.Equal(t, testdata.Org1.ID, batch.OrgID) + assert.Equal(t, envs.Language("eng"), batch.BaseLanguage) + assert.Equal(t, translations, batch.Translations) + assert.Equal(t, models.TemplateStateUnevaluated, batch.TemplateState) + assert.Equal(t, ticket.ID, batch.TicketID) + assert.Equal(t, []models.ContactID{testdata.Alexandria.ID, testdata.Bob.ID}, batch.ContactIDs) oa, err := models.GetOrgAssets(ctx, rt, testdata.Org1.ID) require.NoError(t, err) - msgs, err := models.CreateBroadcastMessages(ctx, rt, oa, batch) + msgs, err := batch.CreateMessages(ctx, rt, oa) require.NoError(t, err) assert.Equal(t, 2, len(msgs)) diff --git a/core/tasks/msgs/send_broadcast.go b/core/tasks/msgs/send_broadcast.go index 529b3ccd2..09940d7e6 100644 --- a/core/tasks/msgs/send_broadcast.go +++ b/core/tasks/msgs/send_broadcast.go @@ -103,8 +103,8 @@ func CreateBroadcastBatches(ctx context.Context, rt *runtime.Runtime, bcast *mod // also set our URNs if isLast { - batch.SetIsLast(true) - batch.SetURNs(urnContacts) + batch.IsLast = true + batch.URNs = urnContacts } err = queue.AddTask(rc, q, queue.SendBroadcastBatch, int(bcast.OrgID()), batch, queue.DefaultPriority) @@ -151,21 +151,21 @@ func handleSendBroadcastBatch(ctx context.Context, rt *runtime.Runtime, task *qu func SendBroadcastBatch(ctx context.Context, rt *runtime.Runtime, bcast *models.BroadcastBatch) error { // always set our broadcast as sent if it is our last defer func() { - if bcast.IsLast() { - err := models.MarkBroadcastSent(ctx, rt.DB, bcast.BroadcastID()) + if bcast.IsLast { + err := models.MarkBroadcastSent(ctx, rt.DB, bcast.BroadcastID) if err != nil { logrus.WithError(err).Error("error marking broadcast as sent") } } }() - oa, err := models.GetOrgAssets(ctx, rt, bcast.OrgID()) + oa, err := models.GetOrgAssets(ctx, rt, bcast.OrgID) if err != nil { return errors.Wrapf(err, "error getting org assets") } // create this batch of messages - msgs, err := models.CreateBroadcastMessages(ctx, rt, oa, bcast) + msgs, err := bcast.CreateMessages(ctx, rt, oa) if err != nil { return errors.Wrapf(err, "error creating broadcast messages") } diff --git a/services/tickets/utils.go b/services/tickets/utils.go index 0cc62f171..805203c75 100644 --- a/services/tickets/utils.go +++ b/services/tickets/utils.go @@ -103,7 +103,7 @@ func SendReply(ctx context.Context, rt *runtime.Runtime, ticket *models.Ticket, // we'll use a broadcast to send this message bcast := models.NewBroadcast(oa.OrgID(), models.NilBroadcastID, translations, models.TemplateStateEvaluated, envs.Language("base"), nil, nil, nil, ticket.ID(), models.NilUserID) batch := bcast.CreateBatch([]models.ContactID{ticket.ContactID()}) - msgs, err := models.CreateBroadcastMessages(ctx, rt, oa, batch) + msgs, err := batch.CreateMessages(ctx, rt, oa) if err != nil { return nil, errors.Wrapf(err, "error creating message batch") } From 59881fb147de5dfc35f4aa02100407029e858f3b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 18 May 2022 17:01:11 -0500 Subject: [PATCH 71/97] Update CHANGELOG.md for v7.3.15 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8da6d651..ab34d7baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +v7.3.15 +---------- + * Simplify BroadcastBatch + * Record first-reply timings for tickets + * Add arm64 as a build target + v7.3.14 ---------- * Update to latest goflow which fixes contact query bug From 9de45098e68719c65eed6aa076c702c6874a8c01 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 26 May 2022 11:17:38 -0500 Subject: [PATCH 72/97] Update to latest goflow --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3177b5942..f1d0420cf 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.20.0 - github.com/nyaruka/goflow v0.159.1 + github.com/nyaruka/goflow v0.159.2 github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 diff --git a/go.sum b/go.sum index 6c65a1e26..91c2410cd 100644 --- a/go.sum +++ b/go.sum @@ -121,8 +121,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.20.0 h1:qbxRsBBPvpfGbuBq08jlQGxa5t+UZX/YGV7+kR+/moM= github.com/nyaruka/gocommon v1.20.0/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= -github.com/nyaruka/goflow v0.159.1 h1:P06TSO1CmR8v1M7mIbeZSs7toEb6aDIF8nQJKCgx3AM= -github.com/nyaruka/goflow v0.159.1/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= +github.com/nyaruka/goflow v0.159.2 h1:tyAILWt7DGQ5nfd2/ZN4BNlVxPbm/Omoz/CHS6hs+UM= +github.com/nyaruka/goflow v0.159.2/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From a84640981cbd10361aa2fcecfc1945ba8d1e4a72 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 26 May 2022 11:29:29 -0500 Subject: [PATCH 73/97] Update CHANGELOG.md for v7.3.16 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab34d7baa..f72de7805 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +v7.3.16 +---------- + * Update to latest goflow + v7.3.15 ---------- * Simplify BroadcastBatch From 3eb9f0c6bcb894fe291a4cef8abd753f11271c9a Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 26 May 2022 14:43:42 -0500 Subject: [PATCH 74/97] Use analytics package from gocommon instead of librato directly --- core/runner/runner.go | 12 ++++++------ core/tasks/analytics/cron.go | 18 +++++++++--------- core/tasks/campaigns/cron.go | 6 +++--- core/tasks/handler/worker.go | 6 +++--- go.mod | 4 ++-- go.sum | 4 ++-- mailroom.go | 9 +++++---- 7 files changed, 30 insertions(+), 29 deletions(-) diff --git a/core/runner/runner.go b/core/runner/runner.go index 29705605e..0d0666348 100644 --- a/core/runner/runner.go +++ b/core/runner/runner.go @@ -6,11 +6,11 @@ import ( "github.com/gomodule/redigo/redis" "github.com/jmoiron/sqlx" + "github.com/nyaruka/gocommon/analytics" "github.com/nyaruka/goflow/assets" "github.com/nyaruka/goflow/excellent/types" "github.com/nyaruka/goflow/flows" "github.com/nyaruka/goflow/flows/triggers" - "github.com/nyaruka/librato" "github.com/nyaruka/mailroom/core/goflow" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" @@ -243,8 +243,8 @@ func StartFlowBatch( } // log both our total and average - librato.Gauge("mr.flow_batch_start_elapsed", float64(time.Since(start))/float64(time.Second)) - librato.Gauge("mr.flow_batch_start_count", float64(len(sessions))) + analytics.Gauge("mr.flow_batch_start_elapsed", float64(time.Since(start))/float64(time.Second)) + analytics.Gauge("mr.flow_batch_start_count", float64(len(sessions))) return sessions, nil } @@ -393,8 +393,8 @@ func FireCampaignEvents( } // log both our total and average - librato.Gauge("mr.campaign_event_elapsed", float64(time.Since(start))/float64(time.Second)) - librato.Gauge("mr.campaign_event_count", float64(len(sessions))) + analytics.Gauge("mr.campaign_event_elapsed", float64(time.Since(start))/float64(time.Second)) + analytics.Gauge("mr.campaign_event_count", float64(len(sessions))) // build the list of contacts actually started startedContacts := make([]models.ContactID, len(sessions)) @@ -559,7 +559,7 @@ func StartFlowForContacts( continue } log.WithField("elapsed", time.Since(start)).Info("flow engine start") - librato.Gauge("mr.flow_start_elapsed", float64(time.Since(start))) + analytics.Gauge("mr.flow_start_elapsed", float64(time.Since(start))) sessions = append(sessions, session) sprints = append(sprints, sprint) diff --git a/core/tasks/analytics/cron.go b/core/tasks/analytics/cron.go index 8fc72af04..a12647993 100644 --- a/core/tasks/analytics/cron.go +++ b/core/tasks/analytics/cron.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/nyaruka/librato" + "github.com/nyaruka/gocommon/analytics" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" @@ -60,14 +60,14 @@ func reportAnalytics(ctx context.Context, rt *runtime.Runtime) error { redisWaitDuration = redisStats.WaitDuration redisWaitCount = redisStats.WaitCount - librato.Gauge("mr.db_busy", float64(dbStats.InUse)) - librato.Gauge("mr.db_idle", float64(dbStats.Idle)) - librato.Gauge("mr.db_wait_ms", float64(dbWaitDurationInPeriod/time.Millisecond)) - librato.Gauge("mr.db_wait_count", float64(dbWaitCountInPeriod)) - librato.Gauge("mr.redis_wait_ms", float64(redisWaitDurationInPeriod/time.Millisecond)) - librato.Gauge("mr.redis_wait_count", float64(redisWaitCountInPeriod)) - librato.Gauge("mr.handler_queue", float64(handlerSize)) - librato.Gauge("mr.batch_queue", float64(batchSize)) + analytics.Gauge("mr.db_busy", float64(dbStats.InUse)) + analytics.Gauge("mr.db_idle", float64(dbStats.Idle)) + analytics.Gauge("mr.db_wait_ms", float64(dbWaitDurationInPeriod/time.Millisecond)) + analytics.Gauge("mr.db_wait_count", float64(dbWaitCountInPeriod)) + analytics.Gauge("mr.redis_wait_ms", float64(redisWaitDurationInPeriod/time.Millisecond)) + analytics.Gauge("mr.redis_wait_count", float64(redisWaitCountInPeriod)) + analytics.Gauge("mr.handler_queue", float64(handlerSize)) + analytics.Gauge("mr.batch_queue", float64(batchSize)) logrus.WithFields(logrus.Fields{ "db_busy": dbStats.InUse, diff --git a/core/tasks/campaigns/cron.go b/core/tasks/campaigns/cron.go index 7522aeee0..c6bdd0008 100644 --- a/core/tasks/campaigns/cron.go +++ b/core/tasks/campaigns/cron.go @@ -6,8 +6,8 @@ import ( "time" "github.com/gomodule/redigo/redis" + "github.com/nyaruka/gocommon/analytics" "github.com/nyaruka/goflow/assets" - "github.com/nyaruka/librato" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" @@ -107,8 +107,8 @@ func QueueEventFires(ctx context.Context, rt *runtime.Runtime) error { numTasks++ } - librato.Gauge("mr.campaign_event_cron_elapsed", float64(time.Since(start))/float64(time.Second)) - librato.Gauge("mr.campaign_event_cron_count", float64(numFires)) + analytics.Gauge("mr.campaign_event_cron_elapsed", float64(time.Since(start))/float64(time.Second)) + analytics.Gauge("mr.campaign_event_cron_count", float64(numFires)) log.WithFields(logrus.Fields{ "elapsed": time.Since(start), "fires": numFires, diff --git a/core/tasks/handler/worker.go b/core/tasks/handler/worker.go index 166f943cd..4f3528a2c 100644 --- a/core/tasks/handler/worker.go +++ b/core/tasks/handler/worker.go @@ -8,6 +8,7 @@ import ( "github.com/gomodule/redigo/redis" "github.com/jmoiron/sqlx" + "github.com/nyaruka/gocommon/analytics" "github.com/nyaruka/gocommon/dbutil" "github.com/nyaruka/gocommon/urns" "github.com/nyaruka/goflow/excellent/types" @@ -17,7 +18,6 @@ import ( "github.com/nyaruka/goflow/flows/resumes" "github.com/nyaruka/goflow/flows/triggers" "github.com/nyaruka/goflow/utils" - "github.com/nyaruka/librato" "github.com/nyaruka/mailroom" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/core/queue" @@ -159,10 +159,10 @@ func handleContactEvent(ctx context.Context, rt *runtime.Runtime, task *queue.Ta } // log our processing time to librato - librato.Gauge(fmt.Sprintf("mr.%s_elapsed", contactEvent.Type), float64(time.Since(start))/float64(time.Second)) + analytics.Gauge(fmt.Sprintf("mr.%s_elapsed", contactEvent.Type), float64(time.Since(start))/float64(time.Second)) // and total latency for this task since it was queued - librato.Gauge(fmt.Sprintf("mr.%s_latency", contactEvent.Type), float64(time.Since(task.QueuedOn))/float64(time.Second)) + analytics.Gauge(fmt.Sprintf("mr.%s_latency", contactEvent.Type), float64(time.Since(task.QueuedOn))/float64(time.Second)) // if we get an error processing an event, requeue it for later and return our error if err != nil { diff --git a/go.mod b/go.mod index f1d0420cf..de6d37de9 100644 --- a/go.mod +++ b/go.mod @@ -16,9 +16,8 @@ require ( github.com/jmoiron/sqlx v1.3.4 github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.20.0 + github.com/nyaruka/gocommon v1.21.0 github.com/nyaruka/goflow v0.159.2 - github.com/nyaruka/librato v1.0.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 @@ -54,6 +53,7 @@ require ( github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/naoina/go-stringutil v0.1.0 // indirect github.com/naoina/toml v0.1.1 // indirect + github.com/nyaruka/librato v1.0.0 // indirect github.com/nyaruka/phonenumbers v1.0.75 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect diff --git a/go.sum b/go.sum index 91c2410cd..81020dab4 100644 --- a/go.sum +++ b/go.sum @@ -119,8 +119,8 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.20.0 h1:qbxRsBBPvpfGbuBq08jlQGxa5t+UZX/YGV7+kR+/moM= -github.com/nyaruka/gocommon v1.20.0/go.mod h1:JrQSLAPo9ezSy1AzsJ1zDr1HW0/eu+aipICJkN/+kpg= +github.com/nyaruka/gocommon v1.21.0 h1:nu7M2cdSPrkqUPdGsEeWX047+neo69H4x+4g/OKpoLM= +github.com/nyaruka/gocommon v1.21.0/go.mod h1:cv9r6amof1gSktfPZROClZhLFzdSIH/N9KbW6Nny4g8= github.com/nyaruka/goflow v0.159.2 h1:tyAILWt7DGQ5nfd2/ZN4BNlVxPbm/Omoz/CHS6hs+UM= github.com/nyaruka/goflow v0.159.2/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= diff --git a/mailroom.go b/mailroom.go index e42345748..d5bbc2c73 100644 --- a/mailroom.go +++ b/mailroom.go @@ -7,6 +7,7 @@ import ( "sync" "time" + "github.com/nyaruka/gocommon/analytics" "github.com/nyaruka/gocommon/storage" "github.com/nyaruka/mailroom/core/queue" "github.com/nyaruka/mailroom/runtime" @@ -16,7 +17,6 @@ import ( "github.com/gomodule/redigo/redis" "github.com/jmoiron/sqlx" - "github.com/nyaruka/librato" "github.com/olivere/elastic/v7" "github.com/sirupsen/logrus" ) @@ -172,10 +172,11 @@ func (mr *Mailroom) Start() error { // if we have a librato token, configure it if c.LibratoToken != "" { - librato.Configure(c.LibratoUsername, c.LibratoToken, c.InstanceName, time.Second, mr.wg) - librato.Start() + analytics.RegisterBackend(analytics.NewLibrato(c.LibratoUsername, c.LibratoToken, c.InstanceName, time.Second, mr.wg)) } + analytics.Start() + // init our foremen and start it mr.batchForeman.Start() mr.handlerForeman.Start() @@ -194,7 +195,7 @@ func (mr *Mailroom) Stop() error { logrus.Info("mailroom stopping") mr.batchForeman.Stop() mr.handlerForeman.Stop() - librato.Stop() + analytics.Stop() close(mr.quit) mr.cancel() From e1000ec7b3413638506c00645212bffb28efa73c Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Mon, 6 Jun 2022 15:09:26 -0500 Subject: [PATCH 75/97] Don't blow up in msg_created handler if flow has been deleted --- core/handlers/msg_created.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/handlers/msg_created.go b/core/handlers/msg_created.go index 0e79d9d37..5666c93df 100644 --- a/core/handlers/msg_created.go +++ b/core/handlers/msg_created.go @@ -93,10 +93,15 @@ func handleMsgCreated(ctx context.Context, rt *runtime.Runtime, tx *sqlx.Tx, oa } } + // and the flow + var flow *models.Flow run, _ := scene.Session().FindStep(e.StepUUID()) - flow, _ := oa.FlowByUUID(run.FlowReference().UUID) + flowAsset, _ := oa.FlowByUUID(run.FlowReference().UUID) + if flowAsset != nil { + flow = flowAsset.(*models.Flow) + } - msg, err := models.NewOutgoingFlowMsg(rt, oa.Org(), channel, scene.Session(), flow.(*models.Flow), event.Msg, event.CreatedOn()) + msg, err := models.NewOutgoingFlowMsg(rt, oa.Org(), channel, scene.Session(), flow, event.Msg, event.CreatedOn()) if err != nil { return errors.Wrapf(err, "error creating outgoing message to %s", event.Msg.URN()) } From 7aff1347e30b4c12e03e33424a7879ba7af09775 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 9 Jun 2022 09:30:26 -0500 Subject: [PATCH 76/97] Add support for excluding contacts already in a flow in start_session actions --- core/hooks/insert_start.go | 3 ++- core/models/starts.go | 9 +++++--- core/models/starts_test.go | 2 +- core/runner/runner.go | 2 +- core/runner/runner_test.go | 37 ++++++++++++++++---------------- core/tasks/ivr/cron_test.go | 2 +- core/tasks/ivr/worker_test.go | 2 +- core/tasks/starts/worker_test.go | 24 ++++++++++++--------- go.mod | 2 +- go.sum | 4 ++-- web/ivr/ivr_test.go | 4 ++-- 11 files changed, 50 insertions(+), 41 deletions(-) diff --git a/core/hooks/insert_start.go b/core/hooks/insert_start.go index 6a5d63a0d..c22092126 100644 --- a/core/hooks/insert_start.go +++ b/core/hooks/insert_start.go @@ -57,11 +57,12 @@ func (h *insertStartHook) Apply(ctx context.Context, rt *runtime.Runtime, tx *sq } // create our start - start := models.NewFlowStart(oa.OrgID(), models.StartTypeFlowAction, flow.FlowType(), flow.ID(), true, true). + start := models.NewFlowStart(oa.OrgID(), models.StartTypeFlowAction, flow.FlowType(), flow.ID(), true). WithGroupIDs(groupIDs). WithContactIDs(contactIDs). WithURNs(event.URNs). WithQuery(event.ContactQuery). + WithExcludeInAFlow(event.Exclusions.InAFlow). WithCreateContact(event.CreateContact). WithParentSummary(event.RunSummary). WithSessionHistory(historyJSON) diff --git a/core/models/starts.go b/core/models/starts.go index 311bbd76c..49e942458 100644 --- a/core/models/starts.go +++ b/core/models/starts.go @@ -195,6 +195,10 @@ func (s *FlowStart) WithQuery(query string) *FlowStart { func (s *FlowStart) RestartParticipants() bool { return s.s.RestartParticipants } func (s *FlowStart) IncludeActive() bool { return s.s.IncludeActive } +func (s *FlowStart) WithExcludeInAFlow(exclude bool) *FlowStart { + s.s.IncludeActive = !exclude + return s +} func (s *FlowStart) CreateContact() bool { return s.s.CreateContact } func (s *FlowStart) WithCreateContact(create bool) *FlowStart { @@ -234,7 +238,7 @@ func GetFlowStartAttributes(ctx context.Context, db Queryer, startID StartID) (* } // NewFlowStart creates a new flow start objects for the passed in parameters -func NewFlowStart(orgID OrgID, startType StartType, flowType FlowType, flowID FlowID, restartParticipants, includeActive bool) *FlowStart { +func NewFlowStart(orgID OrgID, startType StartType, flowType FlowType, flowID FlowID, restartParticipants bool) *FlowStart { s := &FlowStart{} s.s.UUID = uuids.New() s.s.OrgID = orgID @@ -242,8 +246,7 @@ func NewFlowStart(orgID OrgID, startType StartType, flowType FlowType, flowID Fl s.s.FlowType = flowType s.s.FlowID = flowID s.s.RestartParticipants = restartParticipants - s.s.IncludeActive = includeActive - + s.s.IncludeActive = true return s } diff --git a/core/models/starts_test.go b/core/models/starts_test.go index cfa4780c4..77db343bf 100644 --- a/core/models/starts_test.go +++ b/core/models/starts_test.go @@ -100,7 +100,7 @@ func TestStartsBuilding(t *testing.T) { uuids.SetGenerator(uuids.NewSeededGenerator(12345)) defer uuids.SetGenerator(uuids.DefaultGenerator) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, testdata.Favorites.ID, true, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, testdata.Favorites.ID, true). WithGroupIDs([]models.GroupID{testdata.DoctorsGroup.ID}). WithExcludeGroupIDs([]models.GroupID{testdata.TestersGroup.ID}). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}). diff --git a/core/runner/runner.go b/core/runner/runner.go index 0d0666348..ffe4ba4a6 100644 --- a/core/runner/runner.go +++ b/core/runner/runner.go @@ -719,7 +719,7 @@ func TriggerIVRFlow(ctx context.Context, rt *runtime.Runtime, orgID models.OrgID tx, _ := rt.DB.BeginTxx(ctx, nil) // create our start - start := models.NewFlowStart(orgID, models.StartTypeTrigger, models.FlowTypeVoice, flowID, true, true). + start := models.NewFlowStart(orgID, models.StartTypeTrigger, models.FlowTypeVoice, flowID, true). WithContactIDs(contactIDs) // insert it diff --git a/core/runner/runner_test.go b/core/runner/runner_test.go index a12bd6cd1..e325e9da9 100644 --- a/core/runner/runner_test.go +++ b/core/runner/runner_test.go @@ -192,34 +192,35 @@ func TestBatchStart(t *testing.T) { contactIDs := []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID} tcs := []struct { - Flow models.FlowID - Restart bool - IncludeActive bool - Extra json.RawMessage - Msg string - Count int - TotalCount int + Flow models.FlowID + Restart bool + ExcludeInAFlow bool + Extra json.RawMessage + Msg string + Count int + TotalCount int }{ - {testdata.SingleMessage.ID, true, true, nil, "Hey, how are you?", 2, 2}, - {testdata.SingleMessage.ID, false, true, nil, "Hey, how are you?", 0, 2}, + {testdata.SingleMessage.ID, true, false, nil, "Hey, how are you?", 2, 2}, {testdata.SingleMessage.ID, false, false, nil, "Hey, how are you?", 0, 2}, - {testdata.SingleMessage.ID, true, false, nil, "Hey, how are you?", 2, 4}, + {testdata.SingleMessage.ID, false, true, nil, "Hey, how are you?", 0, 2}, + {testdata.SingleMessage.ID, true, true, nil, "Hey, how are you?", 2, 4}, { - Flow: testdata.IncomingExtraFlow.ID, - Restart: true, - IncludeActive: false, - Extra: json.RawMessage([]byte(`{"name":"Fred", "age":33}`)), - Msg: "Great to meet you Fred. Your age is 33.", - Count: 2, - TotalCount: 2, + Flow: testdata.IncomingExtraFlow.ID, + Restart: true, + ExcludeInAFlow: true, + Extra: json.RawMessage([]byte(`{"name":"Fred", "age":33}`)), + Msg: "Great to meet you Fred. Your age is 33.", + Count: 2, + TotalCount: 2, }, } last := time.Now() for i, tc := range tcs { - start := models.NewFlowStart(models.OrgID(1), models.StartTypeManual, models.FlowTypeMessaging, tc.Flow, tc.Restart, tc.IncludeActive). + start := models.NewFlowStart(models.OrgID(1), models.StartTypeManual, models.FlowTypeMessaging, tc.Flow, tc.Restart). WithContactIDs(contactIDs). + WithExcludeInAFlow(tc.ExcludeInAFlow). WithExtra(tc.Extra) batch := start.CreateBatch(contactIDs, true, len(contactIDs)) diff --git a/core/tasks/ivr/cron_test.go b/core/tasks/ivr/cron_test.go index b585165d7..f3fa534c1 100644 --- a/core/tasks/ivr/cron_test.go +++ b/core/tasks/ivr/cron_test.go @@ -29,7 +29,7 @@ func TestRetries(t *testing.T) { db.MustExec(`UPDATE channels_channel SET channel_type = 'ZZ', config = '{"max_concurrent_events": 1}' WHERE id = $1`, testdata.TwilioChannel.ID) // create a flow start for cathy - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). WithContactIDs([]models.ContactID{testdata.Cathy.ID}) // call our master starter diff --git a/core/tasks/ivr/worker_test.go b/core/tasks/ivr/worker_test.go index 3c20744c5..512bb361f 100644 --- a/core/tasks/ivr/worker_test.go +++ b/core/tasks/ivr/worker_test.go @@ -36,7 +36,7 @@ func TestIVR(t *testing.T) { db.MustExec(`UPDATE channels_channel SET channel_type = 'ZZ', config = '{"max_concurrent_events": 1}' WHERE id = $1`, testdata.TwilioChannel.ID) // create a flow start for cathy - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). WithContactIDs([]models.ContactID{testdata.Cathy.ID}) // call our master starter diff --git a/core/tasks/starts/worker_test.go b/core/tasks/starts/worker_test.go index 1308353c7..c1176063e 100644 --- a/core/tasks/starts/worker_test.go +++ b/core/tasks/starts/worker_test.go @@ -48,7 +48,7 @@ func TestStarts(t *testing.T) { query string queryResult []models.ContactID restartParticipants bool - includeActive bool + excludeInAFlow bool queue string expectedContactCount int expectedBatchCount int @@ -59,6 +59,7 @@ func TestStarts(t *testing.T) { { label: "Empty flow start", flowID: testdata.Favorites.ID, + excludeInAFlow: true, queue: queue.BatchQueue, expectedContactCount: 0, expectedBatchCount: 0, @@ -70,6 +71,7 @@ func TestStarts(t *testing.T) { label: "Single group", flowID: testdata.Favorites.ID, groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, + excludeInAFlow: true, queue: queue.BatchQueue, expectedContactCount: 121, expectedBatchCount: 2, @@ -82,6 +84,7 @@ func TestStarts(t *testing.T) { flowID: testdata.Favorites.ID, groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, contactIDs: []models.ContactID{testdata.Cathy.ID}, + excludeInAFlow: true, queue: queue.BatchQueue, expectedContactCount: 121, expectedBatchCount: 2, @@ -94,7 +97,7 @@ func TestStarts(t *testing.T) { flowID: testdata.Favorites.ID, contactIDs: []models.ContactID{testdata.Cathy.ID}, restartParticipants: true, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -129,7 +132,7 @@ func TestStarts(t *testing.T) { label: "Single contact, include active, but no restart", flowID: testdata.Favorites.ID, contactIDs: []models.ContactID{testdata.Bob.ID}, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -142,7 +145,7 @@ func TestStarts(t *testing.T) { flowID: testdata.Favorites.ID, contactIDs: []models.ContactID{testdata.Bob.ID}, restartParticipants: true, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -156,7 +159,7 @@ func TestStarts(t *testing.T) { query: "bob", queryResult: []models.ContactID{testdata.Bob.ID}, restartParticipants: true, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -169,7 +172,7 @@ func TestStarts(t *testing.T) { flowID: testdata.Favorites.ID, query: "xyz = 45", restartParticipants: true, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 0, expectedBatchCount: 0, @@ -192,7 +195,7 @@ func TestStarts(t *testing.T) { label: "Other messaging flow", flowID: testdata.PickANumber.ID, contactIDs: []models.ContactID{testdata.Bob.ID}, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -204,7 +207,7 @@ func TestStarts(t *testing.T) { label: "Background flow", flowID: testdata.SingleMessage.ID, contactIDs: []models.ContactID{testdata.Bob.ID}, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -218,7 +221,7 @@ func TestStarts(t *testing.T) { contactIDs: []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}, excludeGroupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, // should exclude Cathy restartParticipants: true, - includeActive: true, + excludeInAFlow: false, queue: queue.HandlerQueue, expectedContactCount: 1, expectedBatchCount: 1, @@ -234,11 +237,12 @@ func TestStarts(t *testing.T) { } // handle our start task - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, tc.flowID, tc.restartParticipants, tc.includeActive). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, tc.flowID, tc.restartParticipants). WithGroupIDs(tc.groupIDs). WithExcludeGroupIDs(tc.excludeGroupIDs). WithContactIDs(tc.contactIDs). WithQuery(tc.query). + WithExcludeInAFlow(tc.excludeInAFlow). WithCreateContact(tc.createContact) err := models.InsertFlowStarts(ctx, db, []*models.FlowStart{start}) diff --git a/go.mod b/go.mod index de6d37de9..9410c8b53 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 github.com/nyaruka/gocommon v1.21.0 - github.com/nyaruka/goflow v0.159.2 + github.com/nyaruka/goflow v0.160.0 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 diff --git a/go.sum b/go.sum index 81020dab4..57f1df094 100644 --- a/go.sum +++ b/go.sum @@ -121,8 +121,8 @@ github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= github.com/nyaruka/gocommon v1.21.0 h1:nu7M2cdSPrkqUPdGsEeWX047+neo69H4x+4g/OKpoLM= github.com/nyaruka/gocommon v1.21.0/go.mod h1:cv9r6amof1gSktfPZROClZhLFzdSIH/N9KbW6Nny4g8= -github.com/nyaruka/goflow v0.159.2 h1:tyAILWt7DGQ5nfd2/ZN4BNlVxPbm/Omoz/CHS6hs+UM= -github.com/nyaruka/goflow v0.159.2/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= +github.com/nyaruka/goflow v0.160.0 h1:eBaokSbxnwr39SLd1Yqd/zALusdyviVxCoceyRZQGnY= +github.com/nyaruka/goflow v0.160.0/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= diff --git a/web/ivr/ivr_test.go b/web/ivr/ivr_test.go index 156adf62b..f8b11a1e6 100644 --- a/web/ivr/ivr_test.go +++ b/web/ivr/ivr_test.go @@ -94,7 +94,7 @@ func TestTwilioIVR(t *testing.T) { }, "results": {} }`) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.Bob.ID, testdata.George.ID}). WithParentSummary(parentSummary) @@ -402,7 +402,7 @@ func TestVonageIVR(t *testing.T) { // create a flow start for cathy and george extra := json.RawMessage(`{"ref_id":"123"}`) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.George.ID}). WithExtra(extra) models.InsertFlowStarts(ctx, db, []*models.FlowStart{start}) From 92911c35e0ecc0880c779a7c23ac12ebe9348e48 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 9 Jun 2022 14:38:18 -0500 Subject: [PATCH 77/97] Start cleaning up use of include vs exclude properties of starts --- core/hooks/insert_start.go | 2 +- core/models/starts.go | 37 ++-- core/models/starts_test.go | 10 +- core/runner/runner.go | 36 ++-- core/runner/runner_test.go | 43 ++--- core/tasks/ivr/cron_test.go | 2 +- core/tasks/ivr/worker.go | 4 +- core/tasks/ivr/worker_test.go | 2 +- core/tasks/starts/worker_test.go | 315 ++++++++++++++++--------------- web/ivr/ivr_test.go | 4 +- 10 files changed, 235 insertions(+), 220 deletions(-) diff --git a/core/hooks/insert_start.go b/core/hooks/insert_start.go index c22092126..43bc4eef8 100644 --- a/core/hooks/insert_start.go +++ b/core/hooks/insert_start.go @@ -57,7 +57,7 @@ func (h *insertStartHook) Apply(ctx context.Context, rt *runtime.Runtime, tx *sq } // create our start - start := models.NewFlowStart(oa.OrgID(), models.StartTypeFlowAction, flow.FlowType(), flow.ID(), true). + start := models.NewFlowStart(oa.OrgID(), models.StartTypeFlowAction, flow.FlowType(), flow.ID()). WithGroupIDs(groupIDs). WithContactIDs(contactIDs). WithURNs(event.URNs). diff --git a/core/models/starts.go b/core/models/starts.go index 49e942458..db9013037 100644 --- a/core/models/starts.go +++ b/core/models/starts.go @@ -112,16 +112,16 @@ type FlowStartBatch struct { } } -func (b *FlowStartBatch) StartID() StartID { return b.b.StartID } -func (b *FlowStartBatch) StartType() StartType { return b.b.StartType } -func (b *FlowStartBatch) OrgID() OrgID { return b.b.OrgID } -func (b *FlowStartBatch) CreatedByID() UserID { return b.b.CreatedByID } -func (b *FlowStartBatch) FlowID() FlowID { return b.b.FlowID } -func (b *FlowStartBatch) ContactIDs() []ContactID { return b.b.ContactIDs } -func (b *FlowStartBatch) RestartParticipants() bool { return b.b.RestartParticipants } -func (b *FlowStartBatch) IncludeActive() bool { return b.b.IncludeActive } -func (b *FlowStartBatch) IsLast() bool { return b.b.IsLast } -func (b *FlowStartBatch) TotalContacts() int { return b.b.TotalContacts } +func (b *FlowStartBatch) StartID() StartID { return b.b.StartID } +func (b *FlowStartBatch) StartType() StartType { return b.b.StartType } +func (b *FlowStartBatch) OrgID() OrgID { return b.b.OrgID } +func (b *FlowStartBatch) CreatedByID() UserID { return b.b.CreatedByID } +func (b *FlowStartBatch) FlowID() FlowID { return b.b.FlowID } +func (b *FlowStartBatch) ContactIDs() []ContactID { return b.b.ContactIDs } +func (b *FlowStartBatch) ExcludeStartedPreviously() bool { return !b.b.RestartParticipants } +func (b *FlowStartBatch) ExcludeInAFlow() bool { return !b.b.IncludeActive } +func (b *FlowStartBatch) IsLast() bool { return b.b.IsLast } +func (b *FlowStartBatch) TotalContacts() int { return b.b.TotalContacts } func (b *FlowStartBatch) ParentSummary() json.RawMessage { return json.RawMessage(b.b.ParentSummary) } func (b *FlowStartBatch) SessionHistory() json.RawMessage { return json.RawMessage(b.b.SessionHistory) } @@ -193,8 +193,13 @@ func (s *FlowStart) WithQuery(query string) *FlowStart { return s } -func (s *FlowStart) RestartParticipants() bool { return s.s.RestartParticipants } -func (s *FlowStart) IncludeActive() bool { return s.s.IncludeActive } +func (s *FlowStart) ExcludeStartedPreviously() bool { return !s.s.RestartParticipants } +func (s *FlowStart) WithExcludeStartedPreviously(exclude bool) *FlowStart { + s.s.RestartParticipants = !exclude + return s +} + +func (s *FlowStart) ExcludeInAFlow() bool { return !s.s.IncludeActive } func (s *FlowStart) WithExcludeInAFlow(exclude bool) *FlowStart { s.s.IncludeActive = !exclude return s @@ -238,14 +243,14 @@ func GetFlowStartAttributes(ctx context.Context, db Queryer, startID StartID) (* } // NewFlowStart creates a new flow start objects for the passed in parameters -func NewFlowStart(orgID OrgID, startType StartType, flowType FlowType, flowID FlowID, restartParticipants bool) *FlowStart { +func NewFlowStart(orgID OrgID, startType StartType, flowType FlowType, flowID FlowID) *FlowStart { s := &FlowStart{} s.s.UUID = uuids.New() s.s.OrgID = orgID s.s.StartType = startType s.s.FlowType = flowType s.s.FlowID = flowID - s.s.RestartParticipants = restartParticipants + s.s.RestartParticipants = true s.s.IncludeActive = true return s } @@ -338,8 +343,8 @@ func (s *FlowStart) CreateBatch(contactIDs []ContactID, last bool, totalContacts b.b.FlowID = s.FlowID() b.b.FlowType = s.FlowType() b.b.ContactIDs = contactIDs - b.b.RestartParticipants = s.RestartParticipants() - b.b.IncludeActive = s.IncludeActive() + b.b.RestartParticipants = s.s.RestartParticipants + b.b.IncludeActive = s.s.IncludeActive b.b.ParentSummary = null.JSON(s.ParentSummary()) b.b.SessionHistory = null.JSON(s.SessionHistory()) b.b.Extra = null.JSON(s.Extra()) diff --git a/core/models/starts_test.go b/core/models/starts_test.go index 77db343bf..b9e23fb8e 100644 --- a/core/models/starts_test.go +++ b/core/models/starts_test.go @@ -52,8 +52,8 @@ func TestStarts(t *testing.T) { assert.Equal(t, testdata.SingleMessage.ID, start.FlowID()) assert.Equal(t, models.FlowTypeMessaging, start.FlowType()) assert.Equal(t, "", start.Query()) - assert.True(t, start.RestartParticipants()) - assert.True(t, start.IncludeActive()) + assert.False(t, start.ExcludeStartedPreviously()) + assert.False(t, start.ExcludeInAFlow()) assert.Equal(t, []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}, start.ContactIDs()) assert.Equal(t, []models.GroupID{testdata.DoctorsGroup.ID}, start.GroupIDs()) assert.Equal(t, []models.GroupID{testdata.TestersGroup.ID}, start.ExcludeGroupIDs()) @@ -73,8 +73,8 @@ func TestStarts(t *testing.T) { assert.Equal(t, models.StartTypeManual, batch.StartType()) assert.Equal(t, testdata.SingleMessage.ID, batch.FlowID()) assert.Equal(t, []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}, batch.ContactIDs()) - assert.True(t, batch.RestartParticipants()) - assert.True(t, batch.IncludeActive()) + assert.False(t, batch.ExcludeStartedPreviously()) + assert.False(t, batch.ExcludeInAFlow()) assert.Equal(t, testdata.Admin.ID, batch.CreatedByID()) assert.False(t, batch.IsLast()) assert.Equal(t, 3, batch.TotalContacts()) @@ -100,7 +100,7 @@ func TestStartsBuilding(t *testing.T) { uuids.SetGenerator(uuids.NewSeededGenerator(12345)) defer uuids.SetGenerator(uuids.DefaultGenerator) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, testdata.Favorites.ID, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, testdata.Favorites.ID). WithGroupIDs([]models.GroupID{testdata.DoctorsGroup.ID}). WithExcludeGroupIDs([]models.GroupID{testdata.TestersGroup.ID}). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}). diff --git a/core/runner/runner.go b/core/runner/runner.go index ffe4ba4a6..a02cda02e 100644 --- a/core/runner/runner.go +++ b/core/runner/runner.go @@ -33,11 +33,11 @@ var startTypeToOrigin = map[models.StartType]string{ // StartOptions define the various parameters that can be used when starting a flow type StartOptions struct { - // ExcludeWaiting excludes contacts with waiting sessions which would otherwise have to be interrupted - ExcludeWaiting bool + // ExcludeInAFlow excludes contacts with waiting sessions which would otherwise have to be interrupted + ExcludeInAFlow bool - // ExcludeReruns excludes contacts who have been in this flow previously (at least as long as we have runs for) - ExcludeReruns bool + // ExcludeStartedPreviously excludes contacts who have been in this flow previously (at least as long as we have runs for) + ExcludeStartedPreviously bool // Interrupt should be true if we want to interrupt the flows runs for any contact started in this flow Interrupt bool @@ -52,9 +52,9 @@ type StartOptions struct { // NewStartOptions creates and returns the default start options to be used for flow starts func NewStartOptions() *StartOptions { return &StartOptions{ - ExcludeWaiting: false, - ExcludeReruns: false, - Interrupt: true, + ExcludeInAFlow: false, + ExcludeStartedPreviously: false, + Interrupt: true, } } @@ -231,8 +231,8 @@ func StartFlowBatch( // options for our flow start options := NewStartOptions() - options.ExcludeReruns = !batch.RestartParticipants() - options.ExcludeWaiting = !batch.IncludeActive() + options.ExcludeStartedPreviously = batch.ExcludeStartedPreviously() + options.ExcludeInAFlow = batch.ExcludeInAFlow() options.Interrupt = flow.FlowType().Interrupts() options.TriggerBuilder = triggerBuilder options.CommitHook = updateStartID @@ -306,16 +306,16 @@ func FireCampaignEvents( options := NewStartOptions() switch dbEvent.StartMode() { case models.StartModeInterrupt: - options.ExcludeWaiting = false - options.ExcludeReruns = false + options.ExcludeInAFlow = false + options.ExcludeStartedPreviously = false options.Interrupt = true case models.StartModePassive: - options.ExcludeWaiting = false - options.ExcludeReruns = false + options.ExcludeInAFlow = false + options.ExcludeStartedPreviously = false options.Interrupt = false case models.StartModeSkip: - options.ExcludeWaiting = true - options.ExcludeReruns = false + options.ExcludeInAFlow = true + options.ExcludeStartedPreviously = false options.Interrupt = true default: return nil, errors.Errorf("unknown start mode: %s", dbEvent.StartMode()) @@ -417,7 +417,7 @@ func StartFlow( exclude := make(map[models.ContactID]bool, 5) // filter out anybody who has has a flow run in this flow if appropriate - if options.ExcludeReruns { + if options.ExcludeStartedPreviously { // find all participants that have been in this flow started, err := models.FindFlowStartedOverlap(ctx, rt.DB, flow.ID(), contactIDs) if err != nil { @@ -429,7 +429,7 @@ func StartFlow( } // filter out our list of contacts to only include those that should be started - if options.ExcludeWaiting { + if options.ExcludeInAFlow { // find all participants active in any flow active, err := models.FilterByWaitingSession(ctx, rt.DB, contactIDs) if err != nil { @@ -719,7 +719,7 @@ func TriggerIVRFlow(ctx context.Context, rt *runtime.Runtime, orgID models.OrgID tx, _ := rt.DB.BeginTxx(ctx, nil) // create our start - start := models.NewFlowStart(orgID, models.StartTypeTrigger, models.FlowTypeVoice, flowID, true). + start := models.NewFlowStart(orgID, models.StartTypeTrigger, models.FlowTypeVoice, flowID). WithContactIDs(contactIDs) // insert it diff --git a/core/runner/runner_test.go b/core/runner/runner_test.go index e325e9da9..598b50763 100644 --- a/core/runner/runner_test.go +++ b/core/runner/runner_test.go @@ -192,35 +192,36 @@ func TestBatchStart(t *testing.T) { contactIDs := []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID} tcs := []struct { - Flow models.FlowID - Restart bool - ExcludeInAFlow bool - Extra json.RawMessage - Msg string - Count int - TotalCount int + Flow models.FlowID + ExcludeStartedPreviously bool + ExcludeInAFlow bool + Extra json.RawMessage + Msg string + Count int + TotalCount int }{ - {testdata.SingleMessage.ID, true, false, nil, "Hey, how are you?", 2, 2}, - {testdata.SingleMessage.ID, false, false, nil, "Hey, how are you?", 0, 2}, - {testdata.SingleMessage.ID, false, true, nil, "Hey, how are you?", 0, 2}, - {testdata.SingleMessage.ID, true, true, nil, "Hey, how are you?", 2, 4}, + {testdata.SingleMessage.ID, false, false, nil, "Hey, how are you?", 2, 2}, + {testdata.SingleMessage.ID, true, false, nil, "Hey, how are you?", 0, 2}, + {testdata.SingleMessage.ID, true, true, nil, "Hey, how are you?", 0, 2}, + {testdata.SingleMessage.ID, false, true, nil, "Hey, how are you?", 2, 4}, { - Flow: testdata.IncomingExtraFlow.ID, - Restart: true, - ExcludeInAFlow: true, - Extra: json.RawMessage([]byte(`{"name":"Fred", "age":33}`)), - Msg: "Great to meet you Fred. Your age is 33.", - Count: 2, - TotalCount: 2, + Flow: testdata.IncomingExtraFlow.ID, + ExcludeStartedPreviously: false, + ExcludeInAFlow: true, + Extra: json.RawMessage([]byte(`{"name":"Fred", "age":33}`)), + Msg: "Great to meet you Fred. Your age is 33.", + Count: 2, + TotalCount: 2, }, } last := time.Now() for i, tc := range tcs { - start := models.NewFlowStart(models.OrgID(1), models.StartTypeManual, models.FlowTypeMessaging, tc.Flow, tc.Restart). + start := models.NewFlowStart(models.OrgID(1), models.StartTypeManual, models.FlowTypeMessaging, tc.Flow). WithContactIDs(contactIDs). WithExcludeInAFlow(tc.ExcludeInAFlow). + WithExcludeStartedPreviously(tc.ExcludeStartedPreviously). WithExtra(tc.Extra) batch := start.CreateBatch(contactIDs, true, len(contactIDs)) @@ -345,8 +346,8 @@ func TestStartFlowConcurrency(t *testing.T) { } options := &runner.StartOptions{ - ExcludeReruns: false, - ExcludeWaiting: false, + ExcludeStartedPreviously: false, + ExcludeInAFlow: false, TriggerBuilder: func(contact *flows.Contact) flows.Trigger { return triggers.NewBuilder(oa.Env(), flowRef, contact).Manual().Build() }, diff --git a/core/tasks/ivr/cron_test.go b/core/tasks/ivr/cron_test.go index f3fa534c1..2dde012e0 100644 --- a/core/tasks/ivr/cron_test.go +++ b/core/tasks/ivr/cron_test.go @@ -29,7 +29,7 @@ func TestRetries(t *testing.T) { db.MustExec(`UPDATE channels_channel SET channel_type = 'ZZ', config = '{"max_concurrent_events": 1}' WHERE id = $1`, testdata.TwilioChannel.ID) // create a flow start for cathy - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID). WithContactIDs([]models.ContactID{testdata.Cathy.ID}) // call our master starter diff --git a/core/tasks/ivr/worker.go b/core/tasks/ivr/worker.go index 527dc4ef8..03fcc19d1 100644 --- a/core/tasks/ivr/worker.go +++ b/core/tasks/ivr/worker.go @@ -41,7 +41,7 @@ func HandleFlowStartBatch(bg context.Context, rt *runtime.Runtime, batch *models exclude := make(map[models.ContactID]bool, 5) // filter out anybody who has has a flow run in this flow if appropriate - if !batch.RestartParticipants() { + if batch.ExcludeStartedPreviously() { // find all participants that have been in this flow started, err := models.FindFlowStartedOverlap(ctx, rt.DB, batch.FlowID(), batch.ContactIDs()) if err != nil { @@ -53,7 +53,7 @@ func HandleFlowStartBatch(bg context.Context, rt *runtime.Runtime, batch *models } // filter out our list of contacts to only include those that should be started - if !batch.IncludeActive() { + if batch.ExcludeInAFlow() { // find all participants active in other sessions active, err := models.FilterByWaitingSession(ctx, rt.DB, batch.ContactIDs()) if err != nil { diff --git a/core/tasks/ivr/worker_test.go b/core/tasks/ivr/worker_test.go index 512bb361f..2a9406624 100644 --- a/core/tasks/ivr/worker_test.go +++ b/core/tasks/ivr/worker_test.go @@ -36,7 +36,7 @@ func TestIVR(t *testing.T) { db.MustExec(`UPDATE channels_channel SET channel_type = 'ZZ', config = '{"max_concurrent_events": 1}' WHERE id = $1`, testdata.TwilioChannel.ID) // create a flow start for cathy - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID). WithContactIDs([]models.ContactID{testdata.Cathy.ID}) // call our master starter diff --git a/core/tasks/starts/worker_test.go b/core/tasks/starts/worker_test.go index c1176063e..5aca31c8d 100644 --- a/core/tasks/starts/worker_test.go +++ b/core/tasks/starts/worker_test.go @@ -39,146 +39,152 @@ func TestStarts(t *testing.T) { VALUES($1, 'W', now(), now(), FALSE, $2, $3, 1);`, uuids.New(), testdata.George.ID, testdata.Favorites.ID) tcs := []struct { - label string - flowID models.FlowID - groupIDs []models.GroupID - excludeGroupIDs []models.GroupID - contactIDs []models.ContactID - createContact bool - query string - queryResult []models.ContactID - restartParticipants bool - excludeInAFlow bool - queue string - expectedContactCount int - expectedBatchCount int - expectedTotalCount int - expectedStatus models.StartStatus - expectedActiveRuns map[models.FlowID]int + label string + flowID models.FlowID + groupIDs []models.GroupID + excludeGroupIDs []models.GroupID + contactIDs []models.ContactID + createContact bool + query string + queryResult []models.ContactID + excludeInAFlow bool + excludeStartedPreviously bool + queue string + expectedContactCount int + expectedBatchCount int + expectedTotalCount int + expectedStatus models.StartStatus + expectedActiveRuns map[models.FlowID]int }{ { - label: "Empty flow start", - flowID: testdata.Favorites.ID, - excludeInAFlow: true, - queue: queue.BatchQueue, - expectedContactCount: 0, - expectedBatchCount: 0, - expectedTotalCount: 0, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 1, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Empty flow start", + flowID: testdata.Favorites.ID, + excludeInAFlow: true, + excludeStartedPreviously: true, + queue: queue.BatchQueue, + expectedContactCount: 0, + expectedBatchCount: 0, + expectedTotalCount: 0, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 1, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Single group", - flowID: testdata.Favorites.ID, - groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, - excludeInAFlow: true, - queue: queue.BatchQueue, - expectedContactCount: 121, - expectedBatchCount: 2, - expectedTotalCount: 121, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Single group", + flowID: testdata.Favorites.ID, + groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, + excludeInAFlow: true, + excludeStartedPreviously: true, + queue: queue.BatchQueue, + expectedContactCount: 121, + expectedBatchCount: 2, + expectedTotalCount: 121, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Group and Contact (but all already active)", - flowID: testdata.Favorites.ID, - groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, - contactIDs: []models.ContactID{testdata.Cathy.ID}, - excludeInAFlow: true, - queue: queue.BatchQueue, - expectedContactCount: 121, - expectedBatchCount: 2, - expectedTotalCount: 0, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Group and Contact (but all already active)", + flowID: testdata.Favorites.ID, + groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, + contactIDs: []models.ContactID{testdata.Cathy.ID}, + excludeInAFlow: true, + excludeStartedPreviously: true, + queue: queue.BatchQueue, + expectedContactCount: 121, + expectedBatchCount: 2, + expectedTotalCount: 0, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Contact restart", - flowID: testdata.Favorites.ID, - contactIDs: []models.ContactID{testdata.Cathy.ID}, - restartParticipants: true, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Contact restart", + flowID: testdata.Favorites.ID, + contactIDs: []models.ContactID{testdata.Cathy.ID}, + excludeInAFlow: false, + excludeStartedPreviously: false, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 122, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Previous group and one new contact", - flowID: testdata.Favorites.ID, - groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, - contactIDs: []models.ContactID{testdata.Bob.ID}, - queue: queue.BatchQueue, - expectedContactCount: 122, - expectedBatchCount: 2, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Previous group and one new contact", + flowID: testdata.Favorites.ID, + groupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeStartedPreviously: true, + queue: queue.BatchQueue, + expectedContactCount: 122, + expectedBatchCount: 2, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Single contact, no restart", - flowID: testdata.Favorites.ID, - contactIDs: []models.ContactID{testdata.Bob.ID}, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 0, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Single contact, no restart", + flowID: testdata.Favorites.ID, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeStartedPreviously: true, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 0, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Single contact, include active, but no restart", - flowID: testdata.Favorites.ID, - contactIDs: []models.ContactID{testdata.Bob.ID}, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 0, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Single contact, include active, but no restart", + flowID: testdata.Favorites.ID, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeInAFlow: false, + excludeStartedPreviously: true, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 0, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Single contact, include active and restart", - flowID: testdata.Favorites.ID, - contactIDs: []models.ContactID{testdata.Bob.ID}, - restartParticipants: true, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Single contact, include active and restart", + flowID: testdata.Favorites.ID, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeInAFlow: false, + excludeStartedPreviously: false, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Query start", - flowID: testdata.Favorites.ID, - query: "bob", - queryResult: []models.ContactID{testdata.Bob.ID}, - restartParticipants: true, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Query start", + flowID: testdata.Favorites.ID, + query: "bob", + queryResult: []models.ContactID{testdata.Bob.ID}, + excludeInAFlow: false, + excludeStartedPreviously: false, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Query start with invalid query", - flowID: testdata.Favorites.ID, - query: "xyz = 45", - restartParticipants: true, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 0, - expectedBatchCount: 0, - expectedTotalCount: 0, - expectedStatus: models.StartStatusFailed, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Query start with invalid query", + flowID: testdata.Favorites.ID, + query: "xyz = 45", + excludeInAFlow: false, + excludeStartedPreviously: false, + queue: queue.HandlerQueue, + expectedContactCount: 0, + expectedBatchCount: 0, + expectedTotalCount: 0, + expectedStatus: models.StartStatusFailed, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { label: "New Contact", @@ -192,42 +198,44 @@ func TestStarts(t *testing.T) { expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 124, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, { - label: "Other messaging flow", - flowID: testdata.PickANumber.ID, - contactIDs: []models.ContactID{testdata.Bob.ID}, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 1, testdata.SingleMessage.ID: 0}, + label: "Other messaging flow", + flowID: testdata.PickANumber.ID, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeInAFlow: false, + excludeStartedPreviously: true, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 1, testdata.SingleMessage.ID: 0}, }, { - label: "Background flow", - flowID: testdata.SingleMessage.ID, - contactIDs: []models.ContactID{testdata.Bob.ID}, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 1, testdata.SingleMessage.ID: 0}, + label: "Background flow", + flowID: testdata.SingleMessage.ID, + contactIDs: []models.ContactID{testdata.Bob.ID}, + excludeInAFlow: false, + excludeStartedPreviously: true, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 123, testdata.PickANumber.ID: 1, testdata.SingleMessage.ID: 0}, }, { - label: "Exclude group", - flowID: testdata.Favorites.ID, - contactIDs: []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}, - excludeGroupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, // should exclude Cathy - restartParticipants: true, - excludeInAFlow: false, - queue: queue.HandlerQueue, - expectedContactCount: 1, - expectedBatchCount: 1, - expectedTotalCount: 1, - expectedStatus: models.StartStatusComplete, - expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 124, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, + label: "Exclude group", + flowID: testdata.Favorites.ID, + contactIDs: []models.ContactID{testdata.Cathy.ID, testdata.Bob.ID}, + excludeGroupIDs: []models.GroupID{testdata.DoctorsGroup.ID}, // should exclude Cathy + excludeInAFlow: false, + excludeStartedPreviously: false, + queue: queue.HandlerQueue, + expectedContactCount: 1, + expectedBatchCount: 1, + expectedTotalCount: 1, + expectedStatus: models.StartStatusComplete, + expectedActiveRuns: map[models.FlowID]int{testdata.Favorites.ID: 124, testdata.PickANumber.ID: 0, testdata.SingleMessage.ID: 0}, }, } @@ -237,12 +245,13 @@ func TestStarts(t *testing.T) { } // handle our start task - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, tc.flowID, tc.restartParticipants). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeManual, models.FlowTypeMessaging, tc.flowID). WithGroupIDs(tc.groupIDs). WithExcludeGroupIDs(tc.excludeGroupIDs). WithContactIDs(tc.contactIDs). WithQuery(tc.query). WithExcludeInAFlow(tc.excludeInAFlow). + WithExcludeStartedPreviously(tc.excludeStartedPreviously). WithCreateContact(tc.createContact) err := models.InsertFlowStarts(ctx, db, []*models.FlowStart{start}) diff --git a/web/ivr/ivr_test.go b/web/ivr/ivr_test.go index f8b11a1e6..8827f8f5a 100644 --- a/web/ivr/ivr_test.go +++ b/web/ivr/ivr_test.go @@ -94,7 +94,7 @@ func TestTwilioIVR(t *testing.T) { }, "results": {} }`) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.Bob.ID, testdata.George.ID}). WithParentSummary(parentSummary) @@ -402,7 +402,7 @@ func TestVonageIVR(t *testing.T) { // create a flow start for cathy and george extra := json.RawMessage(`{"ref_id":"123"}`) - start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID, true). + start := models.NewFlowStart(testdata.Org1.ID, models.StartTypeTrigger, models.FlowTypeVoice, testdata.IVRFlow.ID). WithContactIDs([]models.ContactID{testdata.Cathy.ID, testdata.George.ID}). WithExtra(extra) models.InsertFlowStarts(ctx, db, []*models.FlowStart{start}) From 995e729ec2c2c09591c588c4cedad272b202396b Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 14 Jun 2022 13:49:45 -0500 Subject: [PATCH 78/97] Update to latest goflow and simplify code for exiting session runs --- core/models/sessions.go | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/models/sessions.go b/core/models/sessions.go index e85a249b3..e32e39c20 100644 --- a/core/models/sessions.go +++ b/core/models/sessions.go @@ -883,7 +883,7 @@ RETURNING contact_id` const sqlExitSessionRuns = ` UPDATE flows_flowrun SET exited_on = $2, status = $3, modified_on = NOW() - WHERE id = ANY (SELECT id FROM flows_flowrun WHERE session_id = ANY($1) AND status IN ('A', 'W'))` + WHERE session_id = ANY($1) AND status IN ('A', 'W')` const sqlExitSessionContacts = ` UPDATE contacts_contact diff --git a/go.mod b/go.mod index 9410c8b53..1c4607432 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,8 @@ require ( github.com/jmoiron/sqlx v1.3.4 github.com/lib/pq v1.10.4 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.21.0 - github.com/nyaruka/goflow v0.160.0 + github.com/nyaruka/gocommon v1.22.0 + github.com/nyaruka/goflow v0.161.1 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 diff --git a/go.sum b/go.sum index 57f1df094..158db9c11 100644 --- a/go.sum +++ b/go.sum @@ -119,10 +119,10 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.21.0 h1:nu7M2cdSPrkqUPdGsEeWX047+neo69H4x+4g/OKpoLM= -github.com/nyaruka/gocommon v1.21.0/go.mod h1:cv9r6amof1gSktfPZROClZhLFzdSIH/N9KbW6Nny4g8= -github.com/nyaruka/goflow v0.160.0 h1:eBaokSbxnwr39SLd1Yqd/zALusdyviVxCoceyRZQGnY= -github.com/nyaruka/goflow v0.160.0/go.mod h1:iLYZOLLggFRR8e5dVgFEmB95W4FPrIKbz3w3C6Ia/0g= +github.com/nyaruka/gocommon v1.22.0 h1:ptlZftc7ZKDF81NRUW2H4NOlIQO144m3wvkTO1d+yms= +github.com/nyaruka/gocommon v1.22.0/go.mod h1:cv9r6amof1gSktfPZROClZhLFzdSIH/N9KbW6Nny4g8= +github.com/nyaruka/goflow v0.161.1 h1:Bv7mVfoMUEHlWSxH5UFm79NabDRAmObaeLF36DnKH2w= +github.com/nyaruka/goflow v0.161.1/go.mod h1:EzoWswRVBoCtyYbbA0gAyhBirw5wO2Wp1QdnSt6bGqk= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= From f1f00fd02a8ec887a86b80c9195a494193b4ee9e Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Tue, 14 Jun 2022 14:22:09 -0500 Subject: [PATCH 79/97] Update CHANGELOG.md for v7.3.17 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f72de7805..c0b5566db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +v7.3.17 +---------- + * Update to latest goflow and simplify code for exiting session runs + * Add support for excluding contacts already in a flow in start_session actions + * Don't blow up in msg_created handler if flow has been deleted + * Use analytics package from gocommon instead of librato directly + v7.3.16 ---------- * Update to latest goflow From 5acf569e8047b9e736ef4b320a7d071fcbb15606 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 15 Jun 2022 12:45:06 -0500 Subject: [PATCH 80/97] Update to latest goflow --- go.mod | 27 +++++++++++++------------- go.sum | 60 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/go.mod b/go.mod index 1c4607432..4f9800930 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.18 require ( github.com/Masterminds/semver v1.5.0 github.com/apex/log v1.1.4 - github.com/aws/aws-sdk-go v1.43.21 + github.com/aws/aws-sdk-go v1.44.34 github.com/buger/jsonparser v1.1.1 github.com/edganiukov/fcm v0.4.0 github.com/go-chi/chi v4.1.2+incompatible @@ -13,11 +13,11 @@ require ( github.com/golang/protobuf v1.5.2 github.com/gomodule/redigo v1.8.8 github.com/gorilla/schema v1.1.0 - github.com/jmoiron/sqlx v1.3.4 - github.com/lib/pq v1.10.4 + github.com/jmoiron/sqlx v1.3.5 + github.com/lib/pq v1.10.6 github.com/nyaruka/ezconf v0.2.1 - github.com/nyaruka/gocommon v1.22.0 - github.com/nyaruka/goflow v0.161.1 + github.com/nyaruka/gocommon v1.22.2 + github.com/nyaruka/goflow v0.161.2 github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d github.com/nyaruka/null v1.2.0 github.com/nyaruka/redisx v0.2.1 @@ -27,12 +27,13 @@ require ( github.com/prometheus/client_model v0.2.0 github.com/prometheus/common v0.9.1 github.com/shopspring/decimal v1.3.1 - github.com/sirupsen/logrus v1.5.0 - github.com/stretchr/testify v1.7.1 + github.com/sirupsen/logrus v1.8.1 + github.com/stretchr/testify v1.7.2 gopkg.in/go-playground/validator.v9 v9.31.0 ) require ( + github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29 // indirect github.com/antlr/antlr4 v0.0.0-20200701161529-3d9351f61e0f // indirect github.com/blevesearch/segment v0.9.0 // indirect github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect @@ -40,13 +41,11 @@ require ( github.com/fatih/structs v1.0.0 // indirect github.com/gabriel-vasile/mimetype v1.4.0 // indirect github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d // indirect - github.com/go-mail/mail v2.3.1+incompatible // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect - github.com/gofrs/uuid v3.3.0+incompatible // indirect + github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leodido/go-urn v1.2.1 // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -57,11 +56,11 @@ require ( github.com/nyaruka/phonenumbers v1.0.75 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect - golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 // indirect + golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d // indirect + golang.org/x/net v0.0.0-20220614195744-fb05da6f9022 // indirect + golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098 // indirect golang.org/x/text v0.3.7 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 158db9c11..17925ce27 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29 h1:Bw1PtWrRByxjLQLawK/3lyeAbfIRzuDUnsBsh+0tuxk= +github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29/go.mod h1:RS+Gaowa0M+gCuiFAiRMGBCMqxLrNA7TESTU/Wbblm8= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -12,8 +14,8 @@ github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDw github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.43.21 h1:E4S2eX3d2gKJyI/ISrcIrSwXwqjIvCK85gtBMt4sAPE= -github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.34 h1:+ZtWIbtSGLNB99P8eBrxXfJZgiIouzUbpkf/MNxq2yQ= +github.com/aws/aws-sdk-go v1.44.34/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -43,17 +45,15 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-mail/mail v2.3.1+incompatible h1:UzNOn0k5lpfVtO31cK3hn6I4VEVGhe3lX8AJBAxXExM= -github.com/go-mail/mail v2.3.1+incompatible/go.mod h1:VPWjmmNyRsWXQZHVHT3g0YbIINUkSmuKOiLIDkWbL6M= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= +github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= @@ -66,7 +66,7 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= @@ -76,14 +76,13 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmoiron/sqlx v1.3.4 h1:wv+0IJZfL5z0uZoUjlpKgHkgaFSYD+r9CfrXjEXsO7w= -github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= +github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= @@ -97,8 +96,8 @@ github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= -github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= @@ -119,10 +118,10 @@ github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nyaruka/ezconf v0.2.1 h1:TDXWoqjqYya1uhou1mAJZg7rgFYL98EB0Tb3+BWtUh0= github.com/nyaruka/ezconf v0.2.1/go.mod h1:ey182kYkw2MIi4XiWe1FR/mzI33WCmTWuceDYYxgnQw= -github.com/nyaruka/gocommon v1.22.0 h1:ptlZftc7ZKDF81NRUW2H4NOlIQO144m3wvkTO1d+yms= -github.com/nyaruka/gocommon v1.22.0/go.mod h1:cv9r6amof1gSktfPZROClZhLFzdSIH/N9KbW6Nny4g8= -github.com/nyaruka/goflow v0.161.1 h1:Bv7mVfoMUEHlWSxH5UFm79NabDRAmObaeLF36DnKH2w= -github.com/nyaruka/goflow v0.161.1/go.mod h1:EzoWswRVBoCtyYbbA0gAyhBirw5wO2Wp1QdnSt6bGqk= +github.com/nyaruka/gocommon v1.22.2 h1:iEusd0CijvYvhW+bEZ6LWYQuaXS4Oac5WH9W8iK6DEw= +github.com/nyaruka/gocommon v1.22.2/go.mod h1:g6/d9drZXDUrtRSPe2Kf8lTUS+baHt/0G0dwHq3qeIU= +github.com/nyaruka/goflow v0.161.2 h1:56HkdueEqyxisxENHbPdux4QXtTw43MTcIL0ZNAhXtY= +github.com/nyaruka/goflow v0.161.2/go.mod h1:XUPFWNEgimo+hsOOonH8bN6I8V5LE2cxSYgSC0mdxas= github.com/nyaruka/librato v1.0.0 h1:Vznj9WCeC1yZXbBYyYp40KnbmXLbEkjKmHesV/v2SR0= github.com/nyaruka/librato v1.0.0/go.mod h1:pkRNLFhFurOz0QqBz6/DuTFhHHxAubWxs4Jx+J7yUgg= github.com/nyaruka/logrus_sentry v0.8.2-0.20190129182604-c2962b80ba7d h1:hyp9u36KIwbTCo2JAJ+TuJcJBc+UZzEig7RI/S5Dvkc= @@ -164,8 +163,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q= -github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= @@ -176,8 +175,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= @@ -185,16 +185,17 @@ github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKw golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E= -golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d h1:vtUKgx8dahOomfFzLREU8nSv25YHnTgLBn4rDnWZdU0= +golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220614195744-fb05da6f9022 h1:0qjDla5xICC2suMtyRH/QqX3B1btXTfNsIt/i4LFgO0= +golang.org/x/net v0.0.0-20220614195744-fb05da6f9022/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -205,12 +206,13 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8 h1:OH54vjqzRWmbJ62fjuhxy7AxFFgoHN0/DPc/UrL8cAs= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098 h1:PgOr27OhUx2IRqGJ2RxAWI4dJQ7bi9cSrB82uzFzfUA= +golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -219,7 +221,6 @@ golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= @@ -235,6 +236,7 @@ gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXa gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= +gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -242,5 +244,5 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From f37d645d5bad0c6e0e37b105aee16fe06ba310ea Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Wed, 15 Jun 2022 13:04:34 -0500 Subject: [PATCH 81/97] Fix imports --- core/msgio/send.go | 7 +- go.mod | 7 +- go.sum | 425 ++++++++++++++++++++++++++++++++++++++++----- utils/cron/cron.go | 3 +- 4 files changed, 390 insertions(+), 52 deletions(-) diff --git a/core/msgio/send.go b/core/msgio/send.go index c118048e9..737d596be 100644 --- a/core/msgio/send.go +++ b/core/msgio/send.go @@ -6,8 +6,7 @@ import ( "github.com/edganiukov/fcm" "github.com/nyaruka/mailroom/core/models" "github.com/nyaruka/mailroom/runtime" - - "github.com/apex/log" + "github.com/sirupsen/logrus" ) // SendMessages tries to send the given messages via Courier or Android syncing @@ -54,7 +53,7 @@ func SendMessages(ctx context.Context, rt *runtime.Runtime, tx models.Queryer, f // not being able to queue a message isn't the end of the world, log but don't return an error if err != nil { - log.WithField("messages", contactMsgs).WithField("contact", contactID).WithError(err).Error("error queuing messages") + logrus.WithField("messages", contactMsgs).WithField("contact", contactID).WithError(err).Error("error queuing messages") // in the case of errors we do want to change the messages back to pending however so they // get queued later. (for the common case messages are only inserted and queued, without a status update) @@ -76,7 +75,7 @@ func SendMessages(ctx context.Context, rt *runtime.Runtime, tx models.Queryer, f if len(pending) > 0 { err := models.MarkMessagesPending(ctx, tx, pending) if err != nil { - log.WithError(err).Error("error marking message as pending") + logrus.WithError(err).Error("error marking message as pending") } } } diff --git a/go.mod b/go.mod index 4f9800930..8f3c3f6b2 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.18 require ( github.com/Masterminds/semver v1.5.0 - github.com/apex/log v1.1.4 github.com/aws/aws-sdk-go v1.44.34 github.com/buger/jsonparser v1.1.1 github.com/edganiukov/fcm v0.4.0 @@ -12,7 +11,7 @@ require ( github.com/golang-jwt/jwt v3.2.2+incompatible github.com/golang/protobuf v1.5.2 github.com/gomodule/redigo v1.8.8 - github.com/gorilla/schema v1.1.0 + github.com/gorilla/schema v1.2.0 github.com/jmoiron/sqlx v1.3.5 github.com/lib/pq v1.10.6 github.com/nyaruka/ezconf v0.2.1 @@ -25,7 +24,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/common v0.9.1 + github.com/prometheus/common v0.34.0 github.com/shopspring/decimal v1.3.1 github.com/sirupsen/logrus v1.8.1 github.com/stretchr/testify v1.7.2 @@ -34,7 +33,7 @@ require ( require ( github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29 // indirect - github.com/antlr/antlr4 v0.0.0-20200701161529-3d9351f61e0f // indirect + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 // indirect github.com/blevesearch/segment v0.9.0 // indirect github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/go.sum b/go.sum index 17925ce27..7726b976d 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,38 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Shopify/gomail v0.0.0-20220314142144-6897a5a5ba29 h1:Bw1PtWrRByxjLQLawK/3lyeAbfIRzuDUnsBsh+0tuxk= @@ -6,45 +41,57 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/antlr/antlr4 v0.0.0-20200701161529-3d9351f61e0f h1:lUOL4gjIXsvK9kBlHsWJNGX2dEzW0cMlVNmqr2ad5DM= -github.com/antlr/antlr4 v0.0.0-20200701161529-3d9351f61e0f/go.mod h1:T7PbCXFs94rrTttyxjbyT5+/1V8T2TYDejxUfHJjw1Y= -github.com/apex/log v1.1.4 h1:3Zk+boorIQAAGBrHn0JUtAau4ihMamT4WdnfdnXM1zQ= -github.com/apex/log v1.1.4/go.mod h1:AlpoD9aScyQfJDVHmLMEcx4oU6LqzkWp4Mg9GdAcEvQ= -github.com/apex/logs v0.0.4/go.mod h1:XzxuLZ5myVHDy9SAmYpamKKRNApGj54PfYLcFrXqDwo= -github.com/aphistic/golf v0.0.0-20180712155816-02c07f170c5a/go.mod h1:3NqKYiepwy8kCu4PNA+aP7WUV72eXWJeP9/r3/K9aLE= -github.com/aphistic/sweet v0.2.0/go.mod h1:fWDlIh/isSE9n6EPsRmC0det+whmX6dJid3stzu0Xys= -github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/aws/aws-sdk-go v1.44.34 h1:+ZtWIbtSGLNB99P8eBrxXfJZgiIouzUbpkf/MNxq2yQ= github.com/aws/aws-sdk-go v1.44.34/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt22Ac= github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA= github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/edganiukov/fcm v0.4.0 h1:PAZamwbiW2AegM5hGqYNv+djE1xxLyH7zMN6MwWpvoQ= github.com/edganiukov/fcm v0.4.0/go.mod h1:3gL1BLvC3w05anUsF2Wbd1Sz+ZdCu8qsNCa1LyRfwFo= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/structs v1.0.0 h1:BrX964Rv5uQ3wwS+KRUAJCBBw5PQmgJfJ6v4yly5QwU= github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro= github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8= github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d h1:CIp8WnfXz70wJVQ0ytr3dswFYGoJbAxWgNvaLpiu3sY= github.com/getsentry/raven-go v0.1.2-0.20190125112653-238ebd86338d/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= @@ -57,21 +104,66 @@ github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= -github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= +github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -80,10 +172,18 @@ github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -100,18 +200,17 @@ github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= github.com/naoina/toml v0.1.1 h1:PT/lllxVVN0gzzSqSlHEmP8MJB4MY2U7STGxiouV4X8= @@ -134,8 +233,6 @@ github.com/nyaruka/redisx v0.2.1 h1:BavpQRCsK5xV2uxPdJJ26yVmjSo+q6bdjWqeNNf0s5w= github.com/nyaruka/redisx v0.2.1/go.mod h1:cdbAm4y/+oFWu7qFzH2ERPeqRXJC2CtgRhwcBacM4Oc= github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E= github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -146,28 +243,35 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= +github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= -github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -178,49 +282,273 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= -github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= -github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= -github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d h1:vtUKgx8dahOomfFzLREU8nSv25YHnTgLBn4rDnWZdU0= golang.org/x/exp v0.0.0-20220613132600-b0d781184e0d/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220614195744-fb05da6f9022 h1:0qjDla5xICC2suMtyRH/QqX3B1btXTfNsIt/i4LFgO0= golang.org/x/net v0.0.0-20220614195744-fb05da6f9022/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098 h1:PgOr27OhUx2IRqGJ2RxAWI4dJQ7bi9cSrB82uzFzfUA= golang.org/x/sys v0.0.0-20220614162138-6c1b26c55098/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= @@ -229,20 +557,33 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk= gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/utils/cron/cron.go b/utils/cron/cron.go index 16960b28e..efe365589 100644 --- a/utils/cron/cron.go +++ b/utils/cron/cron.go @@ -6,7 +6,6 @@ import ( "sync" "time" - "github.com/apex/log" "github.com/nyaruka/mailroom/runtime" "github.com/nyaruka/redisx" "github.com/sirupsen/logrus" @@ -96,7 +95,7 @@ func Start(rt *runtime.Runtime, wg *sync.WaitGroup, name string, interval time.D // fireCron is just a wrapper around the cron function we will call for the purposes of // catching and logging panics func fireCron(rt *runtime.Runtime, cronFunc Function, lockName string, lockValue string) error { - log := log.WithField("lockValue", lockValue).WithField("func", cronFunc) + log := logrus.WithField("lockValue", lockValue).WithField("func", cronFunc) ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) defer cancel() From a009c4e1413d350f030e75a93f49b617a1248991 Mon Sep 17 00:00:00 2001 From: Rowan Seymour Date: Thu, 16 Jun 2022 12:09:38 -0500 Subject: [PATCH 82/97] Update test database --- mailroom_test.dump | Bin 1916518 -> 1922125 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mailroom_test.dump b/mailroom_test.dump index ba8074d4e97be54c49ba8e8702c1f168a0e26fa7..4080859fc9cbcdec875c5ea1fe7110d95d8ab75a 100644 GIT binary patch delta 113488 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 C#~btj delta 109556 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