%%{init: {'themeVariables': { 'fontSize': '12px'}}}%%
graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:1px,color:#000
    classDef itemplan fill:#fff,stroke-width:2px,color:#000
    classDef unbatchedplan fill:#dff,stroke-width:1px,color:#000
    classDef sideeffectplan fill:#fcc,stroke-width:2px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:2px,text-align:left


    %% plan dependencies
    Object13{{"Object[13∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access11{{"Access[11∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access12{{"Access[12∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access11 & Access12 --> Object13
    Connection14{{"Connection[14∈0] ➊<br />ᐸ10ᐳ"}}:::plan
    Constant64{{"Constant[64∈0] ➊<br />ᐸ3ᐳ"}}:::plan
    Lambda17{{"Lambda[17∈0] ➊<br />ᐸparseCursorᐳ"}}:::plan
    Constant64 & Lambda17 --> Connection14
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access11
    __Value2 --> Access12
    Lambda16{{"Lambda[16∈0] ➊<br />ᐸincludeArchivedConditionᐳ"}}:::plan
    Constant63{{"Constant[63∈0] ➊<br />ᐸ[ undefined, 'INHERIT' ]ᐳ"}}:::plan
    Constant63 --> Lambda16
    Constant65{{"Constant[65∈0] ➊<br />ᐸ'WyJmMGIyOGM5NGMxIiwiZjE3MGYxNzAtMDAwMC0wMDAwLTAwMDAtY2VjMTEᐳ"}}:::plan
    Constant65 --> Lambda17
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    PgSelect18[["PgSelect[18∈1] ➊<br />ᐸmessages+1ᐳ"]]:::plan
    Object13 & Lambda16 & Connection14 & Lambda17 & Constant64 --> PgSelect18
    Object38{{"Object[38∈1] ➊<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access33{{"Access[33∈1] ➊<br />ᐸ18.hasMoreᐳ"}}:::plan
    Constant64 & Access33 --> Object38
    PgSelect24[["PgSelect[24∈1] ➊<br />ᐸmessages(aggregate)ᐳ"]]:::plan
    Object13 & Lambda16 & Connection14 --> PgSelect24
    Object34{{"Object[34∈1] ➊<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Constant64 & Access33 --> Object34
    PgCursor45{{"PgCursor[45∈1] ➊"}}:::plan
    PgSelectSingle43{{"PgSelectSingle[43∈1] ➊<br />ᐸmessagesᐳ"}}:::plan
    Access29{{"Access[29∈1] ➊<br />ᐸ18.cursorDetailsᐳ"}}:::plan
    PgSelectSingle43 & Access29 --> PgCursor45
    PgCursor51{{"PgCursor[51∈1] ➊"}}:::plan
    PgSelectSingle49{{"PgSelectSingle[49∈1] ➊<br />ᐸmessagesᐳ"}}:::plan
    PgSelectSingle49 & Access29 --> PgCursor51
    PgSelectRows19[["PgSelectRows[19∈1] ➊"]]:::plan
    PgSelect18 --> PgSelectRows19
    PgPageInfo23{{"PgPageInfo[23∈1] ➊"}}:::plan
    Connection14 --> PgPageInfo23
    First25{{"First[25∈1] ➊"}}:::plan
    PgSelectRows26[["PgSelectRows[26∈1] ➊"]]:::plan
    PgSelectRows26 --> First25
    PgSelect24 --> PgSelectRows26
    PgSelectSingle27{{"PgSelectSingle[27∈1] ➊<br />ᐸmessagesᐳ"}}:::plan
    First25 --> PgSelectSingle27
    PgClassExpression28{{"PgClassExpression[28∈1] ➊<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle27 --> PgClassExpression28
    PgSelect18 --> Access29
    PgSelect18 --> Access33
    Lambda35{{"Lambda[35∈1] ➊<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object34 --> Lambda35
    Lambda39{{"Lambda[39∈1] ➊<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object38 --> Lambda39
    First41{{"First[41∈1] ➊"}}:::plan
    PgSelectRows19 --> First41
    First41 --> PgSelectSingle43
    Last47{{"Last[47∈1] ➊"}}:::plan
    PgSelectRows19 --> Last47
    Last47 --> PgSelectSingle49
    __Item20[/"__Item[20∈2]<br />ᐸ19ᐳ"\]:::itemplan
    PgSelectRows19 ==> __Item20
    PgSelectSingle21{{"PgSelectSingle[21∈2]<br />ᐸmessagesᐳ"}}:::plan
    __Item20 --> PgSelectSingle21
    PgCursor30{{"PgCursor[30∈3]"}}:::plan
    PgSelectSingle21 & Access29 --> PgCursor30
    PgSelect54[["PgSelect[54∈3]<br />ᐸusersᐳ"]]:::plan
    PgClassExpression53{{"PgClassExpression[53∈3]<br />ᐸ__messages...author_id”ᐳ"}}:::plan
    Object13 & PgClassExpression53 --> PgSelect54
    PgClassExpression52{{"PgClassExpression[52∈3]<br />ᐸ__messages__.”body”ᐳ"}}:::plan
    PgSelectSingle21 --> PgClassExpression52
    PgSelectSingle21 --> PgClassExpression53
    First58{{"First[58∈3]"}}:::plan
    PgSelectRows59[["PgSelectRows[59∈3]"]]:::plan
    PgSelectRows59 --> First58
    PgSelect54 --> PgSelectRows59
    PgSelectSingle60{{"PgSelectSingle[60∈3]<br />ᐸusersᐳ"}}:::plan
    First58 --> PgSelectSingle60
    PgClassExpression61{{"PgClassExpression[61∈4]<br />ᐸ__users__.”username”ᐳ"}}:::plan
    PgSelectSingle60 --> PgClassExpression61
    PgClassExpression62{{"PgClassExpression[62∈4]<br />ᐸ__users__....vatar_url”ᐳ"}}:::plan
    PgSelectSingle60 --> PgClassExpression62

    %% define steps

    subgraph "Buckets for queries/connections/pagination-before-end-last"
    Bucket0("Bucket 0 (root)"):::bucket
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,Access11,Access12,Object13,Connection14,Lambda16,Lambda17,Constant63,Constant64,Constant65 bucket0
    Bucket1("Bucket 1 (nullableBoundary)<br />Deps: 13, 16, 14, 17, 64, 6<br /><br />ROOT Connectionᐸ10ᐳ[14]<br />1: PgSelect[18], PgSelect[24]<br />ᐳ: 23, 29, 33, 34, 35, 38, 39<br />2: PgSelectRows[19], PgSelectRows[26]<br />ᐳ: 25, 27, 28, 41, 43, 45, 47, 49, 51"):::bucket
    classDef bucket1 stroke:#00bfff
    class Bucket1,PgSelect18,PgSelectRows19,PgPageInfo23,PgSelect24,First25,PgSelectRows26,PgSelectSingle27,PgClassExpression28,Access29,Access33,Object34,Lambda35,Object38,Lambda39,First41,PgSelectSingle43,PgCursor45,Last47,PgSelectSingle49,PgCursor51 bucket1
    Bucket2("Bucket 2 (listItem)<br />Deps: 29, 13<br /><br />ROOT __Item{2}ᐸ19ᐳ[20]"):::bucket
    classDef bucket2 stroke:#7f007f
    class Bucket2,__Item20,PgSelectSingle21 bucket2
    Bucket3("Bucket 3 (nullableBoundary)<br />Deps: 21, 29, 13<br /><br />ROOT PgSelectSingle{2}ᐸmessagesᐳ[21]<br />1: <br />ᐳ: 30, 52, 53<br />2: PgSelect[54]<br />3: PgSelectRows[59]<br />ᐳ: First[58], PgSelectSingle[60]"):::bucket
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgCursor30,PgClassExpression52,PgClassExpression53,PgSelect54,First58,PgSelectRows59,PgSelectSingle60 bucket3
    Bucket4("Bucket 4 (nullableBoundary)<br />Deps: 60<br /><br />ROOT PgSelectSingle{3}ᐸusersᐳ[60]"):::bucket
    classDef bucket4 stroke:#0000ff
    class Bucket4,PgClassExpression61,PgClassExpression62 bucket4
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4
    end
