package Ġcom . market data . flows Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . market data . contracts . Usage Contract Ċ import Ġcom . market data . schema . Permission Schema V 1 . Persistent Permission Ċ import Ġcom . market data . schema . Usage Receipt Schema V 1 Ċ import Ġcom . market data . schema . Usage Schema V 1 Ċ import Ġcom . market data . states .* Ċ import Ġnet . cord a . conf idential . Identity Sync Flow Ċ import Ġnet . cord a . conf idential . Swap Id entities Flow Ċ import Ġnet . cord a . core . contracts . Command Ċ import Ġnet . cord a . core . contracts . Linear Pointer Ċ import Ġnet . cord a . core . contracts . State And Contract Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . flows .* Ċ import Ġnet . cord a . core . identity . Anonymous Party Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . node . services . Vault Ċ import Ġnet . cord a . core . node . services . vault . Builder . equal Ċ import Ġnet . cord a . core . node . services . vault . Builder . greater Than OrEqual Ċ import Ġnet . cord a . core . node . services . vault . Builder . less Than OrEqual Ċ import Ġnet . cord a . core . node . services . vault . Query Criteria Ċ import Ġnet . cord a . core . node . services . vault . Query Criteria . Vault Custom Query Criteria Ċ import Ġnet . cord a . core . node . services . vault . Query Criteria . Vault Query Criteria Ċ import Ġnet . cord a . core . node . services . vault . builder Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ import Ġnet . cord a . core . transactions . Wire Transaction Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util .* Ċ Ċ // Ġ********* Ċ // Ġ* ĠFlow s Ġ* Ċ // Ġ********* Ċ @ Initi ating Flow Ċ @ Start able By RPC Ċ class ĠUsage Issue ( val ĠdataSet : ĠString , Ġval Ġprovider : ĠParty , Ġval Ġre distribut or : ĠParty , Ġval ĠuserName Ġ: ĠString , Ġval Ġpay Red ist ribut or Ġ: ĠParty ? Ġ= Ġnull ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker () ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ: ĠSigned Transaction { ĊĊĠĠĠĠĠĠĠ Ġval Ġt xb Ġ= ĠTransaction Builder ( not ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities . first ()) ĊĠĠĠĠĠĠĠ Ġval Ġcmd Ġ= ĠUsage Contract . Commands . Issue () ĊĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= ĠLocalDate . now (). toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġbuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovider Idx Ġ= ĠPersistent Permission :: provider Name . equal ( provider . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSet Idx Ġ Ġ= ĠPersistent Permission :: data SetName . equal ( data Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscriber Idx Ġ= ĠPersistent Permission :: subscriber Name . equal ( our Identity . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre distribut or Idx Ġ= ĠPersistent Permission :: red ist ribut or Name . equal ( red ist ribut or . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 1 Ġ= ĠVault Custom Query Criteria ( provider Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 2 Ġ= ĠVault Custom Query Criteria ( data Set Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 3 Ġ= ĠVault Custom Query Criteria ( subscriber Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 4 Ġ= ĠVault Custom Query Criteria ( red ist ribut or Idx ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= ĠVault Query Criteria ( Vault . State Status . ALL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 4 )))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Hub . vault Service . query By ( Permission Request State :: class . java , criteria ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġperm States Ġ= Ġresults . states ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperm States . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" No Ġpermission Ġto Ġaccess Ġdata Ġset Ġ($ data Set ) Ġfrom Ġprovider Ġ($ provider )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperm States . size Ġ> Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Error Ġdetermining Ġdata Ġset Ġ($ data Set ) Ġfrom Ġprovider Ġ($ provider )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġperm State Ġ= Ġperm States . single (). state . data ĊĊĠĠĠĠĠĠĠ Ġval Ġreceipt Pointer Ġ= Ġif ( Ġpay Red ist ribut or Ġ!= Ġnull Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage s Ġ= Ġbuilder Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprov Idx Ġ= ĠUsage Receipt Schema V 1 . Persistent Usage Receipt :: provider Name . equal ( provider . name . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSet Idx Ġ= ĠUsage Receipt Schema V 1 . Persistent Usage Receipt :: data SetName . equal ( data Set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparty Idx Ġ= ĠUsage Receipt Schema V 1 . Persistent Usage Receipt :: subscriber Name . equal ( our Identity . name . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Idx Ġ= ĠUsage Receipt Schema V 1 . Persistent Usage Receipt :: date . equal ( today ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Idx Ġ= ĠUsage Receipt Schema V 1 . Persistent Usage Receipt :: userName . equal ( userName ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 1 Ġ= ĠVault Custom Query Criteria ( prov Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 2 Ġ= ĠVault Custom Query Criteria ( data Set Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 3 Ġ= ĠVault Custom Query Criteria ( party Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 4 Ġ= ĠVault Custom Query Criteria ( date Idx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Criteria 5 Ġ= ĠVault Custom Query Criteria ( user Idx ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcriteria Ġ= ĠQuery Criteria . Vault Query Criteria () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( custom Criteria 5 ))))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Hub . vault Service . query By ( Usage Receipt State :: class . java , Ġcriteria ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. states . map Ġ{ Ġit . state . data Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage Ġ= Ġusage s . single () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinear Pointer ( usage . linear Id , ĠUsage Receipt State :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠUsage State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinear Pointer ( perm State . linear Id , ĠPermission Request State :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceipt Pointer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre distribut or , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġour Identity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoday ) ĊĊĠĠĠĠĠĠĠ Ġt xb . with Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState And Contract ( state , ĠUsage Contract . ID Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommand ( cmd , Ġour Identity . own ing Key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġt xb . verify ( service Hub ) ĊĠĠĠĠĠĠĠ Ġval Ġpartial Tx Ġ= Ġservice Hub . sign Initial Transaction ( tx b ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsessions Ġ= Ġ( state . participants Ġ- Ġour Identity ). map Ġ{ Ġinitiate Flow ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Final ity Flow ( partial Tx , Ġsessions )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ated By ( Usage Issue :: class ) Ċ class ĠUsage Issue Responder ( val Ġcounter party Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġst x Ġ= Ġsub Flow ( Receive Final ity Flow ( counter party Session )) ĊĊĠĠĠĠĠĠĠ Ġval Ġusage State Ġ= Ġst x . tx . outputs OfType ( Usage State :: class . java ). single () ĊĠĠĠĠĠĠĠ Ġif Ġ( our Identity Ġ== Ġusage State . red ist ribut or ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Usage Receipt ( usage State )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ating Flow Ċ class ĠUsage Receipt ( val Ġusage State : ĠUsage State ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker () ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ: ĠSigned Transaction { ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġonly Ġparty Ġwho Ġcan Ġissue Ġthe Ġreceipt Ġis Ġthe Ġre distribut or . ĠThey Ġdo Ġnot Ġwant Ġto Ġbe Ġidentified Ġby Ġother ĊĠĠĠĠĠĠĠ Ġ// Ġparties Ġwho Ġmay Ġsee Ġthis Ġreceipt , Ġso Ġuse Ġa Ġnew Ġidentity . ĊĊĠĠĠĠĠĠĠ Ġval Ġperm State Ġ= Ġusage State . permission State . resolve ( service Hub ). state . data ĊĠĠĠĠĠĠĠ Ġval Ġdist DataSet Ġ= Ġperm State . distribut able DataSet . resolve ( service Hub ). state . data ĊĠĠĠĠĠĠĠ Ġval ĠdataSet Ġ= Ġdist DataSet . data Set . resolve ( service Hub ). state . data ĊĠĠĠĠĠĠĠ Ġval Ġsigned T and Cs Ġ= Ġperm State . provider T and Cs . resolve ( service Hub ). state . data ĊĊĊĠĠĠĠĠĠĠ Ġval Ġt xb Ġ= ĠTransaction Builder ( not ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities . first ()) ĊĠĠĠĠĠĠĠ Ġval Ġcmd Ġ= ĠUsage Contract . Commands . Send Receipt () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġisn 't Ġideal , Ġbut Ġwe Ġdon 't Ġwant Ġto Ġcreate Ġtwo Ġanonymous Ġident ities , Ġso Ġjust ĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġone Ġthen Ġshare Ġit Ġwith Ġthe Ġother . ĠWe Ġdon 't Ġreally Ġneed Ġto Ġget Ġthe Ġremote Ġparties ĊĠĠĠĠĠĠĠ Ġ// Ġto Ġissue Ġanonymous Ġident ites Ġso Ġthis Ġcan Ġbe Ġoptim ised Ġfor Ġsure . ĊĠĠĠĠĠĠĠ Ġval Ġtx Id entities Ġ= Ġsub Flow ( Swap Identity Helper ( Ġusage State . subscriber Ġ)) ĊĠĠĠĠĠĠĠ Ġval Ġanonymous Me Ġ= Ġtx Id entities [ our Identity ] !! ĊĊĠĠĠĠĠĠĠ Ġval Ġrec ie pt State Ġ= ĠUsage Receipt State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinear Pointer ( data Set . linear Id , ĠDataSet State :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinear Pointer ( signed T and Cs . linear Id , ĠSigned Terms And Conditions State :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage State . data SetName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage State . provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanonymous Me , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage State . subscriber , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage State . userName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusage State . date ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġt xb . with Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState And Contract ( rec ie pt State , ĠUsage Contract . ID Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommand ( cmd , Ġrec ie pt State . participants . map Ġ{ Ġit . own ing Key Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġt xb . verify ( service Hub ) ĊĠĠĠĠĠĠĠ Ġval Ġpartial Tx Ġ= Ġservice Hub . sign Initial Transaction ( tx b , Ġanonymous Me . own ing Key ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsubscriber Session Ġ= Ġinitiate Flow ( usage State . subscriber ) ĊĠĠĠĠĠĠĠ Ġval Ġprovider Session Ġ= Ġinitiate Flow ( usage State . provider ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSync Ġup Ġconf idential Ġident ities Ġin Ġthe Ġtransaction Ġwith Ġthe Ġprovider ĊĠĠĠĠĠĠĠ Ġsub Flow ( Identity Sync Helper ( usage State . provider , Ġpartial Tx . tx )) ĊĊĠĠĠĠĠĠĠ Ġval Ġsessions Ġ= ĠlistOf ( subscriber Session , Ġprovider Session ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsigned Tx Ġ= Ġsub Flow ( Collect Signatures Flow ( partial Tx , Ġsessions , ĠlistOf ( anonymous Me . own ing Key ))) ĊĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Final ity Flow ( signed Tx , Ġsessions )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ated By ( Usage Receipt :: class ) Ċ class ĠUsage Receipt Responder ( val Ġcounter party Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsigned Transaction Flow Ġ= Ġobject Ġ: ĠSign Transaction Flow ( counter party Session ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Transaction ( st x : ĠSigned Transaction ) Ġ= Ġrequire That Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ- Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexpected Tx Id Ġ= Ġsub Flow ( signed Transaction Flow ). id ĊĊĠĠĠĠĠĠĠ Ġsub Flow ( Receive Final ity Flow ( counter party Session , Ġexpected Tx Id )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ating Flow Ċ class ĠSwap Identity Helper ( private Ġval Ġparty : ĠParty Ġ) Ġ: ĠFlow Logic < Linked HashMap < Party , ĠAn onymous Party >>() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker () ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ: ĠLinkedHashMap < Party , ĠAn onymous Party > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Swap Id entities Flow ( init iate Flow ( party ))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ated By ( Swap Identity Helper :: class ) Ċ class ĠSwap Identity Helper Responder ( val Ġcounter party Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠ Ġsub Flow ( Swap Id entities Flow ( counter party Session )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ating Flow Ċ class ĠIdentity Sync Helper ( private Ġval Ġparty : ĠParty Ġ, Ġprivate Ġval Ġtx Ġ: ĠWire Transaction ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= ĠProgress Tracker () ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall (){ ĊĠĠĠĠĠĠĠ Ġsub Flow ( Identity Sync Flow . Send ( init iate Flow ( party ), Ġtx )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Initi ated By ( Identity Sync Helper :: class ) Ċ class ĠIdentity Sync Helper Responder ( val Ġcounter party Session : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠ Ġsub Flow ( Identity Sync Flow . Receive ( counter party Session )) ĊĠĠĠ Ġ} Ċ } Ċ