From d7d9c6005c3670eaba10ab715a46bf62ae238d25 Mon Sep 17 00:00:00 2001 From: Paul D'Ambra Date: Wed, 6 Dec 2023 15:13:54 +0000 Subject: [PATCH 1/4] feat: implement the input components (#19121) * feat: implement the input components * Split up the test cases for inputs * better selects| * Update ee/frontend/mobile-replay/mobile.types.ts * Clarify in schema * ignore invalid input type * Update query snapshots * check buttons * Update query snapshots * labels * fix * fix button text * fix * fix * fix --------- Co-authored-by: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .../__snapshots__/transform.test.ts.snap | 1656 +++++++++++++++++ ee/frontend/mobile-replay/mobile.types.ts | 31 +- .../schema/mobile/rr-mobile-schema.json | 56 +- ee/frontend/mobile-replay/transform.test.ts | 303 +++ ee/frontend/mobile-replay/transformers.ts | 179 +- 5 files changed, 2193 insertions(+), 32 deletions(-) diff --git a/ee/frontend/mobile-replay/__snapshots__/transform.test.ts.snap b/ee/frontend/mobile-replay/__snapshots__/transform.test.ts.snap index 8e19e415a5dbe..93c791237eed1 100644 --- a/ee/frontend/mobile-replay/__snapshots__/transform.test.ts.snap +++ b/ee/frontend/mobile-replay/__snapshots__/transform.test.ts.snap @@ -540,6 +540,1662 @@ exports[`replay/transform transform child wireframes are processed 1`] = ` ] `; +exports[`replay/transform transform inputs buttons with nested elements 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "button", + }, + "childNodes": [], + "id": 12359, + "tagName": "button", + "type": 2, + }, + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "button", + }, + "childNodes": [ + { + "id": 113, + "textContent": "click me", + "type": 3, + }, + ], + "id": 12361, + "tagName": "button", + "type": 2, + }, + ], + "id": 112, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - $inputType - hello 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 145, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - button - click me 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "button", + }, + "childNodes": [ + { + "id": 139, + "textContent": "click me", + "type": 3, + }, + ], + "id": 12358, + "tagName": "button", + "type": 2, + }, + ], + "id": 138, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - checkbox - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [ + { + "attributes": { + "checked": true, + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "checkbox", + }, + "childNodes": [], + "id": 12357, + "tagName": "input", + "type": 2, + }, + { + "id": 130, + "textContent": "first", + "type": 3, + }, + ], + "id": 129, + "tagName": "label", + "type": 2, + }, + ], + "id": 128, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - checkbox - $value 2`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "checkbox", + }, + "childNodes": [], + "id": 12357, + "tagName": "input", + "type": 2, + }, + { + "id": 133, + "textContent": "second", + "type": 3, + }, + ], + "id": 132, + "tagName": "label", + "type": 2, + }, + ], + "id": 131, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - checkbox - $value 3`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [ + { + "attributes": { + "checked": true, + "disabled": true, + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "checkbox", + }, + "childNodes": [], + "id": 12357, + "tagName": "input", + "type": 2, + }, + { + "id": 136, + "textContent": "third", + "type": 3, + }, + ], + "id": 135, + "tagName": "label", + "type": 2, + }, + ], + "id": 134, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - checkbox - $value 4`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "checked": true, + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "checkbox", + }, + "childNodes": [], + "id": 12357, + "tagName": "input", + "type": 2, + }, + ], + "id": 137, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - email - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "email", + "value": "", + }, + "childNodes": [], + "id": 12349, + "tagName": "input", + "type": 2, + }, + ], + "id": 121, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - number - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "number", + "value": "", + }, + "childNodes": [], + "id": 12350, + "tagName": "input", + "type": 2, + }, + ], + "id": 122, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - password - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "password", + "value": "", + }, + "childNodes": [], + "id": 12348, + "tagName": "input", + "type": 2, + }, + ], + "id": 120, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - search - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "search", + "value": "", + }, + "childNodes": [], + "id": 12351, + "tagName": "input", + "type": 2, + }, + ], + "id": 123, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - select - hello 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "select", + "value": "hello", + }, + "childNodes": [ + { + "attributes": { + "selected": true, + "value": "hello", + }, + "childNodes": [], + "id": 143, + "tagName": "option", + "type": 2, + }, + { + "attributes": { + "value": "world", + }, + "childNodes": [], + "id": 144, + "tagName": "option", + "type": 2, + }, + ], + "id": 12365, + "tagName": "select", + "type": 2, + }, + ], + "id": 142, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - tel - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "disabled": true, + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "tel", + "value": "", + }, + "childNodes": [], + "id": 12352, + "tagName": "input", + "type": 2, + }, + ], + "id": 124, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - text - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "text", + "value": "", + }, + "childNodes": [], + "id": 12347, + "tagName": "input", + "type": 2, + }, + ], + "id": 119, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - text - hello 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "text", + "value": "hello", + }, + "childNodes": [], + "id": 12346, + "tagName": "input", + "type": 2, + }, + ], + "id": 118, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - textArea - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "textArea", + "value": "", + }, + "childNodes": [], + "id": 12364, + "tagName": "input", + "type": 2, + }, + ], + "id": 141, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - textArea - hello 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "textArea", + "value": "hello", + }, + "childNodes": [], + "id": 12363, + "tagName": "input", + "type": 2, + }, + ], + "id": 140, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs input - url - https://example.io 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "url", + "value": "https://example.io", + }, + "childNodes": [], + "id": 12352, + "tagName": "input", + "type": 2, + }, + ], + "id": 125, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs radio group - $inputType - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 127, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs radio_group - $inputType - $value 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [], + "id": 123123, + "tagName": "div", + "type": 2, + }, + ], + "id": 126, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs radio_group 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [], + "id": 54321, + "tagName": "div", + "type": 2, + }, + ], + "id": 117, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + +exports[`replay/transform transform inputs wrapping with labels 1`] = ` +{ + "data": { + "initialOffset": { + "left": 0, + "top": 0, + }, + "node": { + "childNodes": [ + { + "id": 2, + "name": "html", + "publicId": "", + "systemId": "", + "type": 1, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [], + "id": 4, + "tagName": "head", + "type": 2, + }, + { + "attributes": { + "style": "height: 100vh; width: 100vw;", + }, + "childNodes": [ + { + "attributes": {}, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + }, + "childNodes": [ + { + "attributes": { + "style": "width: 100px;height: 30px;position: fixed;left: 0px;top: 0px;", + "type": "checkbox", + }, + "childNodes": [], + "id": 12359, + "tagName": "input", + "type": 2, + }, + { + "id": 116, + "textContent": "i will wrap the checkbox", + "type": 3, + }, + ], + "id": 115, + "tagName": "label", + "type": 2, + }, + ], + "id": 114, + "tagName": "div", + "type": 2, + }, + ], + "id": 5, + "tagName": "body", + "type": 2, + }, + ], + "id": 3, + "tagName": "html", + "type": 2, + }, + ], + "id": 1, + "type": 0, + }, + }, + "timestamp": 1, + "type": 2, +} +`; + exports[`replay/transform transform omitting x and y is equivalent to setting them to 0 1`] = ` [ { diff --git a/ee/frontend/mobile-replay/mobile.types.ts b/ee/frontend/mobile-replay/mobile.types.ts index a5b67505473c2..e5840f624db12 100644 --- a/ee/frontend/mobile-replay/mobile.types.ts +++ b/ee/frontend/mobile-replay/mobile.types.ts @@ -64,7 +64,7 @@ export type serializedNodeWithId = serializedNode & { id: number } // end copied section -export type MobileNodeType = 'text' | 'image' | 'rectangle' | 'div' +export type MobileNodeType = 'text' | 'image' | 'rectangle' | 'input' | 'div' | 'radio_group' export type MobileStyles = { /** @@ -124,21 +124,30 @@ type wireframeBase = { export type wireframeInputBase = wireframeBase & { type: 'input' + /** + * @description for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element. + */ disabled: boolean } export type wireframeCheckBox = wireframeInputBase & { inputType: 'checkbox' + /** + * @description for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element. + */ checked: boolean label?: string } export type wireframeRadioGroup = wireframeBase & { - groupName: string + type: 'radio_group' } export type wireframeRadio = wireframeInputBase & { inputType: 'radio' + /** + * @description for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element. + */ checked: boolean label?: string } @@ -155,7 +164,7 @@ export type wireframeSelect = wireframeInputBase & { } export type wireframeTextArea = wireframeInputBase & { - inputType: 'textarea' + inputType: 'text_area' value?: string } @@ -167,6 +176,15 @@ export type wireframeButton = wireframeInputBase & { value?: string } +// these are grouped as a type so that we can easily use them as function parameters +export type wireframeInputComponent = + | wireframeCheckBox + | wireframeRadio + | wireframeInput + | wireframeSelect + | wireframeTextArea + | wireframeButton + export type wireframeText = wireframeBase & { type: 'text' text: string @@ -196,13 +214,8 @@ export type wireframe = | wireframeImage | wireframeRectangle | wireframeDiv - | wireframeCheckBox + | wireframeInputComponent | wireframeRadioGroup - | wireframeRadio - | wireframeInput - | wireframeSelect - | wireframeTextArea - | wireframeButton // the rrweb full snapshot event type, but it contains wireframes not html export type fullSnapshotEvent = { diff --git a/ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json b/ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json index 6d7bfa003fdf2..83ffa3f60a6e1 100644 --- a/ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json +++ b/ee/frontend/mobile-replay/schema/mobile/rr-mobile-schema.json @@ -139,7 +139,7 @@ "type": "number" }, "MobileNodeType": { - "enum": ["text", "image", "rectangle", "div"], + "enum": ["text", "image", "rectangle", "input", "div", "radio_group"], "type": "string" }, "MobileStyles": { @@ -201,25 +201,10 @@ "$ref": "#/definitions/wireframeDiv" }, { - "$ref": "#/definitions/wireframeCheckBox" + "$ref": "#/definitions/wireframeInputComponent" }, { "$ref": "#/definitions/wireframeRadioGroup" - }, - { - "$ref": "#/definitions/wireframeRadio" - }, - { - "$ref": "#/definitions/wireframeInput" - }, - { - "$ref": "#/definitions/wireframeSelect" - }, - { - "$ref": "#/definitions/wireframeTextArea" - }, - { - "$ref": "#/definitions/wireframeButton" } ] }, @@ -233,6 +218,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -273,6 +259,7 @@ "additionalProperties": false, "properties": { "checked": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "childWireframes": { @@ -282,6 +269,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -401,6 +389,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -436,10 +425,33 @@ "required": ["disabled", "height", "id", "inputType", "type", "width", "x", "y"], "type": "object" }, + "wireframeInputComponent": { + "anyOf": [ + { + "$ref": "#/definitions/wireframeCheckBox" + }, + { + "$ref": "#/definitions/wireframeRadio" + }, + { + "$ref": "#/definitions/wireframeInput" + }, + { + "$ref": "#/definitions/wireframeSelect" + }, + { + "$ref": "#/definitions/wireframeTextArea" + }, + { + "$ref": "#/definitions/wireframeButton" + } + ] + }, "wireframeRadio": { "additionalProperties": false, "properties": { "checked": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "childWireframes": { @@ -449,6 +461,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -493,9 +506,6 @@ }, "type": "array" }, - "groupName": { - "type": "string" - }, "height": { "type": "number" }, @@ -519,7 +529,7 @@ "type": "number" } }, - "required": ["groupName", "height", "id", "type", "width", "x", "y"], + "required": ["height", "id", "type", "width", "x", "y"], "type": "object" }, "wireframeRectangle": { @@ -567,6 +577,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -656,6 +667,7 @@ "type": "array" }, "disabled": { + "description": "for several attributes we technically only care about true or absent as values. They are represented as bare attributes in HTML . When true that attribute is added to the HTML element, when absent that attribute is not added to the HTML element. When false or absent they are not added to the element.", "type": "boolean" }, "height": { @@ -665,7 +677,7 @@ "type": "number" }, "inputType": { - "const": "textarea", + "const": "text_area", "type": "string" }, "style": { diff --git a/ee/frontend/mobile-replay/transform.test.ts b/ee/frontend/mobile-replay/transform.test.ts index 584366e9cc535..a768a999888fe 100644 --- a/ee/frontend/mobile-replay/transform.test.ts +++ b/ee/frontend/mobile-replay/transform.test.ts @@ -366,5 +366,308 @@ describe('replay/transform', () => { ]) ).toMatchSnapshot() }) + describe('inputs', () => { + test('buttons with nested elements', () => { + expect( + posthogEEModule.mobileReplay?.transformEventToWeb({ + type: 2, + data: { + wireframes: [ + { + id: 12359, + width: 100, + height: 30, + type: 'input', + inputType: 'button', + childNodes: [ + { + id: 12360, + width: 100, + height: 30, + type: 'text', + text: 'click me', + }, + ], + }, + { + id: 12361, + width: 100, + height: 30, + type: 'input', + inputType: 'button', + value: 'click me', + childNodes: [ + { + id: 12362, + width: 100, + height: 30, + type: 'text', + text: 'and have more text', + }, + ], + }, + ], + }, + timestamp: 1, + }) + ).toMatchSnapshot() + }) + test('wrapping with labels', () => { + expect( + posthogEEModule.mobileReplay?.transformEventToWeb({ + type: 2, + data: { + wireframes: [ + { + id: 12359, + width: 100, + height: 30, + type: 'input', + inputType: 'checkbox', + label: 'i will wrap the checkbox', + }, + ], + }, + timestamp: 1, + }) + ).toMatchSnapshot() + }) + test('radio_group', () => { + expect( + posthogEEModule.mobileReplay?.transformEventToWeb({ + type: 2, + data: { + wireframes: [ + { + id: 54321, + width: 100, + height: 30, + type: 'radio_group', + timestamp: 12345, + childNodes: [ + { + id: 12345, + width: 100, + height: 30, + type: 'input', + inputType: 'radio', + checked: true, + label: 'first', + }, + { + id: 12346, + width: 100, + height: 30, + type: 'input', + inputType: 'radio', + checked: false, + label: 'second', + }, + { + id: 12347, + width: 100, + height: 30, + type: 'text', + text: 'to check that only radios are given a name', + }, + ], + }, + ], + }, + timestamp: 1, + }) + ).toMatchSnapshot() + }) + test.each([ + { + id: 12346, + width: 100, + height: 30, + type: 'input', + inputType: 'text', + value: 'hello', + }, + { + id: 12347, + width: 100, + height: 30, + type: 'input', + inputType: 'text', + // without value + }, + { + id: 12348, + width: 100, + height: 30, + type: 'input', + inputType: 'password', + // without value + }, + { + id: 12349, + width: 100, + height: 30, + type: 'input', + inputType: 'email', + // without value + }, + { + id: 12350, + width: 100, + height: 30, + type: 'input', + inputType: 'number', + // without value + }, + { + id: 12351, + width: 100, + height: 30, + type: 'input', + inputType: 'search', + // without value + }, + { + id: 12352, + width: 100, + height: 30, + type: 'input', + inputType: 'tel', + disabled: true, + }, + { + id: 12352, + width: 100, + height: 30, + type: 'input', + inputType: 'url', + value: 'https://example.io', + disabled: false, + }, + { + id: 123123, + width: 100, + height: 30, + type: 'radio_group', + // oh, oh, no child nodes + }, + { + id: 12354, + width: 100, + height: 30, + type: 'radio group', + childNodes: [ + { + id: 12355, + width: 100, + height: 30, + type: 'input', + inputType: 'radio', + checked: true, + label: 'first', + }, + { + id: 12356, + width: 100, + height: 30, + type: 'input', + inputType: 'radio', + checked: false, + label: 'second', + }, + ], + }, + { + id: 12357, + width: 100, + height: 30, + type: 'input', + inputType: 'checkbox', + checked: true, + label: 'first', + }, + { + id: 12357, + width: 100, + height: 30, + type: 'input', + inputType: 'checkbox', + checked: false, + label: 'second', + }, + { + id: 12357, + width: 100, + height: 30, + type: 'input', + inputType: 'checkbox', + checked: true, + disabled: true, + label: 'third', + }, + { + id: 12357, + width: 100, + height: 30, + type: 'input', + inputType: 'checkbox', + checked: true, + disabled: false, + // no label + }, + { + id: 12358, + width: 100, + height: 30, + type: 'input', + inputType: 'button', + value: 'click me', + }, + { + id: 12363, + width: 100, + height: 30, + type: 'input', + inputType: 'textArea', + value: 'hello', + }, + { + id: 12364, + width: 100, + height: 30, + type: 'input', + inputType: 'textArea', + }, + { + id: 12365, + width: 100, + height: 30, + type: 'input', + inputType: 'select', + value: 'hello', + options: ['hello', 'world'], + }, + { + id: 12365, + width: 100, + height: 30, + type: 'input', + // missing input type - should be ignored + // inputType: 'select', + value: 'hello', + options: ['hello', 'world'], + }, + ])('$type - $inputType - $value', (testCase) => { + expect( + posthogEEModule.mobileReplay?.transformEventToWeb({ + type: 2, + data: { + wireframes: [testCase], + }, + timestamp: 1, + }) + ).toMatchSnapshot() + }) + }) }) }) diff --git a/ee/frontend/mobile-replay/transformers.ts b/ee/frontend/mobile-replay/transformers.ts index acdd9f723238f..3260346958474 100644 --- a/ee/frontend/mobile-replay/transformers.ts +++ b/ee/frontend/mobile-replay/transformers.ts @@ -1,15 +1,21 @@ import { EventType, fullSnapshotEvent, incrementalSnapshotEvent, metaEvent } from '@rrweb/types' import { + attributes, fullSnapshotEvent as MobileFullSnapshotEvent, incrementalSnapshotEvent as MobileIncrementalSnapshotEvent, metaEvent as MobileMetaEvent, NodeType, serializedNodeWithId, + textNode, wireframe, + wireframeButton, wireframeDiv, wireframeImage, + wireframeInputComponent, + wireframeRadioGroup, wireframeRectangle, + wireframeSelect, wireframeText, } from './mobile.types' import { makeBodyStyles, makeHTMLStyles, makePositionStyles, makeStylesString, makeSvgBorder } from './wireframeStyle' @@ -37,6 +43,8 @@ function* ids(): Generator { yield i++ } } + +// TODO this is shared for the lifetime of the page, so a very, very long-lived session could exhaust the ids const idSequence = ids() const BODY_ID = 5 @@ -121,6 +129,165 @@ function makeImageElement(wireframe: wireframeImage, children: serializedNodeWit } } +function inputAttributes(wireframe: T): attributes { + const attributes = { + style: makeStylesString(wireframe), + type: wireframe.inputType, + ...(wireframe.disabled ? { disabled: wireframe.disabled } : {}), + } + + switch (wireframe.inputType) { + case 'checkbox': + return { + ...attributes, + ...(wireframe.checked ? { checked: wireframe.checked } : {}), + } + case 'radio': + return { + ...attributes, + ...(wireframe.checked ? { checked: wireframe.checked } : {}), + // radio value defaults to the string "on" if not specified + // we're not really submitting the form, so it doesn't matter 🤞 + // radio name is used to correctly uncheck values when one is checked + // mobile doesn't really have it, and we will be checking based on snapshots, + // so we can ignore it for now + } + case 'button': + return { + ...attributes, + } + case 'text_area': + return { + ...attributes, + value: wireframe.value || '', + } + default: + return { + ...attributes, + value: wireframe.value || '', + } + } +} + +function makeButtonElement(wireframe: wireframeButton, children: serializedNodeWithId[]): serializedNodeWithId | null { + const buttonText: textNode | null = wireframe.value + ? { + type: NodeType.Text, + textContent: wireframe.value, + } + : null + + return { + type: NodeType.Element, + tagName: 'button', + attributes: inputAttributes(wireframe), + id: wireframe.id, + childNodes: buttonText ? [{ ...buttonText, id: idSequence.next().value }, ...children] : children, + } +} + +function makeSelectOptionElement(option: string, selected: boolean): serializedNodeWithId { + return { + type: NodeType.Element, + tagName: 'option', + attributes: { + value: option, + ...(selected ? { selected: selected } : {}), + }, + id: idSequence.next().value, + childNodes: [], + } +} + +function makeSelectElement(wireframe: wireframeSelect, children: serializedNodeWithId[]): serializedNodeWithId | null { + return { + type: NodeType.Element, + tagName: 'select', + attributes: inputAttributes(wireframe), + id: wireframe.id, + childNodes: [ + ...(wireframe.options?.map((option) => makeSelectOptionElement(option, wireframe.value === option)) || []), + ...children, + ], + } +} + +function groupRadioButtons(children: serializedNodeWithId[], radioGroupName: string): serializedNodeWithId[] { + return children.map((child) => { + if (child.type === NodeType.Element && child.tagName === 'input' && child.attributes.type === 'radio') { + return { + ...child, + attributes: { + ...child.attributes, + name: radioGroupName, + }, + } + } + return child + }) +} + +function makeRadioGroupElement( + wireframe: wireframeRadioGroup, + children: serializedNodeWithId[] +): serializedNodeWithId | null { + const radioGroupName = 'radio_group_' + wireframe.id + return { + type: NodeType.Element, + tagName: 'div', + attributes: { + style: makeStylesString(wireframe), + }, + id: wireframe.id, + childNodes: groupRadioButtons(children, radioGroupName), + } +} + +function makeInputElement( + wireframe: wireframeInputComponent, + children: serializedNodeWithId[] +): serializedNodeWithId | null { + if (!wireframe.inputType) { + return null + } + + if (wireframe.inputType === 'button') { + return makeButtonElement(wireframe, children) + } + + if (wireframe.inputType === 'select') { + return makeSelectElement(wireframe, children) + } + + const theInputElement: serializedNodeWithId = { + type: NodeType.Element, + tagName: 'input', + attributes: inputAttributes(wireframe), + id: wireframe.id, + childNodes: children, + } + if ('label' in wireframe) { + return { + type: NodeType.Element, + tagName: 'label', + attributes: { + style: makeStylesString(wireframe), + }, + id: idSequence.next().value, + childNodes: [ + theInputElement, + { + type: NodeType.Text, + textContent: wireframe.label || '', + id: idSequence.next().value, + }, + ], + } + } else { + return theInputElement + } +} + function makeRectangleElement( wireframe: wireframeRectangle, children: serializedNodeWithId[] @@ -156,7 +323,7 @@ function chooseConverter( wireframe: T ): (wireframe: T, children: serializedNodeWithId[]) => serializedNodeWithId | null { // in theory type is always present - // but since this is coming over the wire we can't really be sure + // but since this is coming over the wire we can't really be sure, // and so we default to div const converterType = wireframe.type || 'div' switch (converterType) { @@ -180,6 +347,16 @@ function chooseConverter( wireframe: T, children: serializedNodeWithId[] ) => serializedNodeWithId | null + case 'input': + return makeInputElement as unknown as ( + wireframe: T, + children: serializedNodeWithId[] + ) => serializedNodeWithId | null + case 'radio_group': + return makeRadioGroupElement as unknown as ( + wireframe: T, + children: serializedNodeWithId[] + ) => serializedNodeWithId | null } } From 750620e5e526e050fc1173e382bad882bcdf07e2 Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Wed, 6 Dec 2023 16:24:56 +0100 Subject: [PATCH 2/4] feat(insights): cohorts from queries in persons modal (#18982) --- ...es-app-sidepanels--side-panel-settings.png | Bin 130736 -> 130743 bytes .../trends/persons-modal/PersonsModal.tsx | 6 +- .../trends/persons-modal/personsModalLogic.ts | 50 +++++++---- latest_migrations.manifest | 2 +- posthog/api/cohort.py | 34 +++++++- .../api/test/__snapshots__/test_decide.ambr | 4 + .../test/__snapshots__/test_feature_flag.ambr | 9 +- posthog/api/test/test_cohort.py | 79 ++++++++++++++++++ posthog/hogql/constants.py | 28 +++++++ posthog/hogql/query.py | 16 +--- posthog/hogql_queries/events_query_runner.py | 21 ++--- posthog/hogql_queries/persons_query_runner.py | 9 +- posthog/hogql_queries/query_runner.py | 2 +- posthog/migrations/0372_cohort_query.py | 17 ++++ posthog/models/cohort/cohort.py | 1 + posthog/models/cohort/util.py | 16 +++- .../test/__snapshots__/test_filter.ambr | 6 ++ posthog/tasks/calculate_cohort.py | 12 +++ .../test/__snapshots__/test_feature_flag.ambr | 2 + 19 files changed, 254 insertions(+), 60 deletions(-) create mode 100644 posthog/migrations/0372_cohort_query.py diff --git a/frontend/__snapshots__/scenes-app-sidepanels--side-panel-settings.png b/frontend/__snapshots__/scenes-app-sidepanels--side-panel-settings.png index b9b6b50b3fccd7b5a15634a8bfd7e5c3db1968c5..81abba4c4368eb54271e7d6f98e81f1d68c77c03 100644 GIT binary patch delta 120082 zcmaHT1yq#L_w67mU;qNrAV`NG-5?+$Esb<{cYi1nN=bK1w{(Macc*lB=ey(Y|9`dK zdak7~GvCbI@7{CI*=O&4ExtvnyhZxS3n?1hH60GrchagO2qL^dkC1A9grzR`qP0Gb zS<1pm%q~$9GGr+j3CxJfI#CIr;~V~bXs^s1;5t6CZ{?` zcABo(oj?RW6toJZJ|Zvl^W0p@F^0xT(aYw>v4IY<78`IaG9=3*QjPuovf`U#vcRJ) zp85x7rdjZJEj5$DZ$a*owCN?m^t3lLrivmcQts^le;27~7WKptwbX@T0!p#_%rD)L zckplKb=F5NMn6?JwIybwxXjgLRDpj|n(NCBOa+F5-1n}xDB$q}as=x4-r2Log`B&N zkfQgO@=Ev|3n>)o#tRCL**#OPB#(uE39&x&Lltm)S6!}`o?kMAA;DT326?-G7c0NS zbYIPSNn_y@@#-Y6KC6r!e1bnx{0R(eiDB% z%6;I|y% zld+YhD<^Y(pNIb=Jv&qVovA5)JiCYRyC#wvhwbUvzy3(QtBr-)=K6v4^%{15az;nB zWUbypvVDlH-65~&q(2N#?gp={=rc1jclCEu^6(JAFfk!aN!5659i8Be41@GUH85Y< zd3qhe%Afa^mIBMm9WX^lSmE=9m_7Te&~n3SlU=2JOAqGm;l435pq1Bt?|BhwW@8f* zuXb=Uf=NK$u9(MPc;>8VaecMjH(L|gzB9!_uyRx5U+anJg-WzDl#%?$+Y>DyAmGxx z1!rXqTG2K(Ze8gbNX^QcpkB`n$h^`tz2Y~uTe=W?78JCxx0^x3+Y0Jq&gPsofhdubCzVGlagM};Pl zi@uR@apIDa^p`G|xVZQ!ayiAttVkq`jLCt4&@;I(`L}Obn}&u2F}{F#j?>W8B%Ua2 zGl|Uj_3LMJG#Uv?Q*C5I!n4^%j!(QBrmkU{C0{hhc=@cE=m`bx=cywpU;%T&_ZmX?A}`<8LP50_tAEmp<#&)x0$UyEK;hBK8rrcPkyeVVdw>y(_< zIQO3I)n{H}L?`$i>u)h){pxx%@eNxaqk5w6y_K+}{WBDl?=dkki%Xk<;u*QWH9vfK z%rsP@9(?nZApVTAA_d9=G0Ej|(JZc11l=*(t@Y~f)lI3+s3**ochh-VqI?K;j)`T- zVlh4GTtgL+02AVNzDLE#D3j+tnBrGlQPDm)_>(HhSzVqO8@qqL{+fxE)%b{WAb~5O zu~94NG?<7-dLW7KEh}sO#3lY41QivPkE4;)!^4&cKcnJ&O9NO6RK>D{Z3J>mAWo?^ zw)5P=`0(())yBI&ePb`Zj@N~Ip3{yyUiESb4fxpd@H{k z_`|62CsTvR_c>boHVRITh5cWfLR8dvMAolz|UZ93aNcb&CiYGTl>xN%hwVll4Yc0b)Cf(Z>0??yI7&22+K5;`!Hm zV@t`YD3+(jgyjv5ja62?bB9;7tgX>;7=76cViLIQqVzhXe};yNSzCXKbU53alTlIO zd{^-O&opZ{ZIh3W&o@7jpHYrajiRMFYwcgZ*~R{=^8yPSo4uU|@-e1lqqxsaOL1?h zb1;)v-Q31>-FuxvBGBk{a3E1;HqkK5Z#3X@wEkBBL|N-Z7S846<<4Ab$i{}syXG8u zBTmnyhlZJ%&Q9Cyr`sHp)yL7|>%INmeT;E$Rr%Qj6cQd{S5MEl|UYQ?{|O zN$iJKI%Nyn+H{N{vzESyczyj}%2jJ|S~N5qU431t-u3nU*SwwQ#o5_0+1bV?r_XVD zok<=)_ITjQ=XLq#}mtz=*n#p=gHT;7jvN# zw?{uNJ-7^aYd#+BBP?>cGZoBmquXr=cY8k0m7Ay#o6E?|G!275`ctpQP~7HME_`p| zi$X94Wh4E+9G%+61if+Z5~ z?#?q#S&?s}o9dpIk1v-?Zu#*1yk%rW7*kXvqf0P#aGMPKSZ4rGYoSMCd77pb` zqCPJ#TE_f^bV~f8qxENUvM3dm=(Fd~Z5$obNCc8MHgF4E#WTWW(?7g*Z+&}ma^jz} zd?t5&PNaR`fcQ>qp!z5|PcC}Dt*0m8J0=x6D=T`@o+cRFM{)6S?xZhY5JGsbtXH9n z+)MucBtE2fO+N+gcc&wh_-exw6Qv+^b;5Z~3Z@t}mBr-|iCQC9A2my37f+**X{b(p^hvjfI8f@~_{$Nxh|!;Z~WI;@+8)=b<9DeC=V5 zm&&viRNbSy3-h%vF);(ae@EeSJ8SBm{t>Z)RjB^`H5r+Ar$p$tZwar-SFl2%=+|AH zor_@cK^-jqU6E!qKn!XJIws}}dC3#f_Y&ns1DYqNr!KqYBDlD?#YO}3u0)LNXZZ4z zG97tpGOlMEEwk0fUA=>rdV4cYUPI}`8F@x%zK?^nN7}7eXO@MJc|p%`(cdW#5Yubk z$bfv9&ec#jF@zomU{&tP&C77F)o^I+6g5BZu@sDwiVBmM_)Ag}F){I;>KvUS?Mv_r zSm_tU#Hq0apZwjl`0!^;S?L^;1aP{mk5d5%7|sX?Fmy8^g9KPu5HZ8YV`6X-P4f%# zVV!jz1fT4#9kJUfDRFT(5KZf9oybVEf3C4K6_l~2>4{_TQgnU&EkL4L$!^fD=|0-pyO z>XE2v8Pcj$uAST4DXAlWh_C1DU3b=a5O_(&H~if$;xJXZtcgrYeW|Bt6Mb)PZ2apo zzsTxcNsY?!B?zH8zFFia_-WPAf`Y=<=hk@+jgar{zXU?tS?$yPLCMqeQ(4Jz8VS`d z!c0-IRVK{4|0-=!tR#Z7yOVd*U`G{yz{a}-x=hM zbgz9Cz_K}ms4o;UP-vybJ!u-%ZU`bqFd@t8DMdBLD^Iy#@_luA!OP$R|?dA<5Cx>6z}_ zHx(5X-~2>VK1iMK%`4vB#l+@z_V$ucQQ_$6k;%!)!9K;tB50eMcJKB|9vvNl3bi(ta;zt zd+=}K{ukAPwW}a!?uE;iltSV%x0qzDrm;K97j)&T<&~~OvZ9wCcFPG9M_9h9y=cr z*Gm5L^}$!aN2yt(!Ud1ZYoM44i-Iltow(6;qxqJW`tEZF#f1eTn|-?Ofv86U#3UaK zcd5H4ZX4MQwkDKl7|F=wOQ)@9ws}yRj>H<|GV1U13wrLZ^W<^>h$eZn841Pj;rf{fP1ZgbIWVm*-Jwd7iR??N6^!@z6`B#h2OeWTA{0dCZaMR8jtD|F56u zgj;G*tzz5;UE+RGDijV4zT<-xfyBs8iA`rl2Y}I7)u3peQo+H|o^NFN%Mzv%?mj%Z z$PlH%@skbe{mGJL_cGg44I+8}wWZa$$lpD$rJVRcW+RM zc4=to^(PAFcBab-9As^z{6@keA|yRMiO*1p?B}!6kT!`mgMu@Qi(yVq9EJm)V#h}Z z)>+xbKeO`;j{UL&0;bB%IBKCO2^-lL(uoOW!HP3ySHr7rG}QC}RVDxYDSvZwEFJM= z?%pJK?;6?|sU?5md^h{Za$b@GR0OxP9Wq8n92laoFte4B?a@k3Z9~P?O|P)nQW1Zb zfN{(M5$F*EcJg<`!?UScskF6?KhazwQSd!{{_Ocjf0;pADc~Isas-UIzK3F zxh3mbb`45CAhtmTA-Sg@a=`k8{tIty$Tn@|E_g51T>&(k1kLum7 zk9I5L%QOK8@wqV|=Uq-df1iSSe&MK&q)d)-)^;|UnHgPsAf6)4rPHc77LVi2EXjJ6 z+N$5}c-h;J9;0r^*5bBLAa?fM{oMH6`g%SQ9}#kL@}-Rxm4#2=s*D&nd7)8;ZJmxs(+{-QG+8TCDTt#8ME!XO@Cs>q?Au?Jh5&;wu1w2u0Z5Y66 zihJojXGh&=E``#dyJJYy*pRc_um>T+HeQrlw{(uMxIOb!Ye7?SZ+mO{k@5rsTT<52 z`i})8kN@h-;DnQq|61tJpPjKIMgZ*VoF&A@9Vx!@kOaYvfq_v{VxpC$XJ}+(w=-!o zI|t3iaM^LQ7)h@u-@AwJH_UYl+#S-w_}ot46(}t)&q$Oy&owWg4b?cTI_lfljFGA3 z(oIB$hm(<#W>GURjFUeR78c&NCpt})%b`8h^$WYSI6gYs^0=v0oJ)W*TD}mNQd@i9 zWTZ`q7oCX*6&Dr0W)!hq(nqee%+Lc3D8ygyVe@9<&1rgM-r@1Su$(RiQ^`c}TMnbi zgVgt0L4QH-hlPVPQm&@__}NC5!))VS&7befRARLbPgz*xT~9WGD=U@LwL;L}3=O4s zRHM6ovDBRF?CT??+hz|AM&;hUK4?iN;Hq&G_Sj1`c75~rI&6U`l}&+C_cR|qM$IX&W1y6F51Y_}0`AqSVp5w0Zw@>Cek%4e0gw~LB)6x*#cs;H=<14bY` z9JBG(@#jd^0DD*Y)1l#$?RCFAHJm?xTE5rdOBvzde0_iz&y(-=W46UDz+G!e^SJT; zHUxA7tWLN~#74u@-{AaL0W*ObXq}Go5@vWPDWh)c+|6m}Z=yp(zlfQM!Jd#3^MYa$ zP>@)lbcB{-rYvK=Yrb#FrVUCm|Gh3zdwV;*>Iwe+<$#>KyNAl<5K#$$f( zHNNZ4&tAIUj(y0KitpVnYRq)VH|SX)qoWJ>%(5OD5utA80%=GloRA-D#dah^#5&;e zmGxB?o23hGjgH$DP-@u<&(u5}7IVj&vhy;D@l!H zEokZ~DJXp8v!s`IX2s--(uGBDZo~n$t&8oRVli^D{llqRX&IEBj;MTBBV;SbjEYKx zz-hBY4vi}*J;P(h^%434UaYiQSo`Di^ki!+{g6S`A6r~YD>+pd5szB|gTyH>bzjFp z*vMgy!IVHAf#emZ!9 zzeRG~Rw$GRTcdk=@tEovqB<~A?ckB^fRIkH<) zzLI}$lh}(mi8zqxI%d2l{f~Yy4GoR`hISU7R-poI$^PJ%hzP6#*Hr?N3_8!KV91A2 z10^%1*gWn2+r>kGXfO14xySF$<>7ztYHn~gH>YLZ|6`z4zlsvOe1nS;F6)W-+q=`{ z0bdZ2bd8KelleW$0F`wzBnl!rs;rC^2HHNbjaR0OlE+5D)lS9b6JcYsD@8!Ia#gTkur@Nv3m2w)@Pz-=TJHd2&AfShO=^orR~Nii3E2k;*tEKDqP zg;Z7XO-xM6*qNGJMu@=EpgU&ed#IPD#{@{U;o;w0j6mCXk2zEPSK={0R_6~i0p0!i zTlbqo)rMx<*>-qENW|DW2N9X5eKQHhLkhEu*_D#^~uZXwOtvDe@(#s_113lqR-kO`H1rqwa36 z#0ppfhU9_QdCFiyzuZBLsmaJvUHqroy7` zsGCkQ=IxgkWFLy1_BHvhcUTIzd!pVf*PqYp?afwSTwD|z^k5tI#(V*}$kWr4_qdm3 zw#Fe~wI@0}JiMiLzoF;rqo)@u;WDfp7fS(*F{~ySdCEnGw^yh1nsqVr^={DevOM#^ z(0Ve|55{+KG9oioZAbMKhv9vO9FyfNC+uuz3J|06&P(5^oKMG;r%LpYKqxeijz%ml zY9}r|RH?Ki0#E2%oooVH6Rc^5oxS~{?TQwhmITQxKfl1*#^!Oht?lXX?_uJvfCRI* z*;UU;0%iJoW(1OvA?M+VzrQ^o18owqgv3)yDc7**^#QZN{nL$DeJ_vKkC#IPn62h{QHgmW6_aZ~KW|Q#)Ad9%il%--M@Mf0 zL40|0JP->OEGa2za(dc!W03Si2ytJku;0c+(JRqlLQo)|a`Ny1?jCR6b-Tb+Po>uJ z&0MV$pi=}MYoBZkee?CT-J9i-O3abZ!obD#FS6?DUM?&w1Z_nC*aJ)J>m6fx$}SKn zTzCQv`tvDZFDtn+&x3>}WhJVmrBzp7&t<#fPl>Rxv(pQ>b2cXRI_FS8NSR=G(J2?U zj*Nt}nT@ApWp((!Agi+e`+!a zqVNCF@PnaVVxcNOfBod;F~iv|k5{Q36`amGHKa}d5RyM(!#<7$V}3th zUuGTX&qF{dvYw|v_jm5+b57hHD1+6djxrn?h4-4DYL={ogkGnvGcIndd@|S`t*Y76*@?HwGj%uw6uLZJAsAkhV{L{jOLJ#$^gTQQHIr zQpoYT(Ba``SBfAa0k!QvnCiQ}4y|`QWvpugAz1Bx`Fot*M@Vp?!2`6A(c@+v!9?(4 z{^kAq_ts0TC?KcfvKpg%KYqRhbOAzscU-VGv$M0NfvMTqAGht=az10zt2F%*3-9dg zBzgPx=YYVyy4m$oTL72y0SOQ^R>3F&ahbkOXpU&M72Dq#Y3NZy0K>+yXWDiLOy4B{ z?j|jEwlohm5X+O-Z3{t-;^EXaHPuU7Yq`fIx!fNV*SD9ZeHaQg?4N)BrwNMyN@8LP za*a`6DEtnPZRmK$2|K4QuqGXSid=W7O5vGb~oub%#dixD?x5@$g~+^*PG%48HovsbrDjZP0LrL@cXGn9^mP z%W({+&1+CE)=D~v$zH$ynjsN=G%7FicYh!4T|B!5sL!il;UyEfUsA_fF;Y?afizvL z-TW1Q;1=X|W{)d-Pzjo|Wz#3?-8eWbX9sgfQiYK~_3Z!>R##u&D(L$s$jL$T$XI`Z zfr^US8_NRu_4Z1FJ)033Ga};d&Rc5Or+abm7Zfk=;^Mdbw0;3^9+nAr}Wpx&1CJttNI7-Zs$H{R+gV%%qHr zN0gM5ky~ID0Bn_Cc>Aqty{gvb@7`Jg;d~9=cH3L$VKni=m>#L$n0^?wkbd=8IsvNX9bzfMm#I)K3^i|2a*Ok(wIWtJxa~ z5wL+jii#LP-zw<+c+7d;X1V?F?t0%2RM|}FL~&W!7a(a5<(Aqkf0(Ycf(F2*0Gi^< z0PHtH_x(a<08pFHR6NJT#55d8>I0xTxUmsRR31*`cA#~2b(M@~4+0TU3_7OvV4^$+ z#_=MpfvHlXSZ0GK>jTL~pt3%D#jl>lxovm*4AUOL#+`ATe_sw`SbHF*&+YdUkVP28(oVvyIxW0sAhCe<<7zAoA z#<$+NRaI5h!tg8yk5u`n1`+M~_Uu2981C2bQEF-J$#cn**B^4mXcZ!;S?1LhlU zH;3xc&_eKfKxdX-?y3#0kXX3)B1LF9*jf{ATGXjKK5Ojit#uWl|=ZScD zy4fLce@Hns#TB{r@+D4*{U*}04S|PHMX(QL1vv?#mFLf4Ux1+O0?CE8JcQEG(@jOJG=mcxmnEC^Z?uPD|GVo(k0hJByi`M4%V~ z)dp-jgYEHMTs*wPX#s4Lv1`j7rKM%ex9sd|U|X8sxUxVT@^Y8fZPzezO3LHbNfeM- z(iCU`)Bbm<%^JJzxBs_q?=z)68l)#aZN*D1goTBD70(b#RX(bFeey>{)7^$rL_~x- zQvB|U?gt*Dl4eFN!#QYk_7uC7KCBp0>ggNK0ePD8XMF6pqy||#zkhYd?I*Cwq&?cw zwnBp52?>48q(4!oo~v`y*>1&QLN4c453~Dknd(W&b=QLYzY2?u3s@n%Hnng7LvY z7c?QOpzy7_nydCaq7{pkwRpI}p&CsH*``RYf|-QuP6*sk+{de+Pgt&x`-pu1g{j~$ z;wS&8jecVlpEP<=fwS)&xYw;<9%dq_LwpIM2)8aQ=VbS%K5<&O@rxQa2_#=Mmi~78Ez5x+7z$s*<`FQHyf}8zSZ)yq= z?8X;h3vLNvcnOugn^-PH)Yg-)_%nC9eMs-Qn@lL+`T)kq$45`!OSgNyPhnMh5UKnf zP#vIj62lA)4SCORSb7sK)08yinKVy?nAcM7)XL(9y*&Kmre&gb|U9yVv_Kc{)Opnr3PV z1a7J#A-i>%qfwS{+TDeMJgQpH%g|Szv)yV|x8VqgSK+a-UAZCr}aVmE6nMxdM1IXCS)&68d`* ztVj;iXASZX3R*3woFD7W;;hPX!XLXQp&KFp2Sj{uvsHINz8;{Pfm( z5msS&o0RN1-Bvmv;GOP`2w;yGSX92Nvr{B2ZVh3F^GpRmJ#$(wayahI_C1wP>gXB@ zEozv}E+6QNH*u(iZ;TMriQN}rMR#B2x9Ke@@0(YXQGuAsed#jQM-*oad+bXIDA?xd zUojQ!ZLO=0t5Pc+dkOZ{_g6ej-BY} z?DRihxJN@J;xXNF*j?+29a*2OId${AbHU-_;^O3S8s=7-sfYp%)6tAoBa7Skf{m>$ z`CsWGUVwCdl6uqmsf=Ae0a1#_bfeQp+XN#Mg@OlLIlzpa?cYZN;^ISyyF%XltV=0q z_8qEyO_yu+w#vG0&SnH{ZEbN`wybao2=q*+@evUb0jDSEf%7lf$wn0le{b;g4ODU| zTV=Kgf=OUD{i+tme4YvOve#37a>AoKk#Y1#*&vR8C`&01v{kq`jOr`Z>&eYfQxmLQ zweN3>C^Fhp(Hw>0bWtaFw`*1xb9mjO{ujj2Tdtvs%7vM_%e*Yd?BBnC2X$enB%KeF zGI-tZ-a~Y7kaTq`?{mco-(yr)WHK_cz@Q+PwOFw_P7l)zJ;wV*zD$|qAAsHhn5+rR zp-zkU)Y0yT{F%>++z_P5q(~pnY4QM2q%Xj2DbT*eqzqhMxOY+e$9k$&S{SZ$z5u;7 zfS89T_C{S{5R=993b&TUM3 zw&x+PNAx5jn;-L28C|0IXxJmTmiBPkd@Z_4cf_DTPbaxkp1+*NcZqK@79ho~Y4)6C zmaG9=;7+=^zA{|%&y3F)xUD4Q zbf17+jfI89E}|~Pisx~w1S;Rid^R&e>a%>P6`-5dokUsfpm%GQa8z-P!hw&-ti|;E-57m7f9A6#l#{2*a3NqJJ$jE;L=V9#Lq~& zC|Yk{9}_dP>5nStn=x~Bbv2wc0eqK`FxkP8ZBfholU$i4MS8}9yzEbu;O(Qy2GOZ1 zj(F3vI{uWh4N|hx^Pi$;lt%cU)A8{k0-dFA9k6=L!z`fjWPBnbM(;?pQ)SJR-#qZ< z-z1I2z<42sKp^#Q04OfsM)p3Og_-$Jd;4Puc-;Dv1!OiZt?TOew(JAD`!vYO#Fl&3;(Fg+rgVY7_Okx}muyOL` zcCZhkS}m==%E|9r5!+^F2*}9vbkmA9t3<`f)C9){7W2&f^C&K<{!NN}I`l!d#anc@ z!vE`0S7W=06EJx$0?7eBAK;Gqlb^QzF38AK*1idH?oZ$ksQ2*uzy*hqr1tW==~cg4 z^=q8=hayUlhhE$7Ookq>4=k(nxO+`|++aDytx#a8vUTsv&hf&Ho!`*QM=bdiB)3c| zMQAHz@zXi98}B@zsR{=kEsyFKUP@O5xG&!dmEK0r0j-p}sj)~4G5KG!=pbwH;4P5+ zftxThP{bd*8Mq%35)xFm$7W%S7KX|kSXH{!@G-rY%Eez&QzS^Q$q~iRYSYotY5tW( zc`%`+Ox?-YG?jsgjcpK+aS4>G`FY~V?)(@14A6fjI37k%P5twcKr13}E{w%Ln*!$*Mc*V|49 z%(@LZ8sq573ZLcI9>7iF-xz2!4@aGd>6K;+=PHbMN*>4J#lo}N5>(hBtMUnuPzlwg z_=h|2YX=q6$zecM`W_TS!Ne2_NCnt5C}Mz9wXwEt>dD)p`X)3RVE@@p<~sc34ikRg z8j)5~5#_wJR2OA4*g<@MJLf&FzlX>)_4U1EVHx?r9RMHOR-PcH7XY$^oYr1|^AMi_ zVDcj*F8-R8H3Be?K(h1C%QF*B()6cPv~j5aQF;)uf2e#{U-JjkO$^})Sim&)=@7KB zxC)WBjv&Q8=KR6jp<)1MHzp>MHTn4nE;`}EH~#oM3O3sa36PSK!r)HF`g$<#6pdQP zcVZ6!@{N*+W(ZA4=mh{6$a4?{HFb8X5PF)J;+R)q!VMiwPVNiMD=|`H!02g<0Wu^5S z3MLQ{DGOBDW;+dmu!hZ`-kBy6uxIKful8FXWxw&BKPM-rkEq+DD3`QJabi#tp~@V& z_~Ztx9XNkb*e&O3AneuC$fzY+t1%oS>;+w!PytwPK7An-Ib-kw9X@!2Y^O}~`@37% z#nshT#0}l*))u_Y1(OWcbFpv@k&wrc9uOmB930Vr1DSW*=L62zKY*HE*-SUKU-g@L z=MZG-ka6^*#rvO}U@t%3B2x?fvOg2Bc!@)57HA^s?%~FE!St_}KiGWVNDJg+DySXV(M@2-muJy&6 zNj-3NbAxy5x_Wxs39x)>PEK4aD=WArAq7auY=0U4%WuyK*sX7`90&;soiA6T@dP}1 zVM9YhK(h1)k(^#sB%`fO^2+@Hfi_ayZuaKJ9ZrnM2;6?l$)N$fg&rWQ<8~iCdej>W zvG@UjK*zwK4e-@5%mzP{%x5aCjHZ4YsMotjN+)t30+s1tQZK}$VgehkVU!vTtc~W# z6AE}H1mG|Z7i#dZn@=_YepXCeT(>ud34kBdMCIshOoxfgAQ3x1fI|T+Q~q6Q#qpop zHr72Ahf$J~!xZqZcub&Sa(0X9U-B5m_6x18tykaDhH9OxJZ}y~`_>J5q7K12GCA$3 zySuwj{x*2ZV%Xc%)rA5ink1JsJj=P7Ho$~*b#?unb6PNH{`$!MsEaC2&;76sM>3A} zJK&c~J#SsH88syVy>@tbh_DD4AR{nH_p8mUo!RPepQjKG0M5WzKnMfI6P@k|8s5WJ z%(|T>$?HJUbtz(VZHbcglBp1 z6yVE&9!8X+UnmTs1cZE=7>t{TrxXy)Df-k$Z2>r+D=iZ#5vsrwz%={0)bKf=ao}Ty zvuCH{rSWYfjbquy}`jx{fRtTIq5y8@S`Mvwaer8 ztY_OlK7I=4+_BfNCnw8*Z1D5v&yR+Nl>Ge60x9q`BF8#wTm3RZ=0Wb5ROO(ct1CCC zJuNJ6=;=So$gBr(%#+a4iiZ>SKz)6Ww1G>5Uaca~-yaz+mlf-@u%cAT0p%g?99UCe z`UVCj-Qt*EGHz~eF4p3IM-GBL7yDM{0k{uXnd#V%yW8ty5CEHmRPWaN6U+O78M9wr zhA%^LZF@T}5;nSe1s^!Puw1&_dtMr#CGt2?a&msm>u>OYkUmzsl;#NkDeHF$&t20nX$hzQq8%C{JS zpyZ8&#%#aw3HWS#fGFX-TRu^?MIFhukO_SH1p|QcQO!fo8{48)reH|M{l_*#8cb8U z|2?-h9J*3x0a@D|L0h+9M(%0}wSIE#rc_%6=n&NqU9?3us5`%p5Cm87LZ~)~t z@yzMbWQ_wI*xszKJTFKG_|6lQ_L~5c2Do@{AD>46lo){|&wGD!><(yO2k!l@a4NR_ zF;ljVkXKMgON+4l+UjasGIW0udS0AEn%TdwZ(uzF`lIg|(9ZO(DAC z5XV~*+AY(JqdetwK+~A``okwzHq!Muf}^!H38-#rf5&v<*BjiPKG5oIXT|~ev_Gn1qcGliOOWb zAt6TN`JVy9m_Wqih>nfjo|WvGI|UHBI;C_%Xa46>TsBiIf!h;t4#-Nti;d3yg~$C;ut=jj?rSjQT+zkG}!+lS)u=pWzC4RH)CML_`M?T16FWJ9a+-rv)k_B4Cqw~(EnCw1}3(v z=mf6dN5t@{yP3ftfH)9deQd~aQ33$LC_Mv1aB;D9-}>TW&1x6Enm0M@ABq6S3w{6p z39&wosoVGO%1S42(jXu|BNRFrGp;bdESyJaV$k4*INm#hJ6A;qS{8s-leJEblrJX3 z!n{t2AN+&d;FP2F#r3s`COEZVzc(9;g4u!jR{yOx;^V`WZ#J9`wy#&$`qog(n_ZmF zm!``(`+!l;2`B>H->8z?%O#YHs}w=cg%yxB!b^=x# zU3U2gREsSNC=*o!EvOs?xSR4->mLALm*?#%$69}4NR}VZEB7iaCnsg_XuzuRPIK1= zjrhiUld=DoM07v>{i28O!^a2h1XiUwEzxn@@a{L3u`e~i3`Z$nz26Jr_Oe4@UK>~= z;Lece1pJRuMA59+%`dPpF~i%dQG_6HmUC1t+-nRKft{Io33R8Elas6lyh5zCWo2cx zs-qv^VYwujZl(PWoJkQERxQ#DYGB0p#08q>hC~q?n-|w-MDQ=*z5i3H>hRU~@zGY^ zQ?_J*&$YxH9LiA)YG1*@06{@vWVFWC>GEx4T;{6o?jSJ|1 z;+ZK)j{Awv11+srnl7vRY{ZqBdSH=^xw_GA-w2Rb zaVf^bSl_-)DX8Zwv6H z)K<4(z%x)46;M+D?(L1w>aaesDzdydJIfj22Yx01c)x-w4stU!J^e~+7dkjvlslJY zR74EaQ+IbalQ2IdNZ|eUctLqE0fwzOU2~Owms~<34{(vFNYw-Fn7a+gqiH(jtt+oa zf5KSVSV$Q;lA&Nn$6xa`B9mY20NLZoNM=Lp{Tub(!9|j@o%x>C&K~y~OR4f}$z=XW6L~G&{)A{ez{*E6 z-nVTjnmOyvF2_AwIoXttHQB&lNtah z8BT{SR^aynA)TL}e{i_zQ)-vBhFb6$m=<+byI1p7Z?zovZXO|tA}JNBYw8IxKyR&) zUlm;aWP4R)0Ni)k3Wh*ojGeMGG~IfJhtZTfMyFD5`n>Vxw;#M;KAW+6Yj2#A+5dZW z|8M}R>&lNk=5*eG?M{E@*eVAhPaPf_I;0y8!QkZ#pDOI5m^305F8+ov6Uni(|8Hw%jnduft@Px z_p?mM5D?;BKR*t+$;nSc~u^$@zFb_q`kJQ|h0IF*R7tEai+%y&V=EPuk~@XRZl zPTA$CODuuYAoTPw<@>bIaaFxs2=gtGq)Gm7pXV4FWLqeOxl~?TL8KT2^=ra9XI-y zdxtZFet_5lHmdP0gbToCz2&eP=^ZMU)cLy}$MXzeg70oo~L>2Nl-ULME8k*4t4b*cqW15 z=-b(uKt+mkrbpMAk;NzT8>5V>h*$hUM>N}E#{x!A)$Y^F>oaj9sh|&B%@4-=g_ug- z{NUp24z6ALEVa|U&Xdw$uYO%ut}(;67~iLcjEwuk3`fTI8Oj=X#5x0&fxG#u ziwFq`dCxI|X*$Pl3wrI0|~NQT>18dMsJSHR93gZQCKSxT&PGmnp8!a<#M^`fol7OlMD#SepUarXH-)c89TK0nzyW1c7S5)u0$Biu>0 z6Zk)pwLTo~41B_RnRc^Cv%9;k_2IVC2dlCAsl!4EwPT^L#VUsTevsc!4J?5x=C&ee z|5w$%9(847i0!)RoGv}zz!YD$mg>`|jdV`4$uz`#Axj*N%}prOjzu&xf_`RZn+Rgfx35&j_d;aH=#*< zZU<*-_rs%o{oQNH_s-rN^A|{sw@^cJm%OI-eBC9;ea*B30#@_x;E3Yq`zflO`BDH9 z#_6vb+h7l$Ki3~w3*!`$CR*;R)SRGM1Fc^YWcdWHhSr|%v;t#fTL2wZ5PU!4s?Vw8 zvAL3iJ^szd4-=a>7=YaLj=-=>;5ZZV$A0e%dph(7OKmbuAsTv9Az!zGM$O<`K?M6G zaKqgFoH70JM~2Nl#hZ)Q);k{#d61|-7uE*4Ziz0k)UCAinH}`SPp=cO;M}n{u6V0y zjplHCy89iqR8l0Q!{2Rp{V5~?MNjKZ&hii%M!M|16<1)KqFW&B3ALvSX4M%DO|9MR zlBkxiO;IFaO93N9-jT*zTcrPrsIY*7j)B1tY}fp|3$n+k?#M8=Yt*_%dlUeuF_PT& z@L<3co0MVfX~3-`zYX=u;~*97Ms0cxB_=5Vc}ty z`*AX?2KNK=iGCuA^$3Lbs4UD+zJ5*dLPq{w^BQ`xcbz2Rc1zo*G}7xhqOK|>RlrJD z&^v0rFsnTKrj1Vu;gR6yM}mUr=!TvUNjf6STf`NwhUE3X->c7O?H23?ezx>{wmh3! ze>!MdJ~=ak`1b0%Y@oY2E6lVU-^hq+vHiqAUbnxyo05?+ayQvOZOzfsR2`SEV9;ivuqLMs@e@dF!T;tJT_B@1@qWB^)L{*qa~oA+~luL`O~$ z@}uh9msMPtq7I(cAKu22d0{^e9Ad=eh8~Dxcu|%WP)dl4Q@(ide&Zb=N4lYFvayVPP-`E6sO^c;@S$ z{*nt39a5!bH6a~@vMnDHl3Ocrd28?644NgOBw}Z5%YHx}i=aRF>98QC2urf;1GwBj}>1k=1RgyoX z{|y!W5N1c=SG$iV7+shM0oNPv*~YSB@a1+9PAR1I@bBLlTpmYW;6+4}&y+6I4*+{+ z)bQyVBmMc!H=K@zw2$ywElUi}2FQlDCcm?>Wt{#WM12KVRO|QkU?HF&f&wC95CQ_y zB_Sv%AR*lF(}s0qKsRyJ5aPdVl}#KF__^7-r6#^S=Atd+oK> zuGII{i`^%(&hBU#A!>b#>Nq?+_Nx_2fBDSr6-h*8d*#^dSb&rI(YlD?lZK&9`g`0D zce>`&^*RO+?a|zJ##0L4hWAe1TlY`uS%n)zx;#KQSeG07=-*J8r9V6yf`rvs|CI%%NX6 zLK0ItbErLfiar>pE{HGaW=sl^W0&95kFdzqsgTFrU^XRR!mpZ1|E7D=xDVg{=>0_e zuwU{JFOd>+aLL_qCx$YS@chvj$w7N_0hjGNkd;21Ws43M*f{cG;dnOF(tkTx6%hL@ zhj!hveQN?eb|#_IfBO3gfEw?SqNiiWLS3t}im9s|J^LXd0GYZ0JNvnaLo_J&Negm5}_DT^FC;<0L-S*s#y z-&mJPpKs!}epT~{YK3!c>oG8_{q~4N((caWnGfDIn14AEb1Sg`fz zIygJeBiC@fQLEy_XAT}d!F20TX|Zx15;62sQcB7S?@8=MT7;OE)-rq9)T}-eNR4B&D@Lk1 zf8R*_>_)UG62lri3w!xt9pdrk z$S&?odzAN$7g#(_aGPmM6M+r@`blJOk@Mviy+;Xc&$Ua!?wc)Y%qR8O&QXd(>!YEm zX<`uFjOX_hZOquSd8q`%&41?DNo&wwbw^ZMu!MO=fm}_mkW22u(0e+=ELt5 z-zl4%dZzfCR66+Sj-aS0Er5E%3qb23Tqm*}EiNvmPLWD{3J>e$_7Mrqy_)a9Ki%~A zL!Mu?x8JgY)7s4J4vpYP)CFp4nT;9UB08N1HF#0cQFGl16aaY0%af#O7gmAGhw*4x zbXr;bli|6}IBJD^!Ot;W2C#y=em>S8-qa_NCn-&A2xZf&8XXM)eh(^w$3`kKW!;_S zzdeJy_^?!Ijl?c*L?~A?l^TOTwzw#(sadq_qA$&O@yR7h@<+|z#7gy5Rcqf}IXZOh z&ojqYOPd0BlKN?xP@t7(r)h(F7UfIfhIS~el13C>-b#=x0!G~u>NXsR7TT4SOZ*qC zK5uUN0-!QEJVd0%r^coAx6b}|?;iB1FyR>^`ucHv!F|1TAHRN821*m81CY(UeK&~F z35t!Cw^!wbhhbZvm6erQXu_PCxVSh!+55Y7tnf0cD@cwgpnWx;Y!7I8pmhjTnOhtj-jD#1ULBI-`=ao7d!2nQfWaV%A%8owcYPtE z`49!iNfU^+7ZRH3+`Rh=B%R{)?-X)tY)=qW*Sij%Moe0kGbz zj$Kc*$;rL{XpfwFHkh{*#cze9HvYY=-zb$MdTIFOFY}}vf=7)xBVWHxU~-ZodHZh% z{)@;s>S@1)Fw7yF6kvK};k5NKP80PJU4$ zZXdn8PC|FYzv0*I>=(cE%0Vr|V)5UG z{d-9&Driy<$fg;M7~#IW1`-Cy*b z%r)nk3;oG>P6n;?AMS2i9|I`sK(G2Ii{~oKhf4s%*{-m~;i{;APw+-fYC=PUY>%pT zOF>nYIEWbT1HT=@S5Ks&R;L}#;Rq;g&>Ra&C#&k}>Q=I{Ggq~`k6VCVS8faJxuzm9 zCn95FG?OQBG55}QX(f;Ejsxkjv6g7wwT#Tn%Jz1(FUbEs4SwuUDv5prOgdyB>^SkM zCbpFQ1&IH9#q${E0MuW?%YRq+Tbpx7^(@gNIT1_D1>9vT$~0=$;9h+<6gmhQC}eMp z?eCv+k&{nZZM|aq@Zq6x?iCr&TY#hzCn%_Yf6A1o)_2)7w`gEK7(5dHe$s^h*Jw8? zKgoAb4W7`LvXB#gKuZ98Y314dD%Y6%iuH!|?b{6rWzlZAzgbK{LyP-_8_WFtYHV>m zZ*z;-q|s0Reydlf5D=a|O?;4=CPjKBE1O+SrWA_*f8SBeQMf7kZ@7f+6+UkZ+v^}}A_Hk5KIL1|ANkzBFlZ)4Ww z7Hm8HRSz$J%9$zHS;p@#cpikV{*^V*m5_U*ZQ#OW^qBo#f65bFhWz*b{Q3eh_r;4B z0>|wH+bh0clyue~Yx5T5bKpIAhi1fl(zlk#P7md9o<@7-PjrR)iTaK;fepjXY@-0J zOA)`$^n`y4dKqgKg1GZyd)njCgDOFZcfdpP?~VCk-vs(1k>jhU_fDhW2p*s4I^_{H zq}|os^;lk}UenwUU~{MuLeAy)E{v2WkC=iafV2L+2;?v_z=yai=FV$b`icr?OZRJs zq8#KD7ilRV3Hz>L@bCIB6kG9{{0^C#7%buV7KJ{Z zyLSK4Ys%{7BF~=WzWHGU3t5Jf&AP4l+v>SdhezSZ+-O;qi96}E-zSWW<#bez_U^uH z4tc#?dT@UrpGd#q+xX#OcY2Y{M@cl5vt?W40RdP^JQ?hz0oDPZW6RgwCKpkaO*82} z{icH|g-`J%vofM&N-@Qmvu1L|%gQ}pQ1|SB){|pvW@c`StRXUwAJYr&=ltJ;;n9N! z!^D)x&(HnSZb23B25MGQOH27;dvmMT#$dUXM2BY?2(9$<5TQpR*LWf8Xo=woMUDlC zDF1j3Nyg_IiELaq;QMl&y>you9_HPpR6ZxnG{NG5&|9jN)-EKP z5AENTq?r&G7iW=V6Um#p_hL=l%xs=Y*rFxNQVqwxI^Y_qtFC^xGaA{L7!>$7VIeVW zVc^cWm2HH0NX9*%b`Xu|@$a%<{!lcGx z%F>1ie-JT^gd=vCL_OdBovv{F*F>|Z>8-fL_KvSb-{wVW(GZY5L-kzG$6g+B?&4dTtM3B$J*Z`VEo&&-+_T=dN+_i0H2{+90~J7-XZ1BVthR*?O6YZ7%b`Xz*q~u4oy;&#~ zx_BVh7DYtiP=cO*ZQF=k{7G!RpsjKH0+}A(H}lBe%@w})68I#zYP;;vn!x?oT{iNV z0eWu;bZ8-|ZvrJ@)318k(_@E)r#=qxcma-d;zBPIxv8nC&QbhtMNO536t(m;izb^s z3mx0hWM$@e^-r96%?CTmM=wC*LjIWoibd_%1M#4xZE>aWa6dYDjcxR7Y-!;xq(QT4 zth2him$iiLL16v@qU4L0s9L|Ihje8lMh-y}MH)d2egp(2?Qk?w9@X4NRaNH$ht~mM zxN~)@4Yx?Z9D`yY&-|nZWCwX4RzSvc>r}oazF2p>MajX4R*^lN)!FOCv<0Sf&vgDh zp1S?MC?jKO9fKG2Gb>p(A%83{$0nuf-G?*MmB=`=fG93 zhh-F=;!XL7;Y0pi@IQ`;<>$DjNP#dU)*1G#&OwvR<{h8kv^ZKaKt-rsW*c6RZ6)it z<`l=lZT!b$k*vQ3q6QRmR_pr>NEMVFI^n(Mniw6jt3&=O$h>?H4=x08*Znp!PD(m< z{c1n2Oa~wQ@VmmCf9YYBAQrfI*LQ-y|$DJ@l zKa_@P)nuMsp(OaPKw8%s;<@@3s_gzuHww4_sG+*zJjVl7P%GtpL89(@wO*vv za|5YF^1>UZ0`A?DPM1|ojMedzRAR7DYEq_`)0cJo7@suX?)ja+#T%Vv^$zpzE)}{F z2QRQI4HzujT;5NLLgnP=GX~OiAzfXYlDp`HOYDcnrlu#KJ*BeQ+oQm~(*%l3f40@( zR^RCD;3jMA{@;Ewq|8xYPWLoNmg*Z%jkZdEaSsmQ(x z&6w1Ea*A*m4X*?u!gm>K6=f-t9-RcqI1Wcz{rV@<7)&GRC_0R}i%vC_Gs@wD?uipe z0*+%B{%O=ezyK_xyLfMogZ;ZJJKxAfSDhspl>^$G+x~XEg-&kg`a-Y8*vP>$_$xMw ztvwn+y8LMlq*k^%Z`B)*FX-EcC)H^DuoYFEriwU-xw})Ub8$4VT59W}-o}i(I8=;7 zE~CT0lhp!%+Ber!UsDrtNl9grtM03jzD2CW^nUYKdzHZ0gb zSg3=aJ_eU5NM~?>g2>gdr*+yuFs*2AM#yfDhzoLY1%W;A|FStRteAxyoBj63KFW6! zt)NS>!O^mNdTNaYgj|Hc`V#AV!7>pHR#u07R`6ci*%`pjB{;wI?SP(dU74Je6kj9L zmHzSL#uEPVOOpPs@A(+YEgCbN_A!i<*h86;?Rh%DJRZr)p7Sk3c70ryY3?62?7W|t3kUse6=cul&(hKsj5itJ>Zx0W@=t!(aXb{v&J zt|%M5&g*utZMZU0?&Vu$J1jP@R(F^t6e#T&*%$l(qC!J=O zb_(s6uIShMG3BQqzA|L?D+AR7JPVBgMa;&!vvP^EESud^8i|qvPU+dvB0qq(T8>vw zW;es~zB?2U?DjF(Nj~goq|Ci_V^a5J7q!w{Upc#r{mOK{9`;#f0xez#N6typzLe_0 zVgX<#q-gI+ppDp68AK#x-FSmB8~=jEoIqrE8X}~a`-$NEIl_v@e(#|uZSY5VGl8uH znRtXsd{P9rN!4_-hI2i{#PNe*QDC6@s+S!K4Y!H#`TG0Jfc=HhcoqBZa`B3{zfZ4F z`LknjVp_o}=>BOGtP+*&8HQInOLI;C7jJ%F2D;v~KPS^2X2{>wEUQmRAb_|O7Ul}! zIohmSPEe<3(z^=BT|<=FNy#tFwZn;MAhYYtP^NfK(5%*HC7j2`|KSU^&SVGq8F%hT zfX2gi_g|Lj?UBjf+v5)!jXFzi`7L9&x&4<~`ZYj`t4j)FFARwQcibpk8@7_hEPnO~ zBO_m^nr_Uafh`S#X@rKa{vFA1JK+A=D=TiYu5K5B>veB)?8q=TE=RZ2h0|zRR_@s4 zi+8#_u#z9mv_xx6PdylQF9i=jZnHn1+oGHGd|n+V(89@7vuU!DVT-Y@^F#av?dIo# zo#w{z3*cG9rL0^LPIg*V&j<=Y{=9mPT3>Wcih-x%^p&tdi67~?Ma45-{&Myc6rl``y0IVh8ybTW zP-h7VxiuNUifJ67I7ss;xoH-YPXtHAvBq#k9njecw@(pzMyCZLv;bZDuUYj)yGaPUJw zoizIU!La7LG7~QF43{#!vRgYmhVp-6vOO?7Jds7;(#X>{Sq7be(koVdbpJly6~B)F z%tU#6qjie&iZ&nwy|%ahAs?#?JQd(X12vkEQ7)>3ejE%@9>hud;ow45Rn^^H#4!jw zHXz@yBM`eCGe4BBM+;&Lt=Ak!H^H2un;s?e|91}q#M3F|>V{G{E6kWPbyc1ya=yiF z8YZVP@Od!9Od2ARL?n46VVRcfMiGw#P`8dGUlW@ID_qkJ^y zl}M(Y%m3Yqixvsi{7pE~sVfi*d>>+em=`XH)EL3ZuVV_TVfGJaDrGZo#JssU#Q&=Q; zo2>uT_q+f}?bgy_Ms{+#gRYF#k2KTJw&`B|rtRNohrmwb=24Zp-!6acan34gK}{D3 zcMhIE+6Y+#pB>cLSVxASM6tomo5UyXT7O-e(!&HIXuqplw`tpAWE=~?bS44<%H5el zBg%~-t`Oqd+hE&~COqDwY4mVKL#cUavD`~(NONYpFp-$19~=9drAZBQ>KS-EVN5WN zj?R=r<1*-{n2XLJl?Bf8GgDKocvfz-+a zEP60cR?b890!oDbEcz(;^9-jARZcd;3m3a|)6+h+$nsi_G-0}p{^XbtQLyX&1U(Ac z(xkT(+SI_#1Q-;yDCpO&^D^{~IRSeFG@F2?*7W}6 z=YRk{K!>N+(amN9IUf*z8ZajhixEa#=7M1(q5xEV24E#P>2er%cyQ8cf|=Vxz+YfF z2Zn_`NFNdQvp~I=$6fN@D+XlL%F0CCaE2a=PH^x^S&e}B1ix-k``2ldXI+^fl?V@>{5aB=qc7Hw$Bok%3su_QN#g@~$ zAJ+vrp?Z7m<~pl)PXvFQ;P}4-oHs@{Mr@5!0C3Oh_V&IxqurF0J3r#&m7qNYnapr* zZZNz-r()-W7$0T_@@Gy^AYtZlyhn=<(&>1=l$oGF=2(aTSR1~vkloOKrU2!ojo z461Pgd{{|C;_xAmCz8@4{z{Cu@G`RVt9$Ft-~cdyq497<-qP@49_1dzg)w;sr&D%cuQY=yN@G0~3DizTVa@6>QmRZZGdFHKonU_DxU=UF5&_a@C8|fal72 zHy4tW*J=|@%!z!wGbtLg`uc6hMjXNMoyK#WsqBD_VUS)lAJh)mJz-b3 zKR1VF?_%opl2hewEYsn>h&Tw|3jlTU1RcUex4h`{>bhKTG`Ur>)msb#uL!;!c|O9&2FsE%IjpLKpX%=P_AdD54u%)UcuIusq8WlKz{T zl+uaW2M$oqZ=)B68_Me?MV?|h5$MB=fpBAp$M$pO1~glHkW$1swbI(*%hI63iD#C2 zQFn(gmsNim4_ho>lu1?9GPk1wJ0A%!+Dgi8bLQQe8$y$nW4EPpds%9tas3?i29T#n z4j0*JtPSVC|7iEq$%g&f@u&oVY63PQQBts;WjxiB!Pks5RkeBS#ycoUPksXu;AMYY z1L#6NlKnVH&*=DV0F+VmOibaBF<4{WNERd?3`4?&0~UY&oZ!LEuO^-ntLNfKtLQP zpN{9sZCTcd3DryunXNB<1mQHsWqS{iev+Gdo54@Ax}KKxn~l1|$8%TOMuZU+em}dx zyovXt8JD|J+Z6hy&O<8<)QvWC)!Qx5!xqcyD66#Ksu|!6k7Tkt6 zH^6(f6w^@cIou2zmCDSfaRJD=*6m*SX9$$Q>i0P$)uZY3@}Jy&HfG6CfOZN4F#@k5E}SpD zpTn(6 zkDFc2(5v3T`X3+pP*84fu8waG@vUAAdlUXvWr#OgDa;51#g)Zm*B5som-iMN@|6*ATP)c6xdOe471Jky*cYtuf z$O%|oUaaE_$t9TjMnoPu55}w7p2Rm^8X0A?x(cBp`ON7>*<-;B`zvq@XDxJHrqAO* zI`iT@;0;v5zT30MSnGtlAuC3Q1r&Qbqd_?q!&hLz^U0I}=Ue{V2vW&N)L*Diq1##- z#$_4O`4ZMm%_j61knE`i^wiYU#Ke4+mSw4$MKqXI*3{Q_e|vuNn(Lf9u6Mt;LGVB- zmRH?<;J3qTv#DPPDaV~9S>`yDF1$Mw2dDtn{Q2wG2f$k>hzP9@5It4@6)=mUL70vk zHDi1Aw6xx#p^PXX&KOL7^t+>Vd>(-I(>`RnTt;m(e%|Ss<_7?h+g!AnajnT8MMic# zKnIt8k%p$VPv&yARkxs-nOXQ|T_kFAVKg*&lp<8v(U=yzMuw-HEqg(94p9@@?g|cO z!$n(QaC(I{cH-vi(0-6~!2HwH2O9vRZtJ z`)&4*7iG%#LIOl$nq!mQZ-Gy0qSB^*_&pO)DwH>F(`Y%(V;G&LgZl_b$^*x^ruRZA z;xcC~r3bZgjPHXc`Mih_M7#<6?tDE<5kSJrv1>sV2-)XR?5;P7VVRbB@sV!9Ydm0d zzMF-vFkuC#8c^z6Mr(*CF?%t?`j_<36RSgijCKt%p|Xf6AxfrPBkiDi`3HNMcybS? z{SalD&N0s@w%{#HE6Z}~4&mG~@6QSbM)esXA)(7`hXpPB?;*k@Q#bZNi)y@jIaOH} zK@Js5RJXa>MQZtE%3oIbwo|*Qq6YIX$zzwg&}4S=zrV|b%GK7V%M-CJAp!RqzF1y{ zyIdQa-#q zlFJ*tGLH`yvmZkLRyT5&a1@&n#evcO+C*^ExS|!AzFU^~e>^acN79@*wIM|GS!= zOE|=$6RRB(B%keX_&xM3`)N5U!XS!Wf5E-EC~JO@K$MJSpMWf+fETQ@9N>{FpRpG*xUZM4e93m5>V1)Zc+gDCh zEUR`6MeKrnF6(1ge;U4zv-P4z+!i+bSsPo&U|7r79O_oz8HYu^hE^M=fkd_7m6F)Z zW8Xgr%0nP~mcwZKUa6^E^u31(3$fVN&UkZEfH8cH=0W4H;?VZ>*zUFQSur__wEmsT z6LOI9-njGa`MZhJR!BCR5$4!OB_@(g4-i|Zf7YhR+UK6o_8N0LH{QzCe6rhXe)XQC zm(6VZ#)>!6*vwTX>7BS0!s}Y|nn6CIN@%6*A>`6fkm#?4#xBgav^3n=cpe8se(oI2 z3=$5yap^afH}wMb?(6Z%eXG9Dq(gRn&jA1ZDf1%YrT`-Fq2-fokuLUv`VX5~Ip_4| z1$?C!#^WyfYB~@J(zF|ycHDuNW!U*+f+R9t1W_7c;S&{78pLrbyygu|O{)PQm24-W zcBhC%^1}Lb-Qsq)GQP*Fq$p4d8?=2SEp}MJc|1UetaK7=e5(d$>ry=agk_(R!c!$z zLK+{5u^6m9;6*p>re~X&U=D2-`BDF+;Fz{({xx=J1{V}?cNWM0OpLJZW#>kp6N{7d zhaT_A3P9^>t+X@%s*95JyV_h#ez%m}s6C?Dfu*cIxsc-Inawyi&uxP*cJyCWr{$Y@ zdl3tZv|aq&1say4MOg#%?PWyhbnwC`OMk5?^}xtih0Ee$lJO{_=Xm~pSFP;qzzwtd zOgobQf*uG))4iF%xiGXU08gr>X_An^N1q zI-ke%XAAA^Ie~Y^XP8>n1w5$;?!?`bZ+=9PMC3R1>9Nm1&ix&MTom-jF;pw<+S+dtyR_-fBa=aBfPU`)wyk82a5yNWU(P!ctj_usM zzm~fAF68Fs*6!_>wlbYuUBzCTYVRpupPkpUt3TFOIouz|3LA4TUyR?LP7+l+xjN!v z$uV9#Yj(Qf~RZLaDp6z)35EiK@wO#5xjUZUgE%M7M=FB-vM=m#5 z&!Z9|U(DDjO2 zqNR{Kc`m8nP#!>lAj`y}n$_+Yw1gSW4d#;+7OHK{GexU&qID(aed@1}=o)dV`k&pny7?qKmN+P!Zgx0XN|3+#Sm_tY_E0Y7CoCD~< zBKwZSqKB{btAl(lTEen|i^#GwEf`rVb+JfERZ|pICV$6tyl)yivH%nSP*4B#&HOQI z+2n%e{96G&*fQ-;qDP>L{S;%_+Y&vtz2q@5{4_f1Tsp<>?{0Zi?ZTn())eK4o6#AR z{5=6emgEUN(paZ$CR7=;vw?NddW$6BCTK38*ZnmS(1=inkw|}O^o#2KCyRHp>U5oC zy-nsaCY}t4V9iM7MYpcfwndm0aCX$L)&vD)Pes-irGG&V%!t^FsaLZs%O?{V>sPn8 zS{XkQQ$IDV7J+smzS2QgWhI_RsIIGDXI#w8q|-)gS!m`lwa~H#AbzoIyHQwS?k`fu zd_J@Fa$`XOmlfJ)>XdCkC>?$?h(V4cOr0kfQZ}a~$0SD(Zrax4cqF_QL)w@FLaT(& zr@kQ)kTrNrkequGS;XNsAQUA) zRz34XD@-VTk>OeoD-ii0jgfKOFNI7*LY=SDj|z=N(r(?z?o@_ zl^+9}(phk{>j+N#Ma%5-{U*>4Z zc8-jUKV!NbTa_!lJnm3#ra;}pqY(I6y zz@`Vv7G0O4U{1Tpr|~(NlXZ6?|I3z|4ett#y%Q!?JeCI*cF;|z1@a8X!ZrGHTY5lq zzN1<4*}l?Tz-|AWkz9R8sf!vClB)hTIoWr4z+uFN2sk7Ylam6VtVA!9K)Ly#=05b| z7bJ*^_@m2nYsmDs* z0RagH&DXEd3j2iWIR_W)auo@dX=Q$K+7S6J6<`7Vm(0goSAGC~MBeKMJ6649cY|{_ z6wCm+EX(M5wob5W?ye3jq|fo9QT&dp7lKB@#9{uQ`C#sI2t!WW;j>=8qDsqL1sWJ@ zz-`W5LHKiq1i?ZH0vqcDU?cC}=NQeTP&vAcs>jxKY%nb?q?bR(@ZoG(rQxOm5EJgQ z;v|OSgy8FQQ2G?wMlN5o5-mSE=3+131Y6fkusYgUZzh8y;aPSJ0(vMYNnag&uB=|& z*_oV_KbI~6s7)2;m!S4ZAm1Zf#nM`LksH9sfo@)faX5HqkkS!Z87WrT}cA%9EaW8Tx&f z`y(PQe~r#QEbD^SqwcAh2C{Ja8*!eocxMxte+*U$rebg&8}DON&~R zqX{YoKd2_7rFKSe-}e5y^Xc+9@_|>x_aZV6;DJ;(H+LI{7Zf-GD0z#Z;?+8!e`|Zt zn9W`$neR)t#Jsjhe5mKzSS4SMI|EOh+O+`!32-TZ3_KQTS)ODI49pZN=K0a|vP0yf z9jw!uGtfX$|FWEl___wLRR z_=n)$nbi;+uU5w;z`+N6ynLW3@i{bBUMDv~QqB+8u7^=f5S?WZPiA=iP-hbT-xk znG<(~Sg7$mKLVFNQdt)!Gc7O6S;(bX{QidfIzXD;hWZMZ58^Co6mG+C=bLmtg-1qO zS!p5^2|rxYOjV6%066^DUJ_=MCHd9a(;mi$Pj_Hbe_wWCL4P@OevyFi99@B% zP)bS?Yx=*(^ZxD&1jo5KLZA~H3-Jh8jL?30aFt(OKXgA)EnmcGPfdY&K?A^e`0m=L z`v^00GZU?adqQx`q3Yq`XlTO1Az>?o3Z**+lplJtz*YL8n*8|DqhGcsE>yIS;&@VN zI>nN}S3B62`usVp0oFt7m1~8-k`S*J>`GKpMA*z*`_+;a4aSb&3C(2lVC;ABZ~ z@FfVPFr?J9vY{zKRm&z-?BV_U*PtoGN`rIJd#(V#vs0Fa*@UB})#N>8M`@a=lJMAI zXz;K~XlKUrlO-kh@K(3X-$2O?SV425QsAl6r;lfM{%L@I&1L zSo7m~YIXji^`87}Mxg^v5YH(xQRz$_v1Ph98*1@6{%2O2Gnn@B?2*- zS0h72Mn*=!53?l@10Xju4!hdEHu=&>4@@Ba!2|jNC8e0E>g7>39bz#6vT%yUZ2g#c zs7$AI5u*m2_-TQ>>BDcLnpow=4E+C*34{Uw_&#^_cWgoS8muF7KS_yZRaQ)Is_$}y z&vGW*L>$sOQG4!%e*06k)Od;d3&2s-@7h8^F*penMOaFt7sjN(Fdi5PZ=ucA7mNdM zK~B_AVoM-YybrUNkq{6Ns3n@m_nM}-O>g=AUF^T8s>Fq|tR@Y?3)RYUfZSt)fZ(O! zOHShs6p@q~hfwjEsc9X0Q7rT6y$=9h$avyRNq|a!TOm>TcXlQ^t!Ur+dcF!Qf}Wla zu=D41r5=zo1`K%SBs>nPd+<;)6Z(@^c#S=RvJoxWiP_VJFahr4%R4v5ajO)*};lq1_2aw`JP~;s8*lV-Tz~RxGI_MD_%Z|`U2z`!< zs)BhV&_(>=c3>ZD5t+Dk#WWUzS!db5mK@JJXzED^`@nTx3 z8BWk#dzI7*WyHt`hwlgR?-lS~FyRGeejo&;526drxpGI=2aHlI|HbZB;4kr#`BX(Ho1*~^^`iGj;5LN3J< zyt*uRG5a6~BRJO)n>AE}=71SZMSU=K3k5BmU|oTSiCgk5=J13<`ujA6`onqTG=XcDC=>o+( zf5{A95wnZ^{5VbvFbzOI#>mJhXnXcMG@)cXajw2z3vlb8=?hRoWlzs(53q3Jj5`E? zSs~G4i1Wsc??s3O3Av?UU`U80c0oxO4>%ykJ)B;^yE^e2^JUzm9!+t`vsIMzYhIYS zXyp5I3CIIGU*#4(7=&q!n@zB3@G5|=pvJ()c5Ok>uEnwgQBJ>8_t)1-k?WyUtYP)X zC;TvR3|GxQ;*YJE?=hv~e0ia)jP=e{7zzpQpkty#r$B}k4mrMoP7#oG3mgdv32`i` z-8C|h0z(K%XVEt@s_!r0*S@Lq*PCYzVTzVZ(ksV_oQ#JGGA)iSDy1bSC5^=WSkTHN zd@<{<0~%w0U`vCwp_E~~`XNIJ3%kn0vthM9-+=9Bsq zMsepX90TKGHTQu7bk}iJY?#(9SCbV6a@+*%B;Ww>0-gt{Bd7V{*aQ_+%2#QSbc)T& zJ%=nMfiKk-rYPa)1z_a_dr&IhLPw+AJx*8n2!GRHFpmaClX-W>Nhy|>r9SRcQBhe@ z>_oP}dM*CjHxC>m0SY@9fS&Ve*ax`km?k(FxZoO~G^mMxqV+3T70g*v23O;wH@DQxnW!BoK_$nAbZ)ud`{y!p7YZ2Rx8*ggf(^Uzou=dk^0`JXE^Ip6R zw?Sf98z9^NbUH3+_&=Q$S`c7hei2J&o`+!fqM}*8pGJrG;X^*kc_ViB5oH^$?f;)I|T#ltc{xGnID(2pqjjgr+c!Rs?n) zxMt2Tv9Toe0qYi5ScB0XF&uTE@!?-vc?=la{y)2X8UpcbG;AUTXXfb}gXz&NJ5pb$=LIqIhz8dRkTc(OJbw zIPj!#iYN=1tw0UC?Dp;39W*x38USOs>3}v|T6+E|D}h+B^alv&KvH@65_$P0I{2Zx zJ04tw^E7T}CZ}3i+gEjVey<9A`{NZ1jQIYY2FSHQhkC%2H4}RwH|TH?W}|56>c%*y zYvrBGQlR^rcgAb-;eoaiYqU~Uog~;@8h|85-n{+@AB;5?PiwtcEUh7b!ePfuZ64LoqpmVB5{l}lvWJKHkZ?9ihIZaOf$81E@OUMEbW7fQ4 zqoYeG&QmUq;b^tM0EMuAW{=(O2-9+N_&88vnf^-A`7nd^3G$phY44fs*P6_EWR7 z+0&t^@85q^7b-E#h9+kStB%FeUHF0dl*c4^xUWeXNL|nR&fSH#Dah+hYw%PFV@&6&= zxq8`qEjb&K~YfA92A2MjpU-&hn3 zYQ)JlMqM|`LHuAj(|W{*rbm|?_aWtB&B$Jlt6Z#zgo487T=C1Kq=^(u|J~1Z767)Y zss^B-XI~3IO3qin=(6fO^TAdFa6F!aL2tR@Urm*rodscDhyje0hB+eYLRU!(D{uez z4p05O^W~oX$+&?6XHukPr@H#bSrXqD%^|5XE(bfbV+ba}s4IP?^?{U~eg|u{69z2` zxWx0$8MK{Rs%C2#2bs73eBIdnYNwUq9RZNGMZW+swtgE0jFK9+7j&4v-+s-l@F49# zeSebE*P39^A?)Cu`#rR@kSO-hcW=*|%tUQ*qw5c{J1!*|5F?f_w|tIT&}VOhf}6Rm zc@T?$Hi?qQ`fBu#VlL<3j_%q|HAHURdS?{lH zFDEAlPw;bu^V{;W<1-X(dKt#$B38Pu>=v)gwCfpLVE<&&8MYl-q6|T16BVU>?#xMg zdU~_bn2M7-qAgj|GG|MtrZB*TSU*I{A2>M)DD27kUwu3UZoqVG?p%7VYmakRvIJ`C z(rz#@dBb!ve1w*k7Uh0uMMce52X?$PtQX&Tc^RU7{@$?P-@tqi6(ytwjJYkYyb;$8 z8u+sLL)KiP*evgp_zv03_5z)qiXdd%z%a(DC2lMWt!&KcclQ@t;^Px9&y*r1e&EC) zbkUyEq3w{RE@y6V#VY_y1y4F97ovNrDHam8T+vD0_%oezuy)aLfU~n+XWqC|- zmA@d;Zb6@bgybYRqhP@U`+cjZ<;?ARVLr+u`St?w zC!~S#=>K;4qx0}HEqb%l(<)js6J7lWv;`!hqIxLE1!pIbwwWM#(U~=>0M*3qd`ntg z$8nMwvJZ@~6mje3WX2;y6{ExVnXqK3u!pl|utvR7Q(1wN*W&um5sEeBU_{X5CeA;5 zda6-&<4C7?`*UzG?#=?do4S={YHV&sui-yoxznwmWCzwtwg*5y4| zdYrg$jjc5`aWkAmmt7liGr$F``C)q7JuuHi z4Y_Whjt^(Ccw^1%<%t`P)UP0Lz)VmWu3Qa3Nw(wK&Wyn%Jw3V=#2*c4fFb?{>clsV zFF6r&IMB_*ApyjLX>S4jWx|!(jNIJs18;e%X&e&;H)b{uJ1-!oP%y}m^`c#H z>gW6Cj_eTeU$Sy_=01FSvBECBhjuSto>Ek#!Ba2Y&)4wC%nWWu@XufIN=PvBJJLym zM(5=|iouUfbk8IvOMbcRSioFPl(gfmME9o{^a5);(?1$surnp{c%FoA4v=*YSwxf`UcM6s})jQ+#kH= z3T^iu24Z$;*?Ud-*kUi>y1iahzX*)i3`bo=QSrHzuu0bga1W_!ihbcU_Z=Ulp3B*L zm?8pI%boOS_u{gGSzU?AQ?FnD+N)RA8l0ca&>jFylfn9Cc!JS-OE;IP84DkKK*hI; zE3tgP>-?-PH@mYlVB=*AgMbrznf+LFXh>7#@lPKwZbth5eHWNA4bOK78G@mIiFvZh z%2MDLS?6;}G}C?f3|Oc?(H=6KnBd(QUqsen)1`b_Ok`WL!<0rCQlGe^m-p5v_Q+C} zfox>NoRZh|_VcB|PN8_da+lq}R|~RWMwmb1913ADO3=;+;*?y}qqtx#7GRaAF3fgZ zIPaa!q`fZyEUhA>&blruUi5sy&!6vMfCJ2*Tf)tpHSTnnnToA^cAbxpgfCxp#*{QL zdA=LxZ~F|8eTkRM+zPCx~7jq2`oCqwid>nT4BrWbWLQWV*$ z@n$xMR5qf#%u&etuFuON-hCb=ka#A;XlI1Qe|F;9 zyW|&r8S{NdScaa-&C&f=#!-HD8?AhJFsIaqxgCU(FilYf-0f2aG{XGsIIO^n!J@3J zU~y-Cy8Y%&RwS{G%EQU2pOwn9L8X4Mcm}cchS=Y*1w+@P^rZrTQ8T)_rG~|OHn8bw zI+WfDkd~U>5sPG8U{@ArjQjp$=%ff(-SlG@i6s)N_a{}EUm7Tk7OGcq@$+~hDfL7T)$a`0FnsR$p-lJm%J#=oRr*{Pey>a^+arX z{0j8%i`VhH&Yt(n&Rj0X>XseZb5QgBKf2xmDyy~a7Jd{J6T~2-R1{1Eq!BPc3_?W( zX+;Ss1?gBQDkvo&Euex}gh;oDq=a;bbfmmlID&^&f1YIAouAhs?yQ`Bb84r*iqPX6t=A+2LOtz~e8^i~Mi!`> z)8eQivuseAKD_t3qW0=bMYIT31d2bp6U(#2O%tWL@XH_+<;i9-9cSyLU0E`8H-|Zv z_3~VAfWY8U3{hz`?IZxV=%VXd1+C1UZvW4m8Dvd?T)}HHk_`jV@TjQGj*!bA|CLLt z#@pIoMHC#4%_t5M80@QwXNQB^4u&w@Vs#%8)JXX@Y-|J@yvbd#ioe=-VRh|;4`&ti z@C0`@@Oq=td!nRa?OQGxoZA~#nv<6o*rBPg5l6l!I$2kssh*lPYc0t7XixRBYQJjI z#R>jfHVP$}>6Qm(TbP+~?EV!d!OJU~Im-6-t!S;vikHlLIySca#kozwru)1W7m3wC z&r|1mR*`i{W8$XhE4?x4T-&!-1(!>PfdV85VMW=r;p;jjRy%AL4zC0VPG#BNyZ1n= zwVCjFWygZ`lSnz+0CL`jx+&{c%ZBawf!iIE1v)3%^79*%XPRvp=;&Aj#4IJqI_gjV zaY$|RYMmr>PK-0MiasWU3|2x!r4RRW?N!on zp-iN0UJ;x8n2fit6EWkf>D9e^E4_nE3Y7jPIl8zs4w-GdjGNIQ_orjyv^}%zjW(20g$EZcJKY)->r*_-AY@- zoSekv<;y@1{S^~Jqq>cbPXF$Of6B3jR&i>y7?FT?Nq#36*L$7ONw`F#dGhi0{=RJQ z++Qj1sbK+0IMwUl2H@nKiC8&ile7o@m2a0sMMU8B>Y1G_3Eg?cZ3s+6#IydbTmN3r zp8fl`Ffi27D=e$WfUU*2Sw12%;)VbX8n3};|9s)o@)q1iO&Y8VqY&ix8yY%c;Jjz= zUelIK|1^uj#PVtc&?E~+ij|FxDa5J&*B>}=_^^Q&mE^$pqM~PCzw#Ln|M~mB_Uzuf z*Zq!xtGl~gqUWJQhrZpu``htv)|HZS2uGcD?o2~{M@uRf+Z)!`PuJ|;x${-&x&4-- zf`?wN-+?dK410O(=}>laaz2Hbxw6P!T+>4xSqe;FURZS0i!jS*Rq8yNraBOw(_Pj800|iweI;6pwkb7fr3cHRe4qwI_j1A75p$ z7sBJY`27?!2(N(>h)DB=Z4>vTV5qBoZiv!W_zmb_5;T%p7!7l z+1F>;i{ZiL<>pe+($eAs$HvERPIM7P6v*H^?>v0{1-VFbY8AFGaoNA#E3hAy;l^L= z)UP;mviPU_(S{KG+_=Q}+}fPDk#1I&FNt+AoBsV|Jg@G>xk-3?ZewRxkd|J%ol};_ zpS18m4GkegpP-;(hydPzg*eP-l5ch4_z7_?@gE}op2I2cfB+XyPg*c#sZlyo@C{x0 z;PzhfN~Efz0agcC7Op;W5+{M)qLh=OON@EV4Q_<_le@8c`Y*9aCHMFD1@ke+CcU=G z7neVBnlv@)5My-q3sY~16$kgby`PU|zcFcJ+`E?}=l~yi-colZ8n*-y+qvWeVvpg> z4OHr)mqBz8GBCuKy5f6nnEg7zH0A7HF)sYvEJG79S+NL z3{Yw4Yxpdq=-g}=bZD-&@{_A=N&RJ%r>eY%$RDJ?0Ta|7`z3CRfHEf-*!ID9HybMT3?^L;q6PY<^d za{DQ_(M=*gVG5tG$NU*-aYaK-TvAppT(sUqsmGIRN;2+^ zD`3wlD*9NQf)WWdvOA+$_OHZkX)G;;=Knm~BPv?lYy!noQiZ&zsNg;yqf38P@JLH~ z&Bx_;@Qjp$cnht>14+byb-RxrcSTOn>H0v2_P3VN(mtQoH+yYs${vqDZV!eGhxM2% z{RoKfUtM7O+ip%p--yq*YaD$??ErF$8JIbu5Bk0xO>TbVyBef9 zU(&m1X{HS}%DHfYi4xcWPHfptlTm1NP}a$C4GptK?efIuRw$o6-@g_w=_NI_$F8mh zJ_${4-&2H=D%&mu-l4D!PStLWh!)zYnLAU?(c|Csm7_72&9;_F?V;xYHOK!~} z|C4R#-aI^N!VaVvHCce)g#J_)f7Z&{W*fnr{c6CqF+t3GJKw+A?@#Oiw*uxX?+hoHfKXAs=!Jn0NDoNea9HA?u}> zDXIJS&@(~v3vl?u{;Kz?M@GeM{v3c8rpJ%+a=hEL#;M)(6xYnvON+!}fP}p$D-`-M zjkx2KEqi%f6(;XV+kFga^}WUy?1q)#SNTR<>@I=ib2(Vi05z9I^B8!NbR| zsHi+Iy1iFqPPo9^yT2klT{;k2EZE>XIca|SI}K?T0*Bf!SPsKc#5~qwsQ$dNvMt48 zwABgLV&P}65zA-!_P(XEPPN7oLiOP+^bE6Bw#O}o;J0At;?n2n6wZOLAS^5#;D5~d z@za3p7Uv-vKRdW z&Y$U#gU`sZ3Wj~M02~=NuX7YFuzyF4Q*|+PRmEvXSaaTLO3JBkP_J4!Pr@H+GeMo- zGX1Wr*sP)!qi#$X|C~v}NWNCKb6&n7^7=P6c+fmOn^@Clcu|qHuVO16;H|nc^`5~m z)5DBB-zIpr96P4qI*6+lm6p*qP!*Z0fDmT;>)kZ$A`_~Citqa>Q+=cfaah^I&K>Eb ze+R44xM##eDw9u2%oOw;xFg#bk^{d#TK(0`bQO;ubLpK%tCggc(BO1t%DX%7%wvd; zg@x;DW82PMzD$R^)D>1_@@vojME7hIzlLpoCpB6R;<#=wXp6aU`U;s%W7wc2jjYB4 zKOd;1nuHQ-8R_UwK|0l-HtJ^kw}-+aB6RHRv?tGaM3Ye~&D3&ox6rYl^BcZJiv9}UbGqqCC0C>ncmN5e@U4x$HthRhIoS{ShrZ6= zgkm>0**H*_sG)ACob5#goj}$WuNS|z5>S)Kduzg=`ZBfB(<*0S*sWk?B@FKa5?tPMlNtco~WDHjFM9$y3ZQFO4mCf}8n}9s1 z`>^<3CeC#`X!bqb-zaD<6O|7^&qR~zUIDA6^3>L?;T0}9#B2Na(o$Umx;(<#{C)yy zA)J~f4Ogjcs-Ivu{P5J<N~HvQU3NQ-CZd5MJIu+1sy9JWEcVF}c&2u;=jMrnjx# zb<;G{0LgA=Nx-=*(LUrv;CX53CnBd97?PQA21GUaa=#?)`~90k29JFEnWr@CcEg3j zBiu;Yo`GOs04dfRTA@hK8#ZmqZOs}W4khNkTN3lkwNpn+3m}@?!z)U|8fbIu}paB%9Zb9zjLDZQ zjeR?n@6K+(UG?eO;VX*r?Sq3Ct*n$2dDBx1~b4%oz zj#2k4y8YH9JL_6#-Tslr{A{%3*t3U9DA)dX?^qP%j{8e zq)K=EOxy(e;mxd~jDW}lR~9#6jif6wm>OC_x|cbRM2TzXd-VMISQVwlbP+>eJk3a4 zrdgm@_*2CzD&G|(qrV1Rw)%)R=yylQcl3SrP^(56^s%zemp{S*(GP(Q;s{_58Ts~_ z6VDLJE$`iHuRXsVimcjGL5V*Kj5smah|?~pwpJrg_bpb8s)R+Bk{&0aILrU)FL9i4 z^OQy@`TyK?&E{n-!UaDzrQK2WwS}#_! z%%sO5RwbZJjW_u;3R_^?&9gBBsPYRpZ_r3F_4%~46Uc)MB+_Ktxybt|R@1nRu z+Q%CdZ#QQeDHpu%+t)ikKYaM01t%~9u@_RTn!R0NIAr|MXSpa)|12#1d7ORu_o!x| z7hGz(O8V`dySlEr$1mK`-EEyGddr^E=h@VtAk+nZ{(9pyK3)-OXKMe|jK7_!;-j=T z;eMxA@3pzr4(kQWOV{mUrZ?it9DS`2CP80x0!cY*W!W}sVMGk#TxLYHLt`v{^3}V4 z*c{&spMLhNUk+Zj{UFZeT zNSY3F`)8WX6nrPb>?SrKo$TAa+cC$98a{Hwr$cw(8z%>8<@M{=x7Vtg>=zJ7Y|H|O zj}ca&SZICVbSw7a5%9%%Au3)_UhWAm(lMaq)oJ@IAae(ei^+wy6*jDIq2Mbi2S?-_ zvKKZa!{J|wF6TJ>CDAZlkL6Rs?m~&2P|MW?4hODHPr+t%OzQ7K}Obq1ck+#&rCMUqbCWSvhXClyARtod*|hRQIx$1@Jn- zij}-4bPNp6pFbZimsp5Gq(qyGOKEdhI7%!uwSD??twk(Y%#s^>h=*b`CN{!PuRF0$ zqtk>~V1|sO2t_;J?Kdui8mfM07MDhe*h=H`#Q62m@p;n2NCxQ zK3oo`tcTw%c&I=^Ju#BGtf5f`OsG(DWljOq!*$=4w8#wXRatJ z-bm1+v+!qKf4$}Ab55U+8gVE^B=EmTQ&Oz*QKME{4|X%|?&tjS&W?#T*w?Oc#F?4E z;^9P@*eDk3=d^Y7^$!yBRbh-0cES``Kd_Tg7>~Wj*8E`A)q#1MH+(nXA&DWE7{ybZ zm}azWwSGTmjn`x}W71=e6#+3I?AlBj+Cr1eDSES>lAC?M-cU%>H&`!D`e!dbkzu#r z;gsWu!kz-`pvL13AY|-6gn$CMdJGfn$+2A8;Dx_ukJ$-l&-Bcv4?LGOOmiA`kfQ~X%cN?*9=YH~!f>+4y>`kvr#Ba5{mVMi4`Aep2a#MB_v(bTH|lb; zD+6!w7}R<7@qnEx^!URriCK+lUATDh837y2!WVmbOoiI)%zQ0$%R`Os$8z7{7JwHt zxd3d|vzhYy_wOFYp0W^C?aZ{SGZaAGpRRo-eL`WDFw~Onzlq_<%CNHf>ZC|ZKS*oH z%hTYw$BLZV=zBhWfQB>G`=UbK^wd;$bE?_N+_rZv&5W3zc`;wH)<39Ac+++=RWOMa zd|G*(74*{I??srm%eY-!;u%zbsc+=a{{munB1_;qKj}d$gVgkISi+cpGSSwi(vqJI zxI5R~if~SgYJ)tFI1`w7!LR(nW^*Yd}tEm50q_oSQvgK zX8G5=SMS&E&Fh@_e4@YtwGq$cM6y;8i-ygDU}q~SH14{IFQ&o4>0?4Lhf zVF9Atj9@B`08D*I*8^};z2I|$(U|5FmK!*yC-hVx^*2R zBV~wKhL?N%H61?2wcth|4(B6um!JqJA(m$gB)<|kYG!*kei3F|qlGHw!C-A^hlYBw z+M&IBF;NhuV`bfP^1XaWU-ifB5Yvf{E0Z?2cE)pG#4#s5qTh$wJjd?AWi_>A%^$UY z$^f$KS4D2&QV895tUf-?xCn-V-n!Q=&A;SX>+?QRr4OKNAsU|0 z_>2^YrP+oQhn*Ld>abji96BT~h?4i*Fq=)^o=EwS=Rl1tTg;VwdodGOT%O79eZrve zO^avi&YgL<63o+S=jI1vOYbZXW-q%kXjrX6CwKbH8PZI54y%eOnE#8I59}aYO)^uH zuPV@jc$=xad(rm~uo$S{g8o%l4alEpetfFnZ^-m zxNz_OKBc?qk(N5Tx+Tf!POaa;>0@`ROype-tet10u3KaLGVfpn)&Heta$4f zC+Sz%U-Oya@b#!K=RT>@qz2BQfQr{C zy@fr(nxxd*Mcbazu&V68j$sJ?rI=Q7QLD9l42H?w4Z2}uz=!X0)@;Wn*Ztqkk1B?Y zjorhR)8Lf#$>Gsoz^p80p@el9Dop#@2Lk z_CC&1Am5#hqziFsD4J8mXPWX8lbgX#?uL7;eP;gkHp_#1g=oleiaCAcIq|OUJKMKj zT9|lrxTr*y!}d3q+zu~gCml*_z#>~fMPD}3Sgl`R;L~Kwn(b%nqFM`I5(gEdwqBls zo9+)6FQ?DVrPlIKeb!lGw2JLNV~@(+D3reV$@Id?Bl_-Air zW0S{zCEV<@2;cCRjTv~G$k1Zgl;jQ{cn~LltSpwV@Hi}588~xJMc|VKDz<5na2K8a z3%F?q5KDua8RPlP!eU}nq^~iVCfCuhkd+ttzfit@n*OpjRWxI^!<9_+Ks(tupbiDI zT#WI4AO;u?|B49x!%av>aQ;&?o^!H;0X%71zBpo;eY|acUw>e@Ze5ffsJ2n09MS9Wqbab4yu}Pb=fqgv1 zjYXu=?id1H#tHJ1qrw~fD9r9>w{7<{O}fOTLAJ*(YMvz4w>(!)@L3EglLZv2Hu(n+ z__33^P75oUC86TMC>d2mu8>HyDkdB7&5$MT-;bNK0ig^KX?uS+*5VY*%ny^*&fcS4 z<;3!FxGsmIs65&2_RX@*zHV``LWcd_hY#ndx8jE?-*9DJeMRNU1^x2}b<4V-@OMg2 zZ@q?w#?hKg@=Lk!$KlD7)$$n3)=j5}ZUBn{xRWwBckx)}j~9E+5GZLAZoRzL(Aaoc z!}v#;yzbuT==GyBn!$}x4{y>>8nvnjd3(ftHa)1}i zo?xPcU!_rU!GiPb-3@bg z{%cU>YKzwH@ss3&vQ`fQta|ydS|Lrk)T99P-%LLTG+On3Ts1b#cfrq80Xg6zVzMoz zuP&CIg0j8Yx;G?BEwwV}jk;G(`?*w5>J@J!GJs7O=bfQ=<7z3Lc9|*0QF=e4nP>d=b$brM#@@%C$XveuCM9lg+3?BDivh zR)QoB*3z8m3erAw^bJqjy6!)mLv1iVk03ov>-LPGpU5QGl^}qw49;uzbF;M-H`6^aO0RB z`-UXJ8V0^=m#p?aiy~OZk21ePvfYHqS63c`=8ycI;^$d4Bm6$9Bg&Y2V|TNWGsV4s%B$XMT^@ z9iN%`?7jPOvHfZQ3*=Gw{yl!`0%fE%)0s4_=DppgH7QO=N;;@8T?D@qGjbs{4|eA zwSc@b*_UhZA6lh+RV|S6z&u)n&r;G#TscD@#P6ztj6i-ezS)Mr#i*aSeJ z=UK_;1tO(i#rE}pC8$f}oJiI|!Wf*Vif}Oi0s@l94jjE?Gl#r;Ak7t+K5j758znVZ8e!AV7ou4!15}V12ypG25Bp z&Y=b~OaUw2D{KZwai}>pcs9j~)HH(d!IrCRl=!};JU14BM}2)CL^H*_2IZbqoO_b! zggX@Xh@fV(as-FT6{D?Sf)fI|oNdI4I65Cc-*A%h?7AzFT5CLZ!?(1>{HTP8msl9^ zvD#PBkp@=NNpg zCN-V8uVIB^=FcI6datUKs_dJNE#4D^s zbaeNhHyqlNCX(3aHCP1;&_er}7G3#ew2yHR z4AHP17QmU*>Fz^V>Uw*&lyXE!(7|)F?ZVS1_kJD~!Wt!MFEcyWt4aRWLlKNR1)J$x zKgjCLVbWt*zZESC8sp#Sg8*=oGFOxrgysu{0uQgA1_Ps}b=tZ!s+Khhg7f0tlUc%mH`;HxjaS{74pV)8`%lBZo={Gz^?ke0;2x&z! z>Dh$@2OH$+;ld+0-7iqmQc^HtbgR&d67cHPyBB4#;U4HjsnPRrxxw=I2)4CC&~;*i zheXOHkIZ?Y8)a5dQ25FhPnrGWQ+{-?aanMj{BDNC|2e$zaMbkCG`Dt0#os1pNec$- zNl8g-sMp?~Eu?cbHOe5G#C{FeQC+<7^MZk49oC~e(zvyqKD|Fqy>8vTv0ra?k@kq3 zTwMMsDWyB;cf1HuobwdcPNj4F-_xUH<>ez}(ljN&+(1#hVZ+BXr4(FrLPq|6iu&R0 zjtCQ2s8&+VFKdm-KXbC(d(CTurEQMy-o3+!PD@+c2`3e45UPh??&T=$<6?bp>BhD5 zDrbgqmi|fi;mwS{!chL=RVXYJK9A>#lzKDNNU3RZK+R@jqco;PiGCkF(+IaMhi3l7 zr^N8oT>4rG(Ib(2V_PdKST}6g@cEqUI0C zZwIFi#-t0|&nNtCnCW&Q)>&F|924?{SjwRdCsDDgsj080p-JnQ_~mLlV{MZZqtrIp zdsOS2+){sI;zhz&*JGVbdvb#bRtI|?tAe}lK|@1%>FbMCt^YNW2?K^uJD(wn%Z_-j ztHl>cR)x3uyzWoz!+)CErD=4Rxk(yka`bh9T=8RB-;45`Jz3sd>}``*Dl0Efwi-cE zckY}joLoV$KY<>7iw2Q@lza|#NhvA9Iwb+8baZqQ%QG`FC?wm3F7E5uJH~L`0ulK& zVo!BSQF5c$obrQMez!HSiFEF6+r1#sV@JnqI2au zTr2PfUvI?FSid!5*FQ;@e{K)!|8M%kuisSnC?msg_3B;zvn4(!eVK^g!^2A5%Rx2F zXeuvcHWn8be{ahk&}hfs0~(82+Afw}Ae)T5ruTdoz!a^?KZcVjVBlTa#LYQ|&32I> ztIa}|LU0{JiGhTx&A$ue6L6~GHhAK~#X}0|*Cs|A%}_TKcRXa|3#xK9|R5kc?zaaN@}_n_8?IBiKtp7<$uNNh^Ib~IU1(yUv&G{ zQrZ@*oAW*B)3UP*n$|)}#?g@I+ktM->+?k)wzh%p?kE2K4DS`fdP)K@r+JR=w9Y|n zXMI(C;x^)FS74iDO~i0RBhfg4g@xb*xxb%a(f{`o49@s)QjVnskS`mV_x$Bop^{D& z`ypfLNiJAYyi1%9e5g%-8yI|0> zradF~u!z68i)rUt+59UYz;PTctZk(ev*l7-68*hhyb<#(7yiTl5Va#t-EEp#!0E;Y z_+y|m+u7OMPG7E3pRY|7PMp}2GSecQPTkSor8E2@Vy&;b@XxtNKCjNVoXt;~TQg-} z-?-#s!B6bc>b04hS+90FP%38)4!O2c>~qh z-K!c`+~Q?kC+5ER?B*)NlkaVYc0(%S#=msNEv9p9jzAAE5|4vDRH)6s!Nbzm#1yTW zrq{8~?(rK6Y3A|u|L3#+eKzOhY$?lFi|D}k`zQ<07?)}(+y9U%&k;TYE$L8qJC_%BC* zRm>02OY3tw!DCnodK(_zUzxfI03*ZA-#1BIvzF#_gPLfo?MSNgmoJe_vDsmg7~IHh zeS_Qi{Lc37~^)m~4?k zlyXNHtw$?GKLc`IL2=l1Z=YbN_wTu!sJHY0@e-5_L-7r`f#dLDS3LFKLqjEnmpPcM zCQni@ivU6E7RYs=z+w$F&&7+QZ+lgN8c`C!3n{((U4?W=CMhcq7euVac7r+|(R{T` zj>`Df_s1Kio`06_+!9ByjFR_F)bIcxNW8hPz`NdJDI{bu(pWT5UxSrW1jthS#QvIi zf9cGhx&t-)v&3y@zTE9T1ZNgKcvIv)rRj_eHU_!5YH=!-SgTd@=^B#Db0G9oy1KnK z?g|)TzWe8#U(uC>`8$c%Nk~Z8O*as_%_yiLUF1c!8{}jNct0-%OoU@XID`iz0*^Cnvt^S%^oOCYYXq<&m}HN zb?yC!E$t;LcE4i{`bnyGJQLXfo>i)AZ6YVBl==)QkcHu#Sjz7Ymff-@; z^P8&6^XG2~bv-f4;^JaG`qT48=dt0;=J?^mfwP|Q4S_c*R?oEtCKdH-KJD~k&(V?c4@8fh`ro(n&(}t& zpTWf7)9`!l@o4pUKgVwrHmk8!hQyaQm`F0d+Pq^Y!|%TKbAaY3(2wtlm6nR|{%1gY zMHh5an3iz3u}g-Ejb`{v4b~ke+j~9?Cn4vke*O6uYoq!v4*`1z#OCJa9?d6Cq?-D* zvaig_xZ3!0ou^t&RibHYW3&2_%9V|duAevcR+UY5R)^1`R)*|?wxJ~UTt>Q?Jl79TIJ2+LazAiBN4Bn;*z%?QtB7wK6A5d@c^{Abq5Ra z`15B2#m8hh0I*K4!rw@p$~5`}yLmMOq2q{fo>P<@;eY$qp8O9thnq}CwL z?b$EzTGC?pT4lucj;QDdPU0YA%`Un?C{q1tN$u*nwQJoN zCEPqNdzFv~$MoPCY#c|ih9YUWG&^cocki5-Bqrykn@mJ3M_4Gx%-Z-(-;J3^-ekF? ziTl>zYs$(2bLHb*oj+nc-hmF4BCIq*RnMKky7THUiKtBL$VPw$CGmd-_TH3Pjg>Xs zi4dPv;HelrXx`#}82gW3zMxtM`%9`aZXaG7G>$KWi_c%Uu=l`$50}T+t|iubff2cO zXAhqw_Yxg|@cEfR6K>s4JT-?k00@(18Ag3m7nac@aUMB=#=b30V3+$ouKhk<4v?c_ z!0O{bv&QX$b67A@X`aM3*_#JTH^dsIs}w%N{#&aW^k0pyQYTTwO8rp5wh$R?qFD2< z-9!-1m?L_Ef5bfR23km^HS6*l8@)7}mNOlZJxMPb*fm4G=Cj$}Qshr(8n#<9>8xnN z;^ulwYsx-+_KbA-9P@Mwdp;I$#!7|SekB?xO^>u(gxXFO`^UMfeQ7_0>}KzgvzIKj z+5IhPmYrj7at#~4KGCmwAJ{ZLHr7u3$~gl7021l`WGP;l7?ty$MA1Q9t4_^;DL7vH zquvAsK2lN^ZZN!l0!W6@J%5+Vhfn4Pv{;!*oHgs;pjMZLog0!i=i)-6viEQIru1&I zw_H(8&2X3}>N^-BILRpA6k0!?prkz*`F@60T*^Y85Zpx1y_;LY14L+~Ov~!j7JRqg zJtO%-D|1iH2kUq(N|cfKckMJ#{BbQTiwqiQ6_mf+TLpIfiLrJnCD}rxB)$Mae<)peU+)>oH%=h}*j!&OIi|S6@)NLG*0Cy_cd4Yel<20XJsxl z5bc!SvKpB2tY5Mf_QsQ;j% zZT7?tKp3yNuvz5GnYM**L-pb_txqt@NKUdz_oM+*#=)UY&~DkX1za0)EIgwAak1UG zjq3HMPtT7AD;_v-cPd2*kSjgVZ|DgTi z(yY)XqK4KjT`4Z$7c$j31sUo9wk_>vhv+S4;HpGq6t*Tw1DondNQ6+Pk0_TTy>OQPHPgp@3Tn_K;+EYr+ntfpoNqJeZxq zD@CI!@#9B`dKeZ7hts@o$Erfzbo3y^{wvenWk za4SO1U{#4FA3bo^!AC=@4UaPQGu@8R4QO51JoOt8!CnD@Et*abMa*=d8gd4+B>@2e zh$O!N>4m~$+^mexmo*sN!a8uqV*235O$wdt?Iw-q_U+@peKPpD8zUVCs#UV1N1uIk z@*zM^7@jd_$3j%D77r%d<`lPG0^T#rORJ`)rXocTeLln_E?UWdmq%E5y;%C;`3iDd z%Il&QmJv>XJqC1rJcpWnD?5An@$wV7U>uZ}J4_#kh=%{in$Jo;`~uH_;TSjrR4Zk? z=T}fw<#YN-8zmww4YEexSUHH5BZ13Jdqg>d>I3wuY|~?F8IEutTG!s~?-%Hs9Jgfi zEgV5ex9p|2_t%htPlqm)C5%SZ+)A+9^1T(6VsK{izQ~7tgA&DMq5DM-6%PgdcE~+& zbjgM*E+u6{#Jfnv>lS{mU+?}d^Z0kHoD3O+BWMxJB10ULP1?$;KN5u)7|u)CSlud&_n$=dh$FN1ZQSg096!Sz6_bsf+^ zpA!Q88Fj|32~W;Adv0YF4+3z)DIZigK`Z$+#Yj=r$nWSIz4NkE6?OIri4TqZ_k~Bh z&n-kmNFn1F5=BLCzKrpMVf`adj)yttFECJ9gT4RRs<7oBKxe@BJ5GMHqO!6cV!4;V zE@8}nbVp)0Tg?W7IfxxadjHtZpF3ycI$JE}jP&(?vSRw)fqSqR$2q^CO?h_h)_=6yWTCw(l}>_SclLF2xJ~Rb}U>%K<2eK3{jpVbF})!)FTb*PTPHA!iK@6ZC()c6O$IZ)!Rw zHXw8H;wEZZmbZh-5@1A|noTeY8iL;cn*yV;`+xd)pU%&=_jMI6+f%2h3;haM_cnIH zg<##D>j%5S?B$E!b7fxm`^!j6zq`T8TuVGd6XwI2S5aU6doo=Di04w(r%nUA>+^zp!zWyrL?h5T01{~+m0Rl^_OJ#?)`ov<(|Yf-)n&W zLYEe3c=WHZpbzKqP3@0lCe1E$pSs`H8QCLoliY>XnNpK9;dYmE2br{%f52pVC~$Ue zi|&F)2z;imzS2{wSLmdp&UAP;v4H4}^ZEDg#w!RosCObLoZ2f^*Dz;pU~m{rL?-K0 z>mwRp3;Fq`?Rdq+MCe#pO8ziaG4cJda|&zi_!J$z|IVPGe0SHc=4v7Zt3ZSZT9>Zr_2!Xho>HvgoqV9DEFIw zrnY=!Y2>+!TG{jG6TFO1Eyc2KF3}rjFIgOxs*dme>2KCDbv&K**x|$dyvxhNanm!i zYdpBDiZh))$;5D5e>Ayr*~;FuVpC3-A9j`9W%)o7bLfUyNZrnQLGZS z>f`zSn`qfCWNJMzGuesW>1NJ%>*|`iIE&#l2X)fqV_IFWG0UdKsl$64c#$o->IV-t z;X2++%gT@o z8x3dfUi?#I3FE%S-cALI@)s?(q9VnjQsQSP=&5hx;ws)MrzZ&rh&&@tNVIC(sKnnm zpIer*MO$u_w6l_`*p5`$9jq$Ssz!9v^2YWUuBWcnx0}3Xyf_<&zQnAn@G>9Ybo)TZ z_u2c}=VdQ^vCzA{!(|kVx$#^I`=E{biD0-W6 zp*(?W{;V70DP`pY4i32oj~>khr_(1GHNG+PCi7aQw&CW~O)@gn##z>JAB~k57_LXD zip>Gp%YXEoqYS&Q|m@= zusW)5EG%PxZI!Pz(-N@|&*A?{j znMB^3LNxErh`HJPP68V)wye5YY?*aRYMuF>uoD2ed2R<#DnP;kJU34#uhHnu>OZe( zuVfSX5(%($o9iCUVPlOeYPT*&v8t%JB_t$V0^1f$)$yS_HYN)8WTf^ld(r-ksD35l zm=pIbXrS}eL9tV3w8iuNI6*J+e-V<&Q6|rwB9_!Kvc|WR#%i5MvV}6v^AmLC{;6p2 zF_<}PZM|00xV|v|n9%*Ix6DV=lC;zALW|PEA}LZ^-A4%v|FR*XVcqNwKOi8UR->q{ z?(P%LVQy~zN*L<>eIFc%HfMKt_q_X%S_*M-xhMZh_&n$gq|^(%qnpiVLdYaP(BBtK z190xmjbOh&>b)s8xAfV2dU}HPbKsSFsxg=tVMNv>Mc^VmefrdxVVYdshwS~ zXD^H?U-&txpP>IebEEZ3)6NalNrfI(4?^h zl)57xZ(hINN@=^9MPHC;t8~cM_ZsL>J^=sxXJ-%cC-a*PR3D5_6Pu6hR8X>?3K``g zG%q}NEv;Sn`ST~WR{hvb`n*O+CHlhkW-Ynavzp2_^n!gB`7Xu@;)oqOd^nnQ9R>Lh zR2ubaLA!8IS@B2NBwFN}#hW!J*UcPetm%PU;icKQf}0U4jt+^HS9K{0Ik>U;d% zJEYsG0G^8%F6_eu(fhb=i3cs~0Etlo+wGYwSNd`@_bdv5^I^PT0LB~C8DlDi?eTT5 z!C@&+0ZMrAAUF9y6liHDvM&@{TThwD`DM*>^YT7iA?y}6kip%DGyihiuWzsn8~gKT zpP*p=TV*jk2Rf+sU}voWx{3AJQ}yALOZcFGB95CH8mC=7T@RSMjklmdPf1l@eBAsc z;7Rok_O}W5j=9$eB=Fa2{1NP)xH($=)aN~Q=)?QF=Ag15j%fh5nRH$rgpk6t3<&L? z$T=xMY14c~6jkmf4H}+1_eK9@qg&u{3`qGhmqDr)aafe{+;9?7XY@zZzGb)B#}?pC z_zutGj>3v?QUeFsb$VBPeEjh}IXSXnybuy#ptyFV{eHUEu*LiIz{u60prG-wKj@^G zGDl7{tFrVCroVWhWt>S2(}ST$L=?m-{|C7PbY?`u=*D=Cid%h8sN*q1X zw6~xE^&Zpx2M-_4X_K_NWWHl(H*Fe3!T$Vd+3EH9)aA>B#Jb$Ekpcz(j^6_pG*0dD zke5eE56sv8eC--TJ-ye6Ss58>DynWMqVC1S(5yI){JaAU;tyjs`k7Z@Xa6%uSUAx~iHWH~s(pOyL0*fxA|Z{D1~>md6QUn(>CT5o*n%FBpON^BoQ3`8m)GZjf3V2E zB`)tjf1Ye7Vs3#b>7!M@kBCpco{R9XgTcSufM@G2`n%CQ~$t{rmU3f*zdT<`^2v z#;6L~qiOZaH4u`yHPLlGX!$?1#J%7wo6@O!3sA%&=PdTE3J(t_z5d$K2=EIE@>(

{8+4~3YRoDi|;I>5vfSY2JM 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 CZklTV delta 120027 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 F{|1+C7bpM# diff --git a/frontend/src/scenes/trends/persons-modal/PersonsModal.tsx b/frontend/src/scenes/trends/persons-modal/PersonsModal.tsx index 853bd493df54a..4b7db367d18d0 100644 --- a/frontend/src/scenes/trends/persons-modal/PersonsModal.tsx +++ b/frontend/src/scenes/trends/persons-modal/PersonsModal.tsx @@ -77,7 +77,7 @@ export function PersonsModal({ missingActorsCount, propertiesTimelineFilterFromUrl, } = useValues(logic) - const { setSearchTerm, saveCohortWithUrl, setIsCohortModalOpen, closeModal, loadNextActors } = useActions(logic) + const { setSearchTerm, saveAsCohort, setIsCohortModalOpen, closeModal, loadNextActors } = useActions(logic) const { openSessionPlayer } = useActions(sessionPlayerModalLogic) const { currentTeam } = useValues(teamLogic) @@ -201,7 +201,7 @@ export function PersonsModal({ Close - {actors && actors.length > 0 && !isGroupType(actors[0]) && !query && ( + {actors && actors.length > 0 && !isGroupType(actors[0]) && ( setIsCohortModalOpen(true)} type="primary" @@ -214,7 +214,7 @@ export function PersonsModal({ saveCohortWithUrl(title)} + onSave={(title) => saveAsCohort(title)} onCancel={() => setIsCohortModalOpen(false)} isOpen={isCohortModalOpen} /> diff --git a/frontend/src/scenes/trends/persons-modal/personsModalLogic.ts b/frontend/src/scenes/trends/persons-modal/personsModalLogic.ts index aa1c987302506..9a45b2806ec7a 100644 --- a/frontend/src/scenes/trends/persons-modal/personsModalLogic.ts +++ b/frontend/src/scenes/trends/persons-modal/personsModalLogic.ts @@ -50,6 +50,7 @@ export function wrapInsightsPersonsQuery( kind: NodeKind.PersonsQuery, source: query, select: ['person', 'groupArray(3)(pdi.distinct_id)'], + orderBy: ['created_at DESC'], search, limit, offset, @@ -61,7 +62,7 @@ export const personsModalLogic = kea([ props({} as PersonModalLogicProps), actions({ setSearchTerm: (search: string) => ({ search }), - saveCohortWithUrl: (cohortName: string) => ({ cohortName }), + saveAsCohort: (cohortName: string) => ({ cohortName }), resetActors: () => true, closeModal: () => true, setIsCohortModalOpen: (isOpen: boolean) => ({ isOpen }), @@ -193,26 +194,43 @@ export const personsModalLogic = kea([ await breakpoint(500) actions.loadActors({ query: props.query, url: props.url, clear: true }) }, - saveCohortWithUrl: async ({ cohortName }) => { + saveAsCohort: async ({ cohortName }) => { const cohortParams = { is_static: true, name: cohortName, } + if (props.query) { + const { + limit: _, + offset: __, + ...personsQuery + } = wrapInsightsPersonsQuery(props.query, values.searchTerm) + const cohort = await api.create('api/cohort', { ...cohortParams, query: personsQuery }) + cohortsModel.actions.cohortCreated(cohort) + lemonToast.success('Cohort saved', { + toastId: `cohort-saved-${cohort.id}`, + button: { + label: 'View cohort', + action: () => router.actions.push(urls.cohort(cohort.id)), + }, + }) + actions.setIsCohortModalOpen(false) + } else { + const qs = props.url?.split('?').pop() || '' + const cohort = await api.create('api/cohort?' + qs, cohortParams) + cohortsModel.actions.cohortCreated(cohort) + lemonToast.success('Cohort saved', { + toastId: `cohort-saved-${cohort.id}`, + button: { + label: 'View cohort', + action: () => router.actions.push(urls.cohort(cohort.id)), + }, + }) - const qs = props.url?.split('?').pop() || '' - const cohort = await api.create('api/cohort?' + qs, cohortParams) - cohortsModel.actions.cohortCreated(cohort) - lemonToast.success('Cohort saved', { - toastId: `cohort-saved-${cohort.id}`, - button: { - label: 'View cohort', - action: () => router.actions.push(urls.cohort(cohort.id)), - }, - }) - - const filters = fromParamsGivenUrl('?' + qs) - actions.setIsCohortModalOpen(false) - actions.reportCohortCreatedFromPersonsModal(filters) + const filters = fromParamsGivenUrl('?' + qs) + actions.setIsCohortModalOpen(false) + actions.reportCohortCreatedFromPersonsModal(filters) + } }, loadNextActors: () => { if (values.actorsResponse?.next) { diff --git a/latest_migrations.manifest b/latest_migrations.manifest index 4dad3bbf643bf..6377396a3f97f 100644 --- a/latest_migrations.manifest +++ b/latest_migrations.manifest @@ -5,7 +5,7 @@ contenttypes: 0002_remove_content_type_name ee: 0015_add_verified_properties otp_static: 0002_throttling otp_totp: 0002_auto_20190420_0723 -posthog: 0371_pendingpersonoverride +posthog: 0372_cohort_query sessions: 0001_initial social_django: 0010_uid_db_index two_factor: 0007_auto_20201201_1019 diff --git a/posthog/api/cohort.py b/posthog/api/cohort.py index c023d7ffe7ab2..68f2809f6a484 100644 --- a/posthog/api/cohort.py +++ b/posthog/api/cohort.py @@ -18,7 +18,7 @@ from posthog.metrics import LABEL_TEAM_ID from posthog.renderers import SafeJSONRenderer from datetime import datetime -from typing import Any, Dict, cast +from typing import Any, Dict, cast, Optional from django.conf import settings from django.db.models import QuerySet, Prefetch, prefetch_related_objects, OuterRef, Subquery @@ -55,7 +55,7 @@ from posthog.hogql.context import HogQLContext from posthog.models import Cohort, FeatureFlag, User, Person from posthog.models.async_deletion import AsyncDeletion, DeletionType -from posthog.models.cohort.util import get_dependent_cohorts +from posthog.models.cohort.util import get_dependent_cohorts, print_cohort_hogql_query from posthog.models.filters.filter import Filter from posthog.models.filters.path_filter import PathFilter from posthog.models.filters.stickiness_filter import StickinessFilter @@ -79,11 +79,13 @@ from posthog.queries.trends.trends_actors import TrendsActors from posthog.queries.trends.lifecycle_actors import LifecycleActors from posthog.queries.util import get_earliest_timestamp +from posthog.schema import PersonsQuery from posthog.tasks.calculate_cohort import ( calculate_cohort_from_list, insert_cohort_from_feature_flag, insert_cohort_from_insight_filter, update_cohort, + insert_cohort_from_query, ) from posthog.utils import format_query_params_absolute_url from prometheus_client import Counter @@ -111,6 +113,7 @@ class Meta: "groups", "deleted", "filters", + "query", "is_calculating", "created_by", "created_at", @@ -129,12 +132,14 @@ class Meta: "count", ] - def _handle_static(self, cohort: Cohort, context: Dict) -> None: + def _handle_static(self, cohort: Cohort, context: Dict, validated_data: Dict) -> None: request = self.context["request"] if request.FILES.get("csv"): self._calculate_static_by_csv(request.FILES["csv"], cohort) elif context.get("from_feature_flag_key"): insert_cohort_from_feature_flag.delay(cohort.pk, context["from_feature_flag_key"], self.context["team_id"]) + elif validated_data.get("query"): + insert_cohort_from_query.delay(cohort.pk) else: filter_data = request.GET.dict() existing_cohort_id = context.get("from_cohort_id") @@ -149,10 +154,15 @@ def create(self, validated_data: Dict, *args: Any, **kwargs: Any) -> Cohort: if not validated_data.get("is_static"): validated_data["is_calculating"] = True + if validated_data.get("query") and validated_data.get("filters"): + raise ValidationError("Cannot set both query and filters at the same time.") + cohort = Cohort.objects.create(team_id=self.context["team_id"], **validated_data) if cohort.is_static: - self._handle_static(cohort, self.context) + self._handle_static(cohort, self.context, validated_data) + elif cohort.query is not None: + raise ValidationError("Cannot create a dynamic cohort with a query. Set is_static to true.") else: update_cohort(cohort) @@ -165,6 +175,16 @@ def _calculate_static_by_csv(self, file, cohort: Cohort) -> None: distinct_ids_and_emails = [row[0] for row in reader if len(row) > 0 and row] calculate_cohort_from_list.delay(cohort.pk, distinct_ids_and_emails) + def validate_query(self, query: Optional[Dict]) -> Optional[Dict]: + if not query: + return None + if not isinstance(query, dict): + raise ValidationError("Query must be a dictionary.") + if query.get("kind") != "PersonsQuery": + raise ValidationError(f"Query must be a PersonsQuery. Got: {query.get('kind')}") + PersonsQuery.model_validate(query) + return query + def validate_filters(self, request_filters: Dict): if isinstance(request_filters, dict) and "properties" in request_filters: if self.context["request"].method == "PATCH": @@ -471,6 +491,12 @@ def insert_cohort_people_into_pg(cohort: Cohort): cohort.insert_users_list_by_uuid(items=[str(id[0]) for id in ids]) +def insert_cohort_query_actors_into_ch(cohort: Cohort): + context = HogQLContext(enable_select_queries=True, team_id=cohort.team.pk) + query = print_cohort_hogql_query(cohort, context) + insert_actors_into_cohort_by_query(cohort, query, {}, context) + + def insert_cohort_actors_into_ch(cohort: Cohort, filter_data: Dict): from_existing_cohort_id = filter_data.get("from_cohort_id") context: HogQLContext diff --git a/posthog/api/test/__snapshots__/test_decide.ambr b/posthog/api/test/__snapshots__/test_decide.ambr index f49cfb7b28a3a..79f2ae80438a2 100644 --- a/posthog/api/test/__snapshots__/test_decide.ambr +++ b/posthog/api/test/__snapshots__/test_decide.ambr @@ -364,6 +364,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -387,6 +388,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -521,6 +523,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -556,6 +559,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", diff --git a/posthog/api/test/__snapshots__/test_feature_flag.ambr b/posthog/api/test/__snapshots__/test_feature_flag.ambr index 5ed3574b74100..8aa343d472877 100644 --- a/posthog/api/test/__snapshots__/test_feature_flag.ambr +++ b/posthog/api/test/__snapshots__/test_feature_flag.ambr @@ -365,6 +365,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -604,6 +605,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -700,6 +702,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -921,6 +924,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -1216,6 +1220,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -1281,6 +1286,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -1672,7 +1678,7 @@ --- # name: TestFeatureFlag.test_creating_static_cohort.14 ' - /* user_id:189 celery:posthog.tasks.calculate_cohort.insert_cohort_from_feature_flag */ + /* user_id:191 celery:posthog.tasks.calculate_cohort.insert_cohort_from_feature_flag */ SELECT count(DISTINCT person_id) FROM person_static_cohort WHERE team_id = 2 @@ -2016,6 +2022,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", diff --git a/posthog/api/test/test_cohort.py b/posthog/api/test/test_cohort.py index 2d9082ecb5cb0..f9e03897b599f 100644 --- a/posthog/api/test/test_cohort.py +++ b/posthog/api/test/test_cohort.py @@ -9,6 +9,7 @@ from posthog.celery import clickhouse_clear_removed_data from posthog.clickhouse.client.execute import sync_execute from posthog.models.async_deletion.async_deletion import AsyncDeletion, DeletionType +from posthog.schema import PropertyOperator from posthog.tasks.calculate_cohort import calculate_cohort_from_list from rest_framework import status from rest_framework.test import APIClient @@ -690,6 +691,84 @@ def test_creating_update_and_calculating_with_new_cohort_filters(self, patch_cap self.assertEqual(response.status_code, 200, response.content) self.assertEqual(2, len(response.json()["results"])) + @patch("posthog.api.cohort.report_user_action") + def test_creating_update_and_calculating_with_new_cohort_query(self, patch_capture): + _create_person( + distinct_ids=["p1"], + team_id=self.team.pk, + properties={"$some_prop": "something"}, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id="p1", + timestamp=datetime.now() - timedelta(hours=12), + ) + + _create_person( + distinct_ids=["p2"], + team_id=self.team.pk, + properties={"$some_prop": "not it"}, + ) + _create_event( + team=self.team, + event="$pageview", + distinct_id="p2", + timestamp=datetime.now() - timedelta(hours=12), + ) + + flush_persons_and_events() + + response = self.client.post( + f"/api/projects/{self.team.id}/cohorts", + data={ + "name": "cohort A", + "is_static": True, + "query": { + "kind": "PersonsQuery", + "properties": [ + { + "key": "$some_prop", + "value": "something", + "type": "person", + "operator": PropertyOperator.exact, + } + ], + }, + }, + ) + self.assertEqual(response.status_code, 201, response.content) + + cohort_id = response.json()["id"] + + while response.json()["is_calculating"]: + response = self.client.get(f"/api/projects/{self.team.id}/cohorts/{cohort_id}") + + response = self.client.get(f"/api/projects/{self.team.id}/cohorts/{cohort_id}/persons/?cohort={cohort_id}") + self.assertEqual(response.status_code, 200, response.content) + self.assertEqual(1, len(response.json()["results"])) + + @patch("posthog.api.cohort.report_user_action") + def test_creating_update_and_calculating_with_new_cohort_query_dynamic_error(self, patch_capture): + response = self.client.post( + f"/api/projects/{self.team.id}/cohorts", + data={ + "name": "cohort A", + "query": { + "kind": "PersonsQuery", + "properties": [ + { + "key": "$some_prop", + "value": "something", + "type": "person", + "operator": PropertyOperator.exact, + } + ], + }, + }, + ) + self.assertEqual(response.status_code, 400, response.content) + @patch("posthog.api.cohort.report_user_action") def test_cohort_with_is_set_filter_missing_value(self, patch_capture): # regression test: Removing `value` was silently failing diff --git a/posthog/hogql/constants.py b/posthog/hogql/constants.py index 0e82558ec1628..75b6c0fc63342 100644 --- a/posthog/hogql/constants.py +++ b/posthog/hogql/constants.py @@ -4,6 +4,8 @@ from uuid import UUID from pydantic import ConfigDict, BaseModel +from posthog.hogql.errors import HogQLException + ConstantDataType: TypeAlias = Literal[ "int", "float", @@ -31,11 +33,37 @@ DEFAULT_RETURNED_ROWS = 100 # Max limit for all SELECT queries, and the default for CSV exports. MAX_SELECT_RETURNED_ROWS = 10000 # sync with CSV_EXPORT_LIMIT +# Max limit for all cohort calculations +MAX_SELECT_COHORT_CALCULATION_LIMIT = 1000000000 # 1b persons class LimitContext(str, Enum): QUERY = "query" EXPORT = "export" + COHORT_CALCULATION = "cohort_calculation" + + +def get_max_limit_for_context(limit_context: LimitContext) -> int: + if limit_context == LimitContext.EXPORT: + return MAX_SELECT_RETURNED_ROWS # 10k + elif limit_context == LimitContext.QUERY: + return MAX_SELECT_RETURNED_ROWS # 10k + elif limit_context == LimitContext.COHORT_CALCULATION: + return MAX_SELECT_COHORT_CALCULATION_LIMIT # 1b + else: + raise HogQLException(f"Unexpected LimitContext value: {limit_context}") + + +def get_default_limit_for_context(limit_context: LimitContext) -> int: + """Limit used if no limit is provided""" + if limit_context == LimitContext.EXPORT: + return MAX_SELECT_RETURNED_ROWS # 10k + elif limit_context == LimitContext.QUERY: + return DEFAULT_RETURNED_ROWS # 100 + elif limit_context == LimitContext.COHORT_CALCULATION: + return MAX_SELECT_COHORT_CALCULATION_LIMIT # 1b + else: + raise HogQLException(f"Unexpected LimitContext value: {limit_context}") # Settings applied at the SELECT level diff --git a/posthog/hogql/query.py b/posthog/hogql/query.py index 8ca5f5b582ab1..767e9f99d7b54 100644 --- a/posthog/hogql/query.py +++ b/posthog/hogql/query.py @@ -3,7 +3,7 @@ from posthog.clickhouse.client.connection import Workload from posthog.errors import ExposedCHQueryError from posthog.hogql import ast -from posthog.hogql.constants import HogQLGlobalSettings, LimitContext +from posthog.hogql.constants import HogQLGlobalSettings, LimitContext, get_default_limit_for_context from posthog.hogql.errors import HogQLException from posthog.hogql.hogql import HogQLContext from posthog.hogql.modifiers import create_default_modifiers_for_team @@ -34,7 +34,7 @@ def execute_hogql_query( workload: Workload = Workload.ONLINE, settings: Optional[HogQLGlobalSettings] = None, modifiers: Optional[HogQLQueryModifiers] = None, - limit_context: Optional[LimitContext] = None, + limit_context: Optional[LimitContext] = LimitContext.QUERY, timings: Optional[HogQLTimings] = None, explain: Optional[bool] = False, ) -> HogQLQueryResponse: @@ -68,20 +68,12 @@ def execute_hogql_query( select_query = replace_placeholders(select_query, placeholders) with timings.measure("max_limit"): - from posthog.hogql.constants import ( - DEFAULT_RETURNED_ROWS, - MAX_SELECT_RETURNED_ROWS, - ) - select_queries = ( select_query.select_queries if isinstance(select_query, ast.SelectUnionQuery) else [select_query] ) for one_query in select_queries: if one_query.limit is None: - # One more "max" of MAX_SELECT_RETURNED_ROWS (10k) in applied in the query printer. - one_query.limit = ast.Constant( - value=MAX_SELECT_RETURNED_ROWS if limit_context == LimitContext.EXPORT else DEFAULT_RETURNED_ROWS - ) + one_query.limit = ast.Constant(value=get_default_limit_for_context(limit_context)) # Get printed HogQL query, and returned columns. Using a cloned query. with timings.measure("hogql"): @@ -122,7 +114,7 @@ def execute_hogql_query( ) settings = settings or HogQLGlobalSettings() - if limit_context == LimitContext.EXPORT: + if limit_context == LimitContext.EXPORT or limit_context == LimitContext.COHORT_CALCULATION: settings.max_execution_time = EXPORT_CONTEXT_MAX_EXECUTION_TIME # Print the ClickHouse SQL query diff --git a/posthog/hogql_queries/events_query_runner.py b/posthog/hogql_queries/events_query_runner.py index f9ee10c648f25..bc9e9810f3698 100644 --- a/posthog/hogql_queries/events_query_runner.py +++ b/posthog/hogql_queries/events_query_runner.py @@ -10,9 +10,10 @@ from posthog.api.utils import get_pk_or_uuid from posthog.clickhouse.client.connection import Workload from posthog.hogql import ast +from posthog.hogql.constants import get_max_limit_for_context, get_default_limit_for_context from posthog.hogql.parser import parse_expr, parse_order_expr from posthog.hogql.property import action_to_expr, has_aggregation, property_to_expr -from posthog.hogql.query import execute_hogql_query, LimitContext +from posthog.hogql.query import execute_hogql_query from posthog.hogql.timings import HogQLTimings from posthog.hogql_queries.query_runner import QueryRunner from posthog.models import Action, Person @@ -255,22 +256,10 @@ def select_input_raw(self) -> List[str]: return ["*"] if len(self.query.select) == 0 else self.query.select def limit(self) -> int: - # importing locally so we could override in a test - from posthog.hogql.constants import ( - DEFAULT_RETURNED_ROWS, - MAX_SELECT_RETURNED_ROWS, - ) - # adding +1 to the limit to check if there's a "next page" after the requested results - return ( - min( - MAX_SELECT_RETURNED_ROWS, - (MAX_SELECT_RETURNED_ROWS if self.limit_context == LimitContext.EXPORT else DEFAULT_RETURNED_ROWS) - if self.query.limit is None - else self.query.limit, - ) - + 1 - ) + max_rows = get_max_limit_for_context(self.limit_context) + default_rows = get_default_limit_for_context(self.limit_context) + return min(max_rows, default_rows if self.query.limit is None else self.query.limit) + 1 def _is_stale(self, cached_result_package): return True diff --git a/posthog/hogql_queries/persons_query_runner.py b/posthog/hogql_queries/persons_query_runner.py index 3f9c0848b6556..cd1cf612dee96 100644 --- a/posthog/hogql_queries/persons_query_runner.py +++ b/posthog/hogql_queries/persons_query_runner.py @@ -3,7 +3,7 @@ from typing import List, cast, Literal from posthog.hogql import ast -from posthog.hogql.constants import DEFAULT_RETURNED_ROWS, MAX_SELECT_RETURNED_ROWS +from posthog.hogql.constants import get_max_limit_for_context, get_default_limit_for_context from posthog.hogql.parser import parse_expr, parse_order_expr from posthog.hogql.property import property_to_expr, has_aggregation from posthog.hogql.query import execute_hogql_query @@ -103,10 +103,9 @@ def input_columns(self) -> List[str]: return self.query.select or ["person", "id", "created_at", "person.$delete"] def query_limit(self) -> int: - return min( - MAX_SELECT_RETURNED_ROWS, - DEFAULT_RETURNED_ROWS if self.query.limit is None else self.query.limit, - ) + max_rows = get_max_limit_for_context(self.limit_context) + default_rows = get_default_limit_for_context(self.limit_context) + return min(max_rows, default_rows if self.query.limit is None else self.query.limit) def to_query(self) -> ast.SelectQuery: with self.timings.measure("columns"): diff --git a/posthog/hogql_queries/query_runner.py b/posthog/hogql_queries/query_runner.py index ed08a9fcbb34e..a7fba00b4d455 100644 --- a/posthog/hogql_queries/query_runner.py +++ b/posthog/hogql_queries/query_runner.py @@ -217,7 +217,7 @@ def calculate(self) -> BaseModel: raise NotImplementedError() def run(self, refresh_requested: Optional[bool] = None) -> CachedQueryResponse: - cache_key = self._cache_key() + ("_export" if self.limit_context == LimitContext.EXPORT else "") + cache_key = f"{self._cache_key()}_{self.limit_context or LimitContext.QUERY}" tag_queries(cache_key=cache_key) if not refresh_requested: diff --git a/posthog/migrations/0372_cohort_query.py b/posthog/migrations/0372_cohort_query.py new file mode 100644 index 0000000000000..3155ecbdbdfa4 --- /dev/null +++ b/posthog/migrations/0372_cohort_query.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.19 on 2023-11-29 23:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0371_pendingpersonoverride"), + ] + + operations = [ + migrations.AddField( + model_name="cohort", + name="query", + field=models.JSONField(blank=True, null=True), + ), + ] diff --git a/posthog/models/cohort/cohort.py b/posthog/models/cohort/cohort.py index 9310900e0f8d0..ca3fa132c0809 100644 --- a/posthog/models/cohort/cohort.py +++ b/posthog/models/cohort/cohort.py @@ -76,6 +76,7 @@ class Cohort(models.Model): team: models.ForeignKey = models.ForeignKey("Team", on_delete=models.CASCADE) deleted: models.BooleanField = models.BooleanField(default=False) filters: models.JSONField = models.JSONField(null=True, blank=True) + query: models.JSONField = models.JSONField(null=True, blank=True) people: models.ManyToManyField = models.ManyToManyField("Person", through="CohortPeople") version: models.IntegerField = models.IntegerField(blank=True, null=True) pending_version: models.IntegerField = models.IntegerField(blank=True, null=True) diff --git a/posthog/models/cohort/util.py b/posthog/models/cohort/util.py index c4201fbaf3f47..667966f024310 100644 --- a/posthog/models/cohort/util.py +++ b/posthog/models/cohort/util.py @@ -1,6 +1,6 @@ import uuid from datetime import datetime, timedelta -from typing import Any, Dict, List, Optional, Set, Tuple, Union +from typing import Any, Dict, List, Optional, Set, Tuple, Union, cast import structlog from dateutil import parser @@ -10,7 +10,9 @@ from posthog.client import sync_execute from posthog.constants import PropertyOperatorType +from posthog.hogql.constants import LimitContext from posthog.hogql.hogql import HogQLContext +from posthog.hogql.printer import print_ast from posthog.models import Action, Filter, Team from posthog.models.action.util import format_action_filter from posthog.models.async_deletion import AsyncDeletion, DeletionType @@ -66,6 +68,18 @@ def format_person_query(cohort: Cohort, index: int, hogql_context: HogQLContext) return query, params +def print_cohort_hogql_query(cohort: Cohort, hogql_context: HogQLContext) -> str: + from posthog.hogql_queries.query_runner import get_query_runner + + persons_query = cast(Dict, cohort.query) + persons_query["select"] = ["id as actor_id"] + query = get_query_runner( + persons_query, team=cast(Team, cohort.team), limit_context=LimitContext.COHORT_CALCULATION + ).to_query() + hogql_context.enable_select_queries = True + return print_ast(query, context=hogql_context, dialect="clickhouse") + + def format_static_cohort_query(cohort: Cohort, index: int, prepend: str) -> Tuple[str, Dict[str, Any]]: cohort_id = cohort.pk return ( diff --git a/posthog/models/filters/test/__snapshots__/test_filter.ambr b/posthog/models/filters/test/__snapshots__/test_filter.ambr index c236a5d28a6fa..6f37e28782d08 100644 --- a/posthog/models/filters/test/__snapshots__/test_filter.ambr +++ b/posthog/models/filters/test/__snapshots__/test_filter.ambr @@ -376,6 +376,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -448,6 +449,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -511,6 +513,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -534,6 +537,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -557,6 +561,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -580,6 +585,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", diff --git a/posthog/tasks/calculate_cohort.py b/posthog/tasks/calculate_cohort.py index b4ff3a9aff390..776b991dac8de 100644 --- a/posthog/tasks/calculate_cohort.py +++ b/posthog/tasks/calculate_cohort.py @@ -73,6 +73,18 @@ def insert_cohort_from_insight_filter(cohort_id: int, filter_data: Dict[str, Any insert_cohort_people_into_pg(cohort=cohort) +@shared_task(ignore_result=True, max_retries=1) +def insert_cohort_from_query(cohort_id: int) -> None: + from posthog.api.cohort import ( + insert_cohort_query_actors_into_ch, + insert_cohort_people_into_pg, + ) + + cohort = Cohort.objects.get(pk=cohort_id) + insert_cohort_query_actors_into_ch(cohort) + insert_cohort_people_into_pg(cohort=cohort) + + @shared_task(ignore_result=True, max_retries=1) def insert_cohort_from_feature_flag(cohort_id: int, flag_key: str, team_id: int) -> None: from posthog.api.cohort import get_cohort_actors_for_feature_flag diff --git a/posthog/test/__snapshots__/test_feature_flag.ambr b/posthog/test/__snapshots__/test_feature_flag.ambr index a34d2ba545ae0..cc8c0d48fa7ad 100644 --- a/posthog/test/__snapshots__/test_feature_flag.ambr +++ b/posthog/test/__snapshots__/test_feature_flag.ambr @@ -355,6 +355,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", @@ -564,6 +565,7 @@ "posthog_cohort"."team_id", "posthog_cohort"."deleted", "posthog_cohort"."filters", + "posthog_cohort"."query", "posthog_cohort"."version", "posthog_cohort"."pending_version", "posthog_cohort"."count", From 2ead1655d066f4b70ae0682895cfa429d4c5685d Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Wed, 6 Dec 2023 16:28:15 +0100 Subject: [PATCH 3/4] feat(lifecycle): timezone aware lifecycle persons query (#19132) --- posthog/hogql_queries/insights/lifecycle_query_runner.py | 8 +++++++- .../insights/test/test_insight_persons_query_runner.py | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/posthog/hogql_queries/insights/lifecycle_query_runner.py b/posthog/hogql_queries/insights/lifecycle_query_runner.py index c8731994d9a8c..8aeeba1af476a 100644 --- a/posthog/hogql_queries/insights/lifecycle_query_runner.py +++ b/posthog/hogql_queries/insights/lifecycle_query_runner.py @@ -100,7 +100,13 @@ def to_persons_query( ast.CompareOperation( op=ast.CompareOperationOp.Eq, left=ast.Field(chain=["start_of_period"]), - right=ast.Constant(value=day), + right=parse_expr( + "dateTrunc({interval}, toDateTime({day}))", + placeholders={ + "interval": self.query_date_range.interval_period_string_as_hogql_constant(), + "day": ast.Constant(value=day), + }, + ), ) ) if status is not None: diff --git a/posthog/hogql_queries/insights/test/test_insight_persons_query_runner.py b/posthog/hogql_queries/insights/test/test_insight_persons_query_runner.py index 51c39bc0008e9..e5e0dc5ada2c6 100644 --- a/posthog/hogql_queries/insights/test/test_insight_persons_query_runner.py +++ b/posthog/hogql_queries/insights/test/test_insight_persons_query_runner.py @@ -62,6 +62,8 @@ def select(self, query: str, placeholders: Dict[str, Any]): def test_insight_persons_lifecycle_query(self): self._create_test_events() + self.team.timezone = "US/Pacific" + self.team.save() date_from = "2020-01-09" date_to = "2020-01-19" From 23053e1e0a366871d857b251895387dfe048c288 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 6 Dec 2023 15:32:18 +0000 Subject: [PATCH 4/4] chore: LemonSelect caret position (#19106) --- frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.scss | 4 ++++ frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.scss b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.scss index 2ffff0ebfda98..9b21a44ee7826 100644 --- a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.scss +++ b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.scss @@ -30,4 +30,8 @@ body:not(.posthog-3000) { } } } + + .LemonButton.LemonSelect { + --lemon-button-gap: 0.1875rem; + } } diff --git a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx index 1e4894b45fd9d..c078e2b0bb835 100644 --- a/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx +++ b/frontend/src/lib/lemon-ui/LemonSelect/LemonSelect.tsx @@ -140,7 +140,7 @@ export function LemonSelect({ closeParentPopoverOnClickInside={menu?.closeParentPopoverOnClickInside} > : undefined}