Mission

Our mission is to evolve the world’s data, embracing new standards of security and economics. That doesn’t mean rebuilding everything from scratch, we believe that the path to the future involves Weaving existing technology into the patterns that are commonly known as Web3.

Our view is Web3 data has the following features:

  • Security: Faking identities or tampering with data should be nearly impossible through the use of cryptographic guarantees that are hardened through the signed activity of trust network members.
  • Lineage: Every interaction with data should be tracked to give confidence that data isn’t being leaked or used inappropriately.
  • Privacy: Confidential Computing should be used as often as possible to minimize both the leaking of sensitive information as well as the unnecessary copying of data.
  • Economics: Data flows should have a cost associated with them, to make it easy to compensate sources of data directly instead of through weak promises.
  • Interoperability: Data should conform to standards and be made available to authorized parties programmatically, both via Web2 APIs and Web3 Oracles.

We built Weavechain because it was impossible to give data these features in a way that was easy or compliant. Storing even encrypted data on Public Web3 solutions like IPFS, Arweave, or natively in a smart contract on Ethereum or Solana is neither GDPR nor HIPAA compliant. To be GDPR compliant means that you have to satisfy an erasure obligation commonly known as “the right to be forgotten”, and you can’t delete data from Public Web3 by design. To be HIPAA requires a “physical safeguard” like a firewall, a “technical safeguard” like encryption isn’t sufficient. And rebuilding applications using Private Web3 solutions like Hyperledger is rip and replace on steroids, dramatically more difficult than what’s feasible for most.

Weavechain changes this pattern by attaching to databases, dynamically creating blockchain anchors for security, and acting as an API gateway to manage economics. By making it easy, our hope is that we can minimize the barriers to establishing Web3 data and push its adoption. Our children will look back on data transfers that lack the above features as barbaric, wondering why we allowed such critical activity to happen in such a loose fashion. We believe that Web3 data will become as pervasive as the HTTPS lock icon in your browser, a passive part of all of our lives that is flat out a better way of doing things.

Features

Weavechain is a complex infrastructure layer that can be configured to act differently for each data and compute sharing agreement, depending on the needs of the specific use case. The complexity is hidden with a simple normalized API that allows access to data stored on different types of databases or file storages and provides an easy way to enable sharing, confidential compute or monetization on top of that data. One or many of the features below can be enabled for each private network. The nodes can perform data and compute tasks on their own or private dApps can be built on top of them.

  • Private or Public Data Storage
    • Databases and File Storages
  • Role Based Access Control
  • Dynamic Row Level Access Rights
  • Full Audit, including for reads
  • Data Replication
    • Non-Replicated private collections or Replicated to a Trust Network
    • Storage and Integrity Proofs
    • Scheduled Integrity Checks or Random Sampling
  • Data Recovery
  • Self-Sovereign Data Sharing
  • Polling or streaming connections
  • Custom Encryption In Transit that can be enabled on top of or when SSL/TLS is not available
  • Custom Encryption At Rest
  • Personal Identifiable Information and Time Series Obfuscation
  • Data Brokerage
    • Caching
    • Proxy Re-Encryption
  • Data Streaming
  • Data Monetization
    • pre-paid gating using NFTs, marketplace smart contracts or direct payment subscriptions
    • custodial wallet dynamic payments based on usage
    • custodial wallet transfers with periodic bridging on-chain
    • live data access, datasets snaphots or rolling datasets
  • Multiple blockchains supported for authentication, integrity proofs or monetization
  • Multiple Web3 and Web2 Authentication methods
  • Compute Monetization
  • Integrity Proofs
    • off-chain and on-chain (private or public blockchains)
    • Integrity Signatures from source
    • Threshold Signatures
    • Time Series Immutability Proofs, records batching
    • Merkle Trees and signed root hashes
    • Merkle Proof ZKP
    • Snapshot or Live Merkle Trees
    • Table Update Zero-Knowledge Proof
  • Confidential Compute
    • Compute To Data
      • Docker
      • WebAssembly
      • in-process node plugins
    • Multi-Party Computing (SPDZ, using FRESCO from Alexandra Instituttet)
    • Homomorphic Encryption (CKKS, using SEAL/EVA from Microsoft)
    • Federated and Split Learning
    • Zero-Knowldege Proofs for Data (Bulletproofs)
  • Secure Enclaves support (SGX)
  • Data Lineage, Row Level Traceback
  • Computational Lineage
  • Verifiable Credentials issuing
  • Monetization for any existing 3rd party service using generic API forwarding
  • Integrity guarantees for any existing 3rd party service using API forwarding
  • Privacy preserving ring signatures
  • Wallet-to-wallet and session-to-session Messaging
  • Optional Quantum Resistant Signatures and Hashing
  • Oracle Middleware
  • Data or Compute Marketplaces
  • Private or Public node access
  • Node API limiting to reduce the attack surface and enable only the features needed to be exposed
  • Fully customizable whitelisting and blacklisting by account, IP, wallets or NFT ownership

Supported Storages

Databases

  • PostgreSQL
  • MongoDB
  • MySQL
  • SQLite
  • InfluxDB
  • Microsoft SQL Server
  • LevelDB
  • RocksDB
  • RethinkDB
  • CouchDB
  • Cassandra
  • Riak
  • kdb+
  • GridDB
  • KairosDB
  • QuestDB
  • QuasarDB
  • CockroachDB
  • ArangoDB
  • YugabyteDB
  • Elastic
  • TileDB
  • Firebase
  • Amazon DynamoDB
  • Amazon Aurora
  • OpenTSDB
  • Cloudant
  • Oracle

File Storages

  • local file storage
  • Google Big Query
  • IPFS
  • Amazon S3

Supported File Formats

  • Raw
  • JSON
  • CSV
  • Feather
  • Avro
  • Parquet
  • ORC
  • TOML
  • YAML
  • Protobuf

Supported Blockchains

  • internal ledger
  • Polygon
  • Solana
  • Optimism
  • Hyperledger Sawtooth
  • Internet Computer
  • Rootstock
  • Hedera
  • Ethereum
  • Avalanche
  • Celo
  • Fantom
  • Harmony
  • Base
  • Aurora
  • BNB Chain
  • Klatyn
  • Algorand
  • Arbitrum
  • Corda
  • Polkadot

Supported Transports

  • HTTP and HTTPS
  • WS and WSS
  • Kafka
  • RabbitMQ
  • ZeroMQ

Supported encryption at rest

Data can be optionally encrypted with an additional layer, besides the [potentially available] encryption at rest of the underlying storage.

Encryption can be enabled at field level

  • AES/GCM
  • ChaCha20-Poly1305

Supported Data Obfuscation Methods

  • Erasure
  • Redaction (with custom values depending on input)
  • Hashing
  • Unique Random IDs (consistent within tables)
  • Linked Random IDs (consistent across tables)
  • Noise Addition
  • Quantization, with optional scaling and non-linear transformations, eventually combined with noise addition
  • Encryption at read

Supported Authentication Methods

Multiple authentication methods can be combined, depending on the needs

  • private/public key pair
  • verifiable credentials
  • wallet ownership (for any of the supported blockchains)
  • NFTs ownership
  • Zero-Knowledge Proofs
  • on-chain direct payments or subscriptions
  • on-chain smart contract state or function result
  • on-chain token ownership or staking
  • email magic link

The authentication methods above can also be used to control access dynamically at row level, meaning that - if a table is configured to have this functionality - a user that has write access to the table can specify the roles that are authorized to read it or set custom rules using any of the methods above.

Supported Hashes

  • SHA-256
  • SHA-512
  • HmacSHA256
  • HmacSHA512
  • Keccak-256
  • Keccak-512
  • MiMC
  • Poseidon
  • Salted Keccak-256
  • Salted Keccak-512
  • Blake2
  • Salted SHA512-SPHINCS256
  • Salted XMSS256
  • Salted XMSS512

Supported Signatures

Weavechain uses secp256k1 for its private/public keys authentication, but also maintains and can handle keys for few other different signature schemes that can be enabled, depending on the needs of the app built on top of the nodes.

  • Ed25519
  • Threshold Ed25519
  • Crystals Dilithium
  • Blind RSA Signature
  • Borromean Ring Signature
  • BLS

Fees

Fees can be configured depending on the use case and there are two major ways to handle them:

  1. Paying on-chain or in a smart contract before having access to data or compute
  2. Pay as you go

Fees can be configured as:

  • one time payments or subscriptions, pre-paid on-chain or based on smart-contract logic
  • records count
  • records size
  • time based fees
  • tiered or capped fees
  • compute tasks pricing based on CPU usage or dynamic based on custom logic

Instalation

Weavechain nodes are built in java and can run on-prem as a docker or in standalone capacity. The installation steps are described below:

Docker Image

Standalone

Configure Compute To Data

Docker Installation

Linux/MacOS

  • create and go to a folder where the node data and configs should be kept
  curl -O https://public.weavechain.com/file/install.sh
  chmod a+x install.sh
  ./install.sh

eventually, if you did not configure docker to run by your user (sudo usermod -aG docker $USER), run

  sudo ./install.sh
  • subsequent start/stop of the node
  docker stop weave_node
  docker start weave_node

Windows

  • create and go to a folder where the node data and configs should be kept
  • open Docker Desktop, go to Settings -> Resources -> File sharing and add the path to this folder, then Appy & Restart docker
  • save install.bat in that folder or get it using
  curl -O https://public.weavechain.com/file/install.bat
  • run it

  • subsequent start/stop of the node

  docker stop weave_node
  docker start weave_node

Standalone Installation

Linux/MacOS

  • install java 17 or newer (brew install java on MacOS, sudo apt install openjdk-17-jre on Debian/Ubuntu, check a how-to for your psecific system)

  • extract the weavechain node

  wget https://public.weavechain.com/file/node-1.39.tar.bz2
  tar -xf node-1.39.tar.bz2
  chmod a+x node-1.39/bin/node
  • create the folders for config files and storage
  mkdir config
  mkdir storage
  • generate a new key pair and demo configs
  node-1.39/bin/node -kfs config
  • start the node
  node-1.39/bin/node config/demo.config

Windows

  • install Chocolatey: https://chocolatey.org/install
  • start a new Powershell with Adminstrator rights
  • install wget, bzip2 and Java if not already present
  choco install wget
  choco install bzip2
  choco install openjdk17
  • create a new folder for the node and go to it, for example
  mkdir c:\weavechain
  cd /d c:\weavechain
  • extract the weavechain node
  curl -O https://public.weavechain.com/file/node-1.39.tar.bz2
  tar -xf node-1.39.tar.bz2
  • create the folders for config files and storage
  mkdir config
  mkdir storage
  • generate a new key pair and demo configs
  node-1.39\bin\node.bat -kfs config
  • start the node
  node-1.39\bin\node.bat config\demo.config

Configure Compute

Docker

In order to run compute-to-data, you need to configure a service to run the tasks. The easiest to configure is a docker server.

  • if running in a docker container, make sure it's present or add a compute section in the node config:
  'compute': {
    'dockerServiceURL': 'http://host.docker.internal:2375',
    'keyStore': 'keystore.jks',
    'keyStorePass': 'password'
  },
  • if running as a standalone service
  'compute': {
    'dockerServiceURL': 'http://host.docker.internal:2375',
    'keyStore': 'keystore.jks',
    'keyStorePass': 'password'
  },
  • if running the node itself as a docker, replace localhost with host.docker.internal or the host ip obtained via /sbin/ifconfig or ipconfig
  • host.docker.internal works on windows or MacOS, while on Linux the host ip should be used or the docker network interface gateway, which is usually 172.17.0.1, but can differ if there are multiple docker networks
  • consider using https and authentication for production

Linux/MacOS/Windows:

  • run the following command
  docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
  • ARM
  • docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 alpine/socat@sha256:9e59291bebb792982c7d162fb821f7a46b1a587bc3a585240f813f135ae09b85 TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
    

**Windows**
- open Docker Desktop
- go to Settings -> General -> enable "Expose daemon on tcp://localhost"

Local Jupyter Installation

How to install a local jupyter server docker image preconfigured to easily connect to a local Weavechain node, having the python API and few demo notebooks, as well as pre-built libraries for homomorphic encryption (for x86-64 processors):

Linux/MacOS

  • go to the folder where the node was installed and the configs folder lives, then run
  curl -O https://public.weavechain.com/file/install_jupyter.sh
  chmod a+x install_jupyter.sh
  ./install_jupyter.sh

eventually, if you did not configure docker to run by your user (sudo usermod -aG docker $USER), run

  sudo ./install_jupyter.sh

Windows

  curl -O https://public.weavechain.com/file/install_jupyter.bat
  • run it

  • subsequent start/stop of the node

  docker stop weave_jupyter_public
  docker start weave_jupyter_public

Connecting

  • check the weave_jupyter_public docker image logs, either by opening Docker Desktop (if it's the case) and clicking on its name, or by running
  docker logs weave_jupyter_public
  • get the URL with the token shown in the logs. It should look something like http://localhost:18888/?token=1234567890abcdef
  • in case of docker restart, the token will change

Standalone

For the standalone node installation, jupyterlab-desktop can be a convenient choice.

Samples

Hello World

Bounty Instructions

Thanks for running our Hello World! After you’ve followed the steps below, click here to claim your WEV NFT to unlock early access to our future exclusive bounties, hackathon fellowships, events, token launch, and DAO.

Context on What's Happening

In this exercise, we're going to walk you through the basics of connecting to a Weavechain node, writing data, and reading it.

  • In the first step, you'll create a public / private keypair that represents your account. Normally you'd save this to be able to 'login again' with the same account, but for this exercise we don't need to keep it.
  • The first step also includes a step to write "Hello World!" to the node, with many fields nulled out to be filled automatically by the server.
  • The second step creates a second user, connects to the node, and then reads the last record written by the previous user.
  • The third step is purely informational, describing the definition of the remote table.

Javascript

Import the API library

import { WeaveAPI, WeaveHelper } from "@weavechain/weave-js-api"

1. Create a new session, then write a message

(hover the code block and click ⏵ to run it)

// Generate a key pair
const [ pub, pvk ] = WeaveHelper.generateKeys();
console.log("Public key: ", pub);
console.log("Private key: ", pvk);

// Connect to a public node (which was configured to allow writes from anyone)
const node = "https://public.weavechain.com:443/92f30f0b6be2732cb817c19839b0940c";
const organization = "weavedemo";
const encrypted = node.startsWith("http://");

// Create a new session
const cfg = WeaveHelper.getConfig(node, pub, pvk, encrypted)

const nodeApi = new WeaveAPI().create(cfg);
await nodeApi.init();

// Write a new record in a pre-defined table
//   hosted by the public node in an SQLite database
// Note: the table is public for this example, but it could have full RBAC
const scope = "shared";
const table = "hello";

const session = await nodeApi.login(organization, pub, scope || "*");

// The target table can optionally have some special columns that are auto-filled by the backend
const record = [
        null, //id, filled server side
        null, //timestamp, filled server side
        null, //writer public key, filled server side
        null, //signature, filled server side
        null, //writer IP, filled server side. Erasure is applied to obfuscate it on read
        "*",  //row level read access control (could be roles, accounts, blockchain wallets, NFTs etc.)
        "Hello World!"
    ];
const records = new WeaveHelper.Records(table, [ record ]);
await nodeApi.write(session, scope, records, WeaveHelper.Options.WRITE_DEFAULT);

2. Create a new session, read the last inserted record

const [ pub, pvk ] = WeaveHelper.generateKeys();
console.log("Public key: ", pub);
console.log("Private key: ", pvk);

// Connect
const node = "https://public.weavechain.com:443/92f30f0b6be2732cb817c19839b0940c";
const organization = "weavedemo";
const encrypted = node.startsWith("http://");

// Create a new session
const cfg = WeaveHelper.getConfig(node, pub, pvk, encrypted)

const nodeApi = new WeaveAPI().create(cfg);
await nodeApi.init();

const scope = "shared";
const table = "hello";

const session = await nodeApi.login(organization, pub, scope || "*");

// Read the last record
const limit = 1;
const filter = new WeaveHelper.Filter(null, {"id": "DESC"}, limit, null, null, null);
const result = await nodeApi.read(session, scope, table, filter, WeaveHelper.Options.READ_DEFAULT_NO_CHAIN);
console.log(result);

3. Remote table definition

{
    "columns": {
        "id": { "type": "LONG", "isIndexed": True, "isUnique": True, "isNullable": False },
        "ts": { "type": "LONG" },
        "pubkey": { "type": "STRING" },
        "sig": { "type": "STRING" },
        "ip": { "type": "STRING", "readTransform": "ERASURE" },
        "roles": { "type": "STRING" },
        "message": { "type": "STRING" }
    },
    "idColumnIndex": 0,
    "timestampColumnIndex": 1,
    "ownerColumnIndex": 2,
    "signatureColumnIndex": 3,
    "sourceIpColumnIndex": 4,
    "allowedRolesColumnIndex": 5,
    "isLocal": False,
    "applyReadTransformations": True
}
  • idColumnIndex: specifies the column to contain an autogenerated ID
  • timestampColumnIndex: fills the column automatically with the network time
  • ownerColumnIndex: fills the column automatically with the public key of the writer
  • signatureColumnIndex: fills the column with details about the record at write time (hash and signature)
  • sourceIpColumnIndex: fills the IP column automatically with the source writer
  • allowedRolesColumnIndex: Optional feature: row-level read access (controlled by the writer). "*" allows anyone to read it
  • isLocal": set to False allows reading by remote clients
  • applyReadTransformations: set to True enables data transformations at read

My First Node

Install docker images

  • Install a Weavechain node locally if not done already, the easiest way is by starting it as a docker
  • Install a local jupyter jupyter server to connect to the node (if not done already)

Run the notebook

  • make sure both the node and jupyter server dockers are running
  • connect to the local jupyter server http://127.0.0.1:18888/notebooks/hello-world.ipynb
  • use the token taken from the weave_jupyter_public docker logs
  • OR, if you're not using the provided docker server, download the notebook from here and run it in your locally configured jupyter server
  • run the cells one by one, in case of errors check for the docker images running properly and without errors in their logs and for the ports being open
  • contact us on Telegram or via email support@weavechain.com
  • see below a non-interactive output of how the notebook should look like

Sample of expected notebook:


In this demo notebook we will showcase a self-sovereign data scenario:

  • we will create a table in a shared data collection, that can be read by anyone in the network
  • mark some fields as personal information that is not to be shared
  • write a record
  • read it locally (and be able to see all fields)
  • read all records from a remote server

The default Weavechain node installation is preconfigured to support this scenario (by connecting to a public weave, having a shared data collection defined and mapped to a in-process SQLite instance and read rights for that collection already given).

1. Create an API session

import pandas as pd

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

WEAVE_CONFIG = "config/demo_client_local.config"
nodeApi, session = connect_weave_api(WEAVE_CONFIG)

scope = "shared"
table = "directory"
{"res":"ok","data":"pong 1674668207181"}

2. Create a local table

  • we drop the existing table if already existing and re-create it from scratch
  • a weavechain node can also connect to existing tables, reading their structure, but in this case we create it via the API
layout = { 
    "columns": { 
        "id": { "type": "LONG", "isIndexed": True, "isUnique": True, "isNullable": False },
        "name_nickname": { "type": "STRING" },
        "name_last": { "type": "STRING" },
        "name_first": { "type": "STRING" },
        "birthday": { "type": "STRING" },
        "email_personal": { "type": "STRING" },
        "phone_number": { "type": "STRING" },
        "address_country": { "type": "STRING" },
        "address_summary": { "type": "STRING" },
        "address_timezone": { "type": "STRING" },
        "linkedin_url": { "type": "STRING" },
        "discord_username": { "type": "STRING" },
        "telegram_username": { "type": "STRING" },
        "ethereum_wallet_address": { "type": "STRING" }
    }, 
    "idColumnIndex": 0, 
    "isLocal": False,
    "applyReadTransformations": True
}

nodeApi.dropTable(session, scope, table).get()
reply = nodeApi.createTable(session, scope, table, CreateOptions(False, False, layout)).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'CREATE_TABLE', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'shared', 'table': 'directory'}}

3. Mark some fields for erasure

  • the purpose is to protect certain fields when shared
reply = nodeApi.getTableDefinition(session, scope, table).get()
#print(reply)
layout = json.loads(reply["data"])["layout"]
layout["columns"]

newLayout = layout.copy()
del newLayout["layout"]
del newLayout["indexes"]
del newLayout["columnNames"]
newLayout["columns"] = { i["columnName"]: i for i in layout["columns"]}

newLayout["columns"]["phone_number"]["readTransform"] = "ERASURE"
newLayout["columns"]["address_summary"]["readTransform"] = "ERASURE"
newLayout["columns"]["ethereum_wallet_address"]["readTransform"] = "ERASURE"
newLayout["columns"]["birthday"]["readTransform"] = "ERASURE"

reply = nodeApi.updateLayout(session, scope, table, newLayout).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'UPDATE_LAYOUT', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'shared', 'table': 'directory'}}

4. Write a record in the local storage

records = Records(table, [ 
    [ 1, 'Nickname', 'Last Name', 'First name', '1980-01-01', 'email@gmail.com', '+40712345678', 'US', 'Secret', 'EST', 'https://www.linkedin.com/in/linkedin/', 'discord#1234', '@telegram', '0xwallet' ]
])
reply = nodeApi.write(session, scope, records, WRITE_DEFAULT).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'WRITE', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'shared', 'table': 'directory'}, 'data': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg,USr/yA9isOGMQ3/gNenSpZLi2VhwIP9x6UacGTkuBVc=,4YjeYJpUrcrpCf4oTEvuAspeJYiQYEy1AvTgbLsTo8UNzYbHKbNiV6jZihb7si5yc8MbXcr16kmGrieJgNW8s75e'}

5. Read the local record, from the local storage

  • since we read with the owner key and from the local node, we expect the records to have all fields visible
scope = "shared"
table = "directory"

reply = nodeApi.read(session, scope, table, None, READ_DEFAULT_NO_CHAIN).get()
#print(reply)
df = pd.DataFrame(reply["data"])

df.head()
id name_nickname name_last name_first birthday email_personal phone_number address_country address_summary address_timezone linkedin_url discord_username telegram_username ethereum_wallet_address
0 1 Nickname Last Name First name 1980-01-01 email@gmail.com +40712345678 US Secret EST https://www.linkedin.com/in/linkedin/ discord#1234 @telegram 0xwallet

5. Connect to proxy server

WEAVE_CONFIG_REMOTE = "config/demo_client_remote.config"
nodeApi2, session2 = connect_weave_api(WEAVE_CONFIG_REMOTE)
{"res":"ok","data":"pong 1674668209764"}

6. Read all shared records

  • we expect the records that we don't own to have certain fields erased for privacy
scope = "shared"
table = "directory"

reply = nodeApi2.read(session2, scope, table, None, READ_DEFAULT_MUX_NO_CHAIN).get()
#print(reply)
df = pd.DataFrame(reply["data"].get("result"))

df.head()
id name_nickname name_last name_first birthday email_personal phone_number address_country address_summary address_timezone linkedin_url discord_username telegram_username ethereum_wallet_address _nodeKey
0 1.0 Nickname Last Name First name email@gmail.com US EST https://www.linkedin.com/in/linkedin/ discord#1234 @telegram weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg

7. Check the local node for all operations on the shared data

reply = nodeApi.history(session, scope, table, None, HISTORY_DEFAULT).get()
#print(reply)
df = pd.DataFrame(reply["data"]).transpose()
#display(df)
pd.DataFrame(df.iloc[0]["history"])
account operation timestamp ip apiKey
0 weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg write 1674668207300999936 127.0.0.1 d2f86331322b497fb644e09862b681fdc2a9aa5180d0011c
1 weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg read 1674668207315000064 127.0.0.1 d2f86331322b497fb644e09862b681fdc2a9aa5180d0011c
2 weavexUTKAe7J5faqmiq94DXXWntyRBA8bPwmrUbCtebxWd3f read 1674668211353999872 34.28.85.136 1e2f9e5e7c9f406081256bf5709dd1eae5ccf2e324469e1c

Confidential Compute

Install docker images

  • Install a Weavechain node locally if not done already, the easiest way is by starting it as a docker
  • Install a local jupyter jupyter server to connect to the node (if not done already)
  • Allow running local docker images by running
  docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock

Prepare the data

  • go to the folder where the node was installed, download the sample.csv and save it under storage/files/private_files (create the private_files folder if missing), or do it from command line once in the weavechain node folder
  mkdir -p storage/files/private_files
  cd storage/files/private_files
  curl -O https://public.weavechain.com/file/sample.csv  

Run the notebook

  • make sure both the node and jupyter server dockers are running
  • connect to the local jupyter server http://127.0.0.1:18888/notebooks/sample-compute.ipynb
  • use the token taken from the weave_jupyter_public docker logs
  • OR, if you're not using the provided docker server, download the notebook from here and run it in your locally configured jupyter server
  • run the cells one by one, in case of errors check for the docker images running properly and without errors in their logs and for the ports being open
  • contact us on Telegram or via email support@weavechain.com
  • see below a non-interactive output of how the notebook should look like

Sample of expected notebook:


In this demo notebook we will showcase running a compute to data:

  • we will create a table in a private data collection that cannot be accessed remotely
  • we'll populate it with data
  • run a compute to data task to train a model without having access to the data
  • verify the task lineage
  • generate a ZK proof for the data

The default Weavechain node installation is preconfigured to support this scenario (by connecting to a public weave, having a private data collection defined and mapped to a in-process SQLite instance and read rights for that collection already given).

1. Create an API session

import pandas as pd

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

WEAVE_CONFIG = "config/demo_client_local.config"
nodeApi, session = connect_weave_api(WEAVE_CONFIG)
{"res":"ok","data":"pong 1674717913804"}

2. Read data from the prepared file

  • go to the folder where the local node was installed
  • download sample.csv and place it under storage/file/private_files folder
  • theoretically we could have used the file from the jupyter server, using this step to show how to connect a local storage to the node
  • the private_files storage is already configured in the node at install time, the following config section marking it as non-replicated and as storing raw files (many formats are supported, from CSV to feather or ORC, for those each file being treated as a table)
  'private_files': {
     'connectionAdapterType': 'file',
     'replication': {
       'type': 'none',
      },
      'fileConfig': {
        'rootFolder': 'weavestorage/files',
        'format': 'file'
      }
  }
file_storage = "private_files"
file = "sample.csv"

import csv, base64
from io import StringIO
reply = nodeApi.downloadTable(session, file_storage, file, None, "file", READ_DEFAULT_NO_CHAIN).get()
data = base64.b64decode(reply["data"]).decode("utf-8-sig")

df = pd.read_csv(StringIO(data), sep=",")
display(df.head())
id name age gender air_pollution alcohol_use dust_allergy occupational_hazards genetic_risk chronic_lung_disease ... fatigue weight_loss shortness_of_breath wheezing swallowing_difficulty clubbing_of_fingernails frequent_cold dry_cough snoring level
0 1 Lorenzo Rasmussen 33 1 2 4 5 4 3 2 ... 3 4 2 2 3 1 2 3 4 1
1 2 Zechariah Gallegos 17 1 3 1 5 3 4 2 ... 1 3 7 8 6 2 1 7 2 2
2 3 Lukas Jenkins 35 1 4 5 6 5 5 4 ... 8 7 9 2 1 4 6 7 2 3
3 4 Trey Holden 37 1 7 7 7 7 6 7 ... 4 2 3 1 4 5 6 7 5 3
4 5 Branson Rivera 46 1 6 8 7 7 7 6 ... 3 2 4 1 4 2 4 2 3 3

5 rows × 26 columns

2. Create a local table private table starting from the file

  • we drop the existing table if already existing and re-create it from scratch
  • a weavechain node can also connect to existing tables, reading their structure, but in this case we create it via the API
  • we create the table in a pre-configured data collection that will be not replicated and stored in a local SQLite
  'private_files': {
     'connectionAdapterType': 'sqlite',
     'replication': {
       'type': 'none',
      },
      'jdbcConfig': {
        'database': 'weavestorage/storage_private.db'
      }
  }
data_collection = "private"
table = "oncology_data"

columns = {}
for c in df.columns:
    if c == "id":
        coldef = { "type": "LONG", "isIndexed": True, "isUnique": True, "isNullable": False }
    elif c == "name":
        coldef = { "type": "STRING", "readTransform": "ERASURE" }
    else:
        coldef = { "type": "DOUBLE" }
    columns[c] = coldef

layout = { 
    "columns": columns, 
    "idColumnIndex": 0, 
    "isLocal": False,
    "applyReadTransformations": True
}
#print(layout)

nodeApi.dropTable(session, data_collection, table).get()
reply = nodeApi.createTable(session, data_collection, table, CreateOptions(False, False, layout)).get()
print(reply)

records = Records(table, df.to_numpy().tolist())
reply = nodeApi.write(session, data_collection, records, WRITE_DEFAULT).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'CREATE_TABLE', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'private', 'table': 'oncology_data'}}
{'res': 'ok', 'target': {'operationType': 'WRITE', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'private', 'table': 'oncology_data'}, 'data': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg,4RKj6WTnS2AQrLXz04Sr2UnBxcS7dn0am5ymb2KiHDs=,3pHcKrG2afiuoMQ6x6w8GaArkn5TjjfwCcwiCqWotW1kUKMPh4kAv32yBmU8Lr85dcYcv1g68TexDb4riPMZAyQB'}
reply = nodeApi.read(session, data_collection, table, None, READ_DEFAULT_NO_CHAIN).get()
#print(reply)
df = pd.DataFrame(reply["data"])

df.head()
id name age gender air_pollution alcohol_use dust_allergy occupational_hazards genetic_risk chronic_lung_disease ... fatigue weight_loss shortness_of_breath wheezing swallowing_difficulty clubbing_of_fingernails frequent_cold dry_cough snoring level
0 1 Lorenzo Rasmussen 33 1 2 4 5 4 3 2 ... 3 4 2 2 3 1 2 3 4 1
1 2 Zechariah Gallegos 17 1 3 1 5 3 4 2 ... 1 3 7 8 6 2 1 7 2 2
2 3 Lukas Jenkins 35 1 4 5 6 5 5 4 ... 8 7 9 2 1 4 6 7 2 3
3 4 Trey Holden 37 1 7 7 7 7 6 7 ... 4 2 3 1 4 5 6 7 5 3
4 5 Branson Rivera 46 1 6 8 7 7 7 6 ... 3 2 4 1 4 2 4 2 3 3

5 rows × 26 columns

3. Mark the table private

layout["isLocal"] = True
nodeApi.updateLayout(session, data_collection, table, json.dumps({ "layout": layout})).get()
{'res': 'ok',
 'target': {'operationType': 'UPDATE_LAYOUT',
  'organization': 'weavedemo',
  'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg',
  'scope': 'private',
  'table': 'oncology_data'}}

and data cannot be read any longer except from the local node (we expect a Not authorized reply here)

reply = nodeApi.read(session, data_collection, table, None, READ_DEFAULT_NO_CHAIN).get()
print(reply)
{'res': 'err', 'target': {'operationType': 'READ', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'private', 'table': 'oncology_data'}, 'message': 'Not authorized'}

4. Train an ML model on the private data

  • run on the node machine
  docker pull gcr.io/weavechain/oncology_xgboost:latest
  • use latest-arm64 if your machine is ARM
  • the data owner needs to purposely enable running a certain image
  • the node needs to be able to connect to the local docker instance
  • in the default configuration file installed with the node, the sample script is pre-authorized with the following line
  'allowedImages': [ 'gcr.io/weavechain/oncology_xgboost' ]
  • in case of error, uncomment the #print(reply) below to see details
  • (compute to data is just one of the patterns of confidential computing supported, MPC and Homomorphic Encryption could also be used)
reply = nodeApi.compute(session, "gcr.io/weavechain/oncology_xgboost", COMPUTE_DEFAULT).get()
#print(reply)
output = reply["data"]["output"]
print(output[:1200] + "...")
output = json.loads(output)
{"model": "YmluZgAAAD8XAAAAAwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAG11bHRpOnNvZnRwcm9iBgAAAAAAAABnYnRyZWUsAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAgAAAAIAAIAAAJBAAAAAgAMAAAAEAAAACgAAgAAAYEAAAAAABQAAAAYAAAAJAACAAADwQAEAAIAHAAAACAAAABYAAIAAAKBAAQAAAAkAAAAKAAAACQAAgAAAIEACAACA//////////8AAAAA1mVlvgIAAAD//////////wAAAADmFLw+AwAAgP//////////AAAAAEGE5D4DAAAA//////////8AAAAA5RlPvgQAAID//////////wAAAADkGc8+BAAAAP//////////AAAAAG0+Y779nEdD4zjeQ1p2i70AAAAASfgoQ3EcU0P6hyI/AAAAAGRhoUFUVWlDjUE0vwAAAADk9SNC4zgCQycHqz8AAAAAz+gWQhzHoUJlQ/6+AAAAAAAAAACN42RDMio/vwAAAAAAAAAA4ziOQBW8nD8AAAAAAAAAAKqq8kI2br4/AAAAAAAAAADjOA5BlJUsvwAAAAAAAAAA4zgOQZOVrD8AAAAAAAAAAP//j0KwXj2/AAAAAAEAAAAVAAAAAAAAA...

5. Check the variable importance in the trained model

  • we can now use the model that was trained on data that is not seen by the researcher
  • we need to install xgboost in order to do so, run the section below only once (ARM machines might xgboost encounter version mismatches)
!pip install scikit-learn
!pip install xgboost
!pip install matplotlib
import base64
from xgboost import XGBClassifier

f = open("model.serialization", "wb")
f.write(base64.b64decode(output["model"]))
f.close()

model = XGBClassifier()
model.load_model('model.serialization')
if output.get("features") is not None:
    model.get_booster().feature_names = output["features"]
#print(model)

vimp = model.get_booster().get_score(importance_type='weight')
#print(vimp)
keys = list(vimp.keys())
values = list(vimp.values())
data = pd.DataFrame(data=values, index=keys, columns=["score"]).sort_values(by = "score", ascending=False)
data.nlargest(30, columns="score").plot(kind='barh', figsize = (20, 10)).invert_yaxis()
/usr/local/lib/python3.9/dist-packages/xgboost/sklearn.py:782: UserWarning: Loading a native XGBoost model with Scikit-Learn interface.
  warnings.warn("Loading a native XGBoost model with Scikit-Learn interface.")

png

6. Verify signature for the output model

  • the signature is done on the hash of all input data, the hash of the docker image and the hash of the output
  • these hashes could be put on a blockchain as a proof of the ML model lineage
  • somebody with access to data can verify the input hashes
  • if multiple people have access to the data (and the training is deterministic), the same hashes are expected to be signed by different nodes
import base58
data = reply["data"]

signature = data["outputSignature"]
check = nodeApi.verifyLineageSignature(signature, data.get("inputHash"), data.get("computeHash"), data.get("paramsHash"), data["output"])

print("Signature:", data["outputSignature"])
print("Valid:", check)
print("\nInput Hash:", data["inputHash"])
print("Compute Hash:", data["computeHash"])
print("Output Hash:", data["outputHash"])
print("Output:", data["output"][:400] + "..." + data["output"][-400:])
Signature: 2psqu7mwhn3KLy1Vzb9uSBh1QSNuka4aynk7m7VwXvdvDe5cAzXd3HP4NGtgWNV2pzToEsadGJNTpPwtxmNgcE3z
Valid: True

Input Hash: 6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN
Compute Hash: 3ia9p7Ayg6PBmFg9zUXVyrmUYbt4jz4YCUY3Cx7nXE1Q
Output Hash: YWuSGd184YZhfDWw758gPJaEmsCNqe6rfGBkznbWuF5
Output: {"model": "YmluZgAAAD8XAAAAAwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAG11bHRpOnNvZnRwcm9iBgAAAAAAAABnYnRyZWUsAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...6IjMifX0=", "features": ["age", "air_pollution", "alcohol_use", "balanced_diet", "chest_pain", "chronic_lung_disease", "clubbing_of_fingernails", "coughing_of_blood", "dry_cough", "dust_allergy", "fatigue", "frequent_cold", "gender", "genetic_risk", "obesity", "occupational_hazards", "passive_smoker", "shortness_of_breath", "smoking", "snoring", "swallowing_difficulty", "weight_loss", "wheezing"]}

7. Generate zk proofs for data

  • Bulletproofs are used and multiple gadgets are supported (see the API)
  • generating proofs can be very time consuming as the volume of data grows
options = ZKOptions(False, 300, ["*"], 2048, DEFAULT_COMMITMENT)
reply = nodeApi.zkProof(session, data_collection, table, "numbers_are_non_zero", json.dumps({}), [ "age" ], None, options).get()
proof = reply["data"]
print(proof[:400] + "..." + proof[-400:])
A1BoqCGaWqcPbn46SdNoWUgC3T3i3D9TXHLdauL55MDxpCosaRwtFoMHDj8MFchaStvrMUk7EkGDGEptdyGk5vh2RjYSAFZBio1XuDRTkau2AYED4eA1zZV26GEX6rytpvH8SJ4DJevS2WKeDsL2fHPQ4zwuLqkqSNUhWCJPeoZmsQ56VPNJoqKewC6sDLPE1so33wA5bJpot8oFUpiETCEiMFF4J72ZDHbR46ix9kcVdZugiJJhFaVanyq8U7SATHLZyNxH4abjQ2aXEuVWtfnU3guuqggUFLg8R5BwmkMtvwZXXrxJAR3gHnxs3EFv887csDyTyxiPsj2U51gd4E32AXbDADH9b5DUFLWVWsqfxV7QDmG9yT2k2nuhoByTgL9jhMjwErgAKw24...UErC2vvTcKwUbpZXcoaKuyKj4S3gzUaWVt3ZamD7yEmu8nb1EFR9wPNF8pDj5ErfQT4JbGLK86d3DfunZ5DxvF9zaXneALTedwdjviyQNykK7uMR2kyqvbwZ75apJhMrQNemigN5ndYX5QymEStKrTKgm1QVaLLxGAtjJHdqAeXtRDnd2bGQ2uFMCSJJQqFxFrKNWK2CK6dxg52jB6xRKzbN3GH4jXFDrjQUgXtvgBThd7VYBtZGK9STmcpsGPKujzu7Ls9NEuXHgTFJaXQdZ1CaUCvcGxrqE3EDooiE13gkqDkpbqBg2Mo9SzmreYugnWY9PiHrLfRzgthssH4hh63MAfmPwSa7oFp8c1RarNUeScXQw4YPGtAZJvC23m2SLhySyDxedHckZs3c

Verify proof

reply = nodeApi.verifyZkProof(session, proof, "numbers_are_non_zero", json.dumps({ "count": 1000 }), None, 2048).get()
print(reply)
{'res': 'ok', 'data': 'true'}

Connecting a local database

Install docker images

  • Install a Weavechain node locally if not done already, the easiest way is by starting it as a docker
  • Install a local jupyter jupyter server to connect to the node (if not done already)
  • Allow running local docker images by running
  docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock

Prepare the data

  • go to the folder where the node was installed, download the sample.csv and save it under storage/files/private_files, or do it from command line
  cd storage/files/private_files
  curl -O https://public.weavechain.com/file/sample.csv  

Run the notebook

  • make sure both the node and jupyter server dockers are running
  • connect to the local jupyter server http://127.0.0.1:18888/notebooks/sample-localdb.ipynb
  • use the token taken from the weave_jupyter_public docker logs
  • OR, if you're not using the provided docker server, download the notebook from here and run it in your locally configured jupyter server
  • run the cells one by one, in case of errors check for the docker images running properly and without errors in their logs and for the ports being open
  • contact us on Telegram or via email support@weavechain.com
  • see below a non-interactive output of how the notebook should look like

Sample of expected notebook:


In this demo notebook we will showcase connecting a local database

1. Create an API session

import pandas as pd

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

WEAVE_CONFIG = "config/demo_client_local.config"
nodeApi, session = connect_weave_api(WEAVE_CONFIG)

data_collection = "localdb"
table = "oncology_data"
{"res":"ok","data":"pong 1674727453166"}

2. Install a local database (if not already having one)

  • it can be any database or file storage from the ones supported
  • for the example we will assume a local postgres server is installed
  • or you can start a new postgres instance as a docker following the "How to use this image" step from here. Sample:
  docker run --name some-postgres -p 0.0.0.0:5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres

Create a table and populate it with data

  • go to the folder where the node is installed
  • download a sample file
  curl -O https://public.weavechain.com/file/sample.csv
  • start the psql command prompt
  psql -U postgres -d postgres -h localhost -p 5432
  • if psql is not available, install it (see this guide from timescale) or run it from docker
  docker run -it postgres /bin/bash -c "psql -U postgres -d postgres -h host.docker.internal -p 5432"
  • ideally create a new database and user, but to simplify the steps we'll use the default postgres database and user
  • in the psql prompt, create a new table
  CREATE TABLE "oncology_data" ("id" BIGINT NOT NULL,"name" TEXT,"age" NUMERIC,"gender" NUMERIC,"air_pollution" NUMERIC,"alcohol_use" NUMERIC,"dust_allergy" NUMERIC,"occupational_hazards" NUMERIC,"genetic_risk" NUMERIC,"chronic_lung_disease" NUMERIC,"balanced_diet" NUMERIC,"obesity" NUMERIC,"smoking" NUMERIC,"passive_smoker" NUMERIC,"chest_pain" NUMERIC,"coughing_of_blood" NUMERIC,"fatigue" NUMERIC,"weight_loss" NUMERIC,"shortness_of_breath" NUMERIC,"wheezing" NUMERIC,"swallowing_difficulty" NUMERIC,"clubbing_of_fingernails" NUMERIC,"frequent_cold" NUMERIC,"dry_cough" NUMERIC,"snoring" NUMERIC,"level" NUMERIC, CONSTRAINT pk_oncology_data PRIMARY KEY ("id"));
  • and, in the same psql prompt, populate it with data (keep the \ at the beginning)
  \COPY oncology_data FROM 'sample.csv' DELIMITER ',' CSV HEADER;

3. Add a new connection in the configuration file

  • go to the node installation folder and edit config/demo.config
  • add a new item in the databases section
  'localdb': {
    'connectionAdapterType': 'pgsql',
    'replication': {
        'type': 'none',
        'allowedCachingIntervalSec': 604800
    },
    'jdbcConfig': {
      'host': 'host.docker.internal',
      'port': 5432,
      'schema': 'public',
      'database': 'postgres',
      'user': 'postgres',
      'pass': 'mysecretpassword'
    }
  },
  • If the node was started from docker, the address must point to the docker host machine, host.docker.internal will work on MacOS and windows. Use localhost if the node was started as standalone rather than a docker. Or the internal IP obtained via ipconfig/ifconfig. On linux 172.17.0.1 can also be used most of the time (usually assigned for the host machine to be visible from the docker if it's the single docker network interface)

Flag the node to reload the configuration file from disk

  • execute the following command in the notebook
reply = nodeApi.resetConfig(session).get()
print(reply)
{'res': 'ok', 'data': 'weaveconfig/demo.config'}

Restart the node

  • run from the command prompt
  docker stop weave_node
  docker start weave_node

4. Read data from the newly added table

nodeApi, session = connect_weave_api(WEAVE_CONFIG)

reply = nodeApi.read(session, data_collection, table, None, READ_DEFAULT_NO_CHAIN).get()
#print(reply)
df = pd.DataFrame(reply["data"])

df.head()
{"res":"ok","data":"pong 1674727467726"}
id name age gender air_pollution alcohol_use dust_allergy occupational_hazards genetic_risk chronic_lung_disease ... fatigue weight_loss shortness_of_breath wheezing swallowing_difficulty clubbing_of_fingernails frequent_cold dry_cough snoring level
0 1 Lorenzo Rasmussen 33 1 2 4 5 4 3 2 ... 3 4 2 2 3 1 2 3 4 1
1 2 Zechariah Gallegos 17 1 3 1 5 3 4 2 ... 1 3 7 8 6 2 1 7 2 2
2 3 Lukas Jenkins 35 1 4 5 6 5 5 4 ... 8 7 9 2 1 4 6 7 2 3
3 4 Trey Holden 37 1 7 7 7 7 6 7 ... 4 2 3 1 4 5 6 7 5 3
4 5 Branson Rivera 46 1 6 8 7 7 7 6 ... 3 2 4 1 4 2 4 2 3 3

5 rows × 26 columns

5. Make the table private

reply = nodeApi.getTableDefinition(session, data_collection, table).get()
#print(reply)
layout = json.loads(reply["data"])["layout"]
layout["isLocal"] = True
reply = nodeApi.updateLayout(session, data_collection, table, json.dumps({ "layout": layout})).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'UPDATE_LAYOUT', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'localdb', 'table': 'oncology_data'}}

and fail to read the data

  • we expect a Not authorized reply here
reply = nodeApi.read(session, data_collection, table, None, READ_DEFAULT_NO_CHAIN).get()
print(reply)
{'res': 'err', 'target': {'operationType': 'READ', 'organization': 'weavedemo', 'account': 'weaveyh5R1ytoUCZnr3JjqMDfhUrXwqWC2EWnZX3q7krKLPcg', 'scope': 'localdb', 'table': 'oncology_data'}, 'message': 'Not authorized'}

6. Compute a Merkle Tree from a subset of columns in the private table

salt = "salt1234" # Same salt used for records hashes, this can be improved to have different salts for *each distinct writer*

filter = Filter(None, None, None, None, [ "name", "age" ])
reply = nodeApi.merkleTree(session, data_collection, table, filter, salt, READ_DEFAULT_NO_CHAIN).get()
tree = reply["data"]["tree"]
rootHash = reply["data"]["rootHash"]
ts = reply["data"]["timestamp"]
rootHashSignature = reply["data"]["signature"]

print("Generated at", ts)
print("Root Hash", rootHash)
print("Signature", rootHashSignature)
print("")
print(tree[:400] + "..." + tree[-400:])
Generated at 1674727577162
Root Hash iax9Vpupq3bXG3DnBTQyKdWr2s3Uh4Q6qcZAPNVJAgb
Signature 4RdBCQgKWfJqCvD7PrEkYyWSR3KtT8S8eYTdyveDyLFA6RNiwp28R1LvuEtMPAw8ceRzjNddQvQhKFQiRFy9nZoL

iax9Vpupq3bXG3DnBTQyKdWr2s3Uh4Q6qcZAPNVJAgb;SH3Ch1Jwxcs363PwaCYvREgmPVfqr8NcPovZNgXa4js,FE8mTPPJ3uDXTJNxppNa4CeHvfu2Zeo9sjeL71YS12zK;HKgnz9cLoWn4nDapvnGm6K6gH6H5Y2rrgMguaMoKgyek,7s52zKzog488LkgMdEKrkFRoF8opVB9AdrDKtSdSF92j,9tnJTNhSKpZmDViGXtPB2SpoiozEpGkFVNk7FgtLtBQv,A5tNHAHQs61pSzqLJbT9v2ca8ix53kNzzDXKSZ9b6HFy;7oyQ7nq5bLX4J9Es6GQdZcxUpc8FetPZLeyJVFpEnydd,BybqudmZBw54NJhebTWt8yJMf4ar6jnxLRhD2MFsZ7...DhvjP86uY7x4eK7QRrcocBct5XJNGsVUWWREc6zd,E9QLrZqb5M6oXoEQpQ3B5KMvmHJ13Xdb9jUxRgJ3FaJA,F7dfae6vFLs3a2a2w9uET87Euw2uxE2qssvqYcmHPUeP,5Am75Eu1NYQbLuEfTTGDUiH5sWhPcumC3deC4yVYpYkn,HrsDMUrxxgjoXrfeMfSaks8mGK6hbDnyDQjhZwuXnCT7,DL96tTVtfEyRCZCv3EeNd4cStYqX4hR8r5anUi8eAMcC,Gaocem33txtM2KMJbUaMGrEDFrYH1H1oJB25Qb565Ao2,7u4EXgwGPmoqgz6cvAFyfvjAP7cvJcBeHwrK9XpYz9RZ,FpT72W53qoU3YXAZg1DKMCUVSpyLmjA6j52nSXYR9yRn

Check root hash signature

toSign = rootHash + " " + ts
check = nodeApi.verifySignature(rootHashSignature, toSign)
print("Check signature:", check)
Check signature: True

Verify the presence of a known record in the dataset

row = [ 'Lorenzo Rasmussen', 33.0 ]
recordHash = nodeApi.hashRecord(row, salt)
print(recordHash)
ARMe28cMdZvxBCYgBSALyncPnec4ijERrn2cDJgwgEHA
reply = nodeApi.verifyMerkleHash(session, tree, recordHash).get()
print(reply["data"])
true

7. Train a ML model on the private data hosted in our local database

  • we do it similarly how it is done in the Compute Sample, where we also check the model lineage
  • run on the node machine
  docker pull gcr.io/weavechain/oncology_xgboost:latest
  • use latest-arm64 if your machine is ARM
  • the data owner needs to purposely enable running a certain image
  • the node needs to be able to connect to the local docker instance
  • in the default configuration file installed with the node, the sample script is pre-authorized with the following line
  'allowedImages': [ 'gcr.io/weavechain/oncology_xgboost' ]
  • in case of error, uncomment the #print(reply) below to see details
  • (compute to data is just one of the patterns of confidential computing supported, MPC and Homomorphic Encryption could also be used)
reply = nodeApi.compute(session, "gcr.io/weavechain/oncology_xgboost", COMPUTE_DEFAULT).get()
#print(reply)
print(reply["data"]["output"][:1200] + "...")
{"model": "YmluZgAAAD8XAAAAAwAAAAEAAAAAAAAAAQAAAAcAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAG11bHRpOnNvZnRwcm9iBgAAAAAAAABnYnRyZWUsAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8BAAAAAgAAAAIAAIAAAJBAAAAAgAMAAAAEAAAACgAAgAAAYEAAAAAABQAAAAYAAAAJAACAAADwQAEAAIAHAAAACAAAABYAAIAAAKBAAQAAAAkAAAAKAAAACQAAgAAAIEACAACA//////////8AAAAA1mVlvgIAAAD//////////wAAAADmFLw+AwAAgP//////////AAAAAEGE5D4DAAAA//////////8AAAAA5RlPvgQAAID//////////wAAAADkGc8+BAAAAP//////////AAAAAG0+Y779nEdD4zjeQ1p2i70AAAAASfgoQ3EcU0P6hyI/AAAAAGRhoUFUVWlDjUE0vwAAAADk9SNC4zgCQycHqz8AAAAAz+gWQhzHoUJlQ/6+AAAAAAAAAACN42RDMio/vwAAAAAAAAAA4ziOQBW8nD8AAAAAAAAAAKqq8kI2br4/AAAAAAAAAADjOA5BlJUsvwAAAAAAAAAA4zgOQZOVrD8AAAAAAAAAAP//j0KwXj2/AAAAAAEAAAAVAAAAAAAAA...

Verifiable compute

Install docker images

  • Install a Weavechain node locally if not done already, the easiest way is by starting it as a docker
  • Install a local jupyter jupyter server to connect to the node (if not done already)
  • Allow running local docker images by running
  docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock

Prepare the compute tasks

  • run in a command line on the server where the node is running
  docker pull gcr.io/weavechain/download_dataset
  docker pull gcr.io/weavechain/faucet_once
  docker pull gcr.io/weavechain/train_model_dummy

Run the notebook

  • make sure both the node and jupyter server dockers are running
  • connect to the local jupyter server http://127.0.0.1:18888/notebooks/sample-verifiable.ipynb
  • use the token taken from the weave_jupyter_public docker logs
  • OR, if you're not using the provided docker server, download the notebook from here and run it in your locally configured jupyter server
  • run the cells one by one, in case of errors check for the docker images running properly and without errors in their logs and for the ports being open
  • contact us on Telegram or via email support@weavechain.com
  • see below a non-interactive output of how the notebook should look like

Sample of expected notebook:


In this demo notebook we will showcase verifiable computation and checking inclusion of input data in the trainig set of an AI model training.

Create an API session

import pandas as pd

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

WEAVE_CONFIG = "config/demo_ailineage_owner.config"
nodeApi, session = connect_weave_api(WEAVE_CONFIG)

data_collection = "vault"
articles_table = "medium_posts"

token = "USDC"
decimals = 6
{"res":"ok","data":"pong 1691601050445"}

Check initial node owner balance

Bridge address: https://mumbai.polygonscan.com/address/0xB485e0813b567E1629B8083026307d4d9E2cDE0B

account = session.publicKey
reply = nodeApi.balance(session, account, "", token).get()
print("Custodial wallet", account, float(reply["data"]) / pow(10, decimals) if "data" in reply else 0)
Custodial wallet weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q 880016.0

Create table to store medium articles

layout = { 
    "columns": { 
        "id": { "type": "LONG", "isIndexed": True, "isUnique": True, "isNullable": False },
        "ts": { "type": "LONG" },
        "pubkey": { "type": "STRING" },
        "sig": { "type": "STRING" },
        "ip": { "type": "STRING" },
        "roles": { "type": "STRING" },
        "link": { "type": "STRING" },
        "title": { "type": "STRING" },
        "author": { "type": "STRING" },
        "text": { "type": "STRING" }
    }, 
    "idColumnIndex": 0,  # Autogenerates IDs
    "timestampColumnIndex": 1, # Fills the column automatically with the network time
    "ownerColumnIndex": 2, # Fills the pubkey column automatically with the public key of the writer
    "signatureColumnIndex": 3, # Fills the column with an EdDSA signature of the record hash
    "sourceIpColumnIndex": 4, # Fills the column with an EdDSA signature of the record hash
    "allowedRolesColumnIndex": 5, # Allowed readers, specified by the writer
    "isLocal": False,
    "applyReadTransformations": True
}

nodeApi.dropTable(session, data_collection, articles_table).get()
reply = nodeApi.createTable(session, data_collection, articles_table, CreateOptions(False, False, layout)).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'CREATE_TABLE', 'organization': 'weavedemo', 'account': 'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q', 'scope': 'vault', 'table': 'medium_posts'}}

Run compute task to import data

  • this task performs an import from a dataset (kaggle in this case)
  • the task has full compute lineage, i.e. it has hashes for input/compute and output as a guarantee that the output datasetis the result of running this task at a given moment in time
  • we generate key pairs for the authors, which could be claimed later (not done in this sample, but if the dataset had an email field, we can enable tokens claims using email magic link authentication)
  • there is a separate flow in which authors can write data with their own keys
reply = nodeApi.compute(session, "gcr.io/weavechain/download_dataset", COMPUTE_DEFAULT).get()
display(reply)
{'res': 'ok',
 'target': {'operationType': 'COMPUTE',
  'organization': 'weavedemo',
  'account': 'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q'},
 'data': {'inputHash': '6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN',
  'console': '{"res":"ok","data":"pong 1691601070062"}\nDownloading dataset...\nWriting record for Justin Lee\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE for Justin Lee\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ol5So58BXoJIStjW9SuILYLUS8onZE1/mU90DZ3RFuY=,2vtap1n9cDCwMQh5hwzVVZvTKZ4e6CmjAzAYvHzDNX7KCZXK7GTvd83oKeLN2M3qkxEzoLaQp21y3NUZpxjZ4AX7\', \'ids\': \'1\'}\nWriting record for Conor Dewey\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavebvDnoef2cPLbRtqqH5uA2M1t6Svdz1C3d8zx43481W3z for Conor Dewey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebvDnoef2cPLbRtqqH5uA2M1t6Svdz1C3d8zx43481W3z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BUeRSwKjw8TtWO57SW26Sqn8x/cQKbXSDdtXrfoOvfU=,63WS3rTVYY4YvPN4XTz6sYfu6wnyCVLPBw3Pw6YZTbAK76nQrK2B8PguLLW3iA8xR5PnJAdZ2RmLzaJyte8NihCE\', \'ids\': \'2\'}\nWriting record for William Koehrsen\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavejZRDVDvctwquT1eQGM38v1tHubtPryRxq6K6rniVhkFq for William Koehrsen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavejZRDVDvctwquT1eQGM38v1tHubtPryRxq6K6rniVhkFq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TLSK2rMTMrAVVCYsjygSRzvw4Uo6PE4KrI8R/C9/UrE=,4kbbmUDgnpV8tZGrCVLEDEirSTWEmUmfCGZGnoa7Tey5ehYAaPeK51wEyKdghpu3LzzCDNh4bWdibeXD3adLzjnM\', \'ids\': \'3\'}\nWriting record for Gant Laborde\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveiWV2dK7p3AHhBkwMBjPqpM6vVM78D62HdUUBYxmMzdKb for Gant Laborde\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiWV2dK7p3AHhBkwMBjPqpM6vVM78D62HdUUBYxmMzdKb\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,hXPM1qHN2hiRAR2C27TxevCIQg6Pcf4w4v3HyEL4mao=,3jaembVRGeBGNbK6sQuqRn5Ru6QvR3Njn79LwG6rzE6SRHMmV9sXzR4g4k7TysbcGPfRaE1xxnYhacbPNNzamcDU\', \'ids\': \'4\'}\nWriting record for Emmanuel Ameisen\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix for Emmanuel Ameisen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,bUvZcqXP0WP2+UIrD1fdCSEK+tW2E7jjB04FXUYJ1U0=,2x77REhTMMTJGUnjJ66Dm3SxiA3tJmBP1nP6Xx4iabD9FpgrU4kAjRy5qvuasS2e1xfQDVkbm47cTt31giDxx1Wu\', \'ids\': \'5\'}\nWriting record for Irhum Shafkat\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave21Jj2Zs46JsdG9AxgrABy3pr6CBsjZBV862q7SAvs6Jj4 for Irhum Shafkat\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21Jj2Zs46JsdG9AxgrABy3pr6CBsjZBV862q7SAvs6Jj4\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Dec+fcVRWGl22qcXhBiYMp+7/AZzkJAYLFnXrXeEq9I=,4cj5kwqo3M534xDheSgJ1g5x3jbWcJf84epJaPif6hpaCj4TGyjtBqxQrbXYShoEjoaegmM9emY9engCmpt9nYRG\', \'ids\': \'6\'}\nWriting record for Sam Drozdov\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave21P5vXr69n69QZ6gk9NLz5BbkDFiUYNgjm2RzEsePnYPQ for Sam Drozdov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21P5vXr69n69QZ6gk9NLz5BbkDFiUYNgjm2RzEsePnYPQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,i5e3InP9pYLsPPMXmd37PQGfYL2eNcbHCX9WKtxgzpA=,2RB6puHmhoxwVbqNPoQjhXjA8QfhH2iYyJANbjtaWTDDHhZgomBCbgYGykShDMSudeUNpfqQUaQmLbkPt2mi79hQ\', \'ids\': \'7\'}\nWriting record for Conor Dewey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebvDnoef2cPLbRtqqH5uA2M1t6Svdz1C3d8zx43481W3z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,gpGfPkB925ckB3GOMIFecalo2YhArh6UJH5w9I6xSns=,3iTi5tLsse6g79mvvnZg3XNtGdvq35xBJsP3oapg3Qjrf6Zv8Nz53V5xfgsZRuQWrfYZZrukp7W4d75frn7yofeR\', \'ids\': \'8\'}\nWriting record for Abhishek Parbhakar\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewYC94Hwi5bGhFeorEp2sghZKXBWx1yreFYBAs5Qjnmz7 for Abhishek Parbhakar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewYC94Hwi5bGhFeorEp2sghZKXBWx1yreFYBAs5Qjnmz7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,f/Fd0javNefBjNUZgdioAxNjTXc/uvdn9wZnoUk8hi0=,4QUPXLrAfqa22WpsNxm8PuPbfdtjfyJRx9Zw2Tm7ci9gv2QH2e8zEuLhBJUGFC7bCnU6SvHYVSN8VWT15L9mroVM\', \'ids\': \'9\'}\nWriting record for Aman Dalmia\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexjioGxCmvk2znFELkHXASjMbJzqMGX53a3wTjdmVo2q5 for Aman Dalmia\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexjioGxCmvk2znFELkHXASjMbJzqMGX53a3wTjdmVo2q5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,1yeEdKmBhSg94p10DP2ES5f5eGrCA6yPsnVyutFA+wQ=,JFfvt1jrNBMEhcUH9Vy6rut983suu2G1fiLedUAfgN8rooUpr6jFjdqDcXVqwZWND3tEKbJcr6rMfF18Zk1912s\', \'ids\': \'10\'}\nWriting record for Sophia Arakelyan\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavecd1LPk6JgVEBxkxgTrSGGYQ625qTzbgrB3WoLozGtFLT for Sophia Arakelyan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecd1LPk6JgVEBxkxgTrSGGYQ625qTzbgrB3WoLozGtFLT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,MJ0IR/RIokI5a25NanNHkClHZN4CiHqYzlO0/JsD9jg=,3YE5wqRGyFY8RooJR8YizFLdmGdwEqT6hyTiLRmHDXxp4ouZYYSY2Hcxuht5dDWMctYKKUZNTiUo7bCQTzrHAhAW\', \'ids\': \'11\'}\nWriting record for Dr. GP Pulipaka\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefJHY7kHgG9cPmv6Kt1GBu7XnB71jBxCbrZvxoWPe3Exa for Dr. GP Pulipaka\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefJHY7kHgG9cPmv6Kt1GBu7XnB71jBxCbrZvxoWPe3Exa\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,p5Y9VgLs+jBovbvx967wCALgpmXdZWHLQJ1+kDjBfUI=,25krdGcdtzAJetEBhDtZthYjkubyGNDiMVLnuEphb8wVeXKRt295RMtr5VxbJAnvyRKrdCaqK7sPxNB2nPyTueTm\', \'ids\': \'12\'}\nWriting record for Scott Santens\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevrXLcK18w9PjPMPgdpASHSXzWmgdDPP7AkUzpBm8rjqP for Scott Santens\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevrXLcK18w9PjPMPgdpASHSXzWmgdDPP7AkUzpBm8rjqP\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BeyC+7SPKHN19J7urq0IFDGWHBeMj1nGSR1pzD//kC0=,4nSwNSa7QmgYv7c7BUMBXXDJ1nZpR4ZisRiLkiawfshQYeU6PxbHiEAg1pD3raZ64fRuo1t8d4X86Ait3pmKgzRa\', \'ids\': \'13\'}\nWriting record for Adam Geitgey\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ce3Az18B6la45OfF1TsbhU3zMTLG5rn9K/4yh45fN/U=,erLLecXwc2qS8QhzRfB6Sqrer6h4bsyQjrLUsC74miCiiWDF1UDCun9qWmHm6ovwBnsnWzdgTP6zoc6PtmdaSSk\', \'ids\': \'14\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,WrsfO//Vik3pptOMuEhf7MrUSLk0XkdZ8carSffWhMc=,bHPgvYBfheT4wqRumtKkEcFyxGSjrJg1J5YAjyexAN94iQ4mybQ1YH8YfgPrG8xGJu2Fewr94jCW5BKfB7fxD61\', \'ids\': \'15\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3NzsGRzc1rZklINoqsZYBQeA8mvkd0JGRLQBupMByYE=,G63JbyhiV4wTpu8RDcvVXVCKK2oMUXJULdsYRapnyjpNdwEdCrG9pmGB1e37gvMDzcUvL7HCtDiUPu3HcJpw5Mu\', \'ids\': \'16\'}\nWriting record for Xiaohan Zeng\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave274mgR5wCdAZHhj985J8cjNaxtcRGuhGWXcunoqPqLctE for Xiaohan Zeng\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave274mgR5wCdAZHhj985J8cjNaxtcRGuhGWXcunoqPqLctE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xzfp+XSQhjEzf7quITIdPU+IAuoN8+Nr3keiQpyJFnc=,5sCqXZbJLAthqr5aSapLt1VpwBirghNfao5zyxEJGTRzryPmBQSb5pwzGNWXXD7LKHdDwtfFCUrPWVe3UJn2TPNn\', \'ids\': \'17\'}\nWriting record for Gil Fewster\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave28hJgLv9G3ku9ozEiukbaTgCR7TVxx2Q84aS1Ly9eWM1Z for Gil Fewster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28hJgLv9G3ku9ozEiukbaTgCR7TVxx2Q84aS1Ly9eWM1Z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,dGLki4ln5Ua0ZiRgxsPKNEwY1Kw5HOoZMYKRz1LFkgE=,4Mz1nimQha3Z9aTfqrzr9CJTzCSsUVRPBKPTXZgG85oJmuezRqZriijGPFgCPXHFm65wCS6krKpbTLgFEoNR4tDK\', \'ids\': \'18\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Tl+INgvqVYVpGI1uMVLtUxpTa7fqcpOaIj0aqW30uo4=,2zNsM4XMXHDVF5aUtze9VAMqrGhbxAxpJfuKmNJQ5yQ43SYSFYmFrXyJir7o7TvERvewA9HCUaawFqUaYqbHjhcn\', \'ids\': \'19\'}\nWriting record for David Venturi\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavepqSu5eoLj9AKrE8VU1eRHqpLNYEiVYW93kEUx1hknugq for David Venturi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepqSu5eoLj9AKrE8VU1eRHqpLNYEiVYW93kEUx1hknugq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,qfNP8xYLBXMu12S+7zvnxzEbwxgmM9jEQ2BmB9Qc0n4=,ULqvW8W1jp7oABnk8Wo9YpMHpV4YtevmghQedikHQ2vn3AXBFPTfvhmvY36nEXpAsxSF5K7dxBhg5aj7GHjKnBz\', \'ids\': \'20\'}\nWriting record for Michael Jordan\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22UJH4ZLA5GyPhwAJGVHAKW941yHS2f865YT536hB2ERF for Michael Jordan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22UJH4ZLA5GyPhwAJGVHAKW941yHS2f865YT536hB2ERF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,MDGbFUQ8LBRjc75zIrt49MwutWqstZUOa6i1BZErT0g=,5xyZdq3n3PWhm1hRQigjciEz8XTMNHy4UEd3bi6Tfc73fxPX2JtE9d5XuVLpsa6R9AE81f54AMtDTXhSBU65wkwk\', \'ids\': \'21\'}\nWriting record for Eran Kampf\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2AKhG7VDWkaXH9JJu7qntzjL7VG73pN8RsXR2WfnM6i5W for Eran Kampf\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AKhG7VDWkaXH9JJu7qntzjL7VG73pN8RsXR2WfnM6i5W\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,R4zTcHZwRZ7cInjsRmshFwX2imOwy+cypTPOR7lYtqw=,5nooqTmbZALb6SKtMVW1DRLbPCKtyDyVcfEYn64gcfQXGGPn9p1jwAhmZVMhKcD4CNBmFZuULoBtQMoXFgT9Zpz4\', \'ids\': \'22\'}\nWriting record for Oliver Lindberg\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavef17NKLEAN6HMixT3Fo35axqjQbQvAk7bmycrjD2Qy6Wp for Oliver Lindberg\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavef17NKLEAN6HMixT3Fo35axqjQbQvAk7bmycrjD2Qy6Wp\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,JoRbwNncqtJ0SrBduuP4/jihnE0szaDnN4JpFP101VY=,5dq1LudQp1ZBYaKr4inzVpB3jvqx3WSpgN8aotbUaPg8Z2u2PYR8mZ8UVWCGuB2Zn66CjTHJr6HuUVRVRt1QFxqF\', \'ids\': \'23\'}\nWriting record for Xu Wenhao\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavekLfLRHGf2jKSCRQLSZa6SRBsR8kBMEBNXRehypxbzNq1 for Xu Wenhao\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekLfLRHGf2jKSCRQLSZa6SRBsR8kBMEBNXRehypxbzNq1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,j7hrslO7IlJbsVPne3AfVs9qA9S/GL4V7+3w1ufQbxc=,3dNC95bh2wr6RbiRTiEbhTzVinLMGfC9vQS9eLX1Bifi8SQPdSBHi7xE6ppysUmw9tv7KCcLifz8WC2GXBjwskcd\', \'ids\': \'24\'}\nWriting record for Netflix Technology Blog\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW for Netflix Technology Blog\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,jK1Qt/c87qPPyk+MidIfUifx7DTCM6wBmOYYTVrjFnk=,5d42fKGdLHcFv4qeF2CBwknQgKqL71oxTtFkGa8Pcrh6S9ZdpBoqMJrFerodLRTcL6KkY2uwW59rWDsVkhMEQcas\', \'ids\': \'25\'}\nWriting record for Netflix Technology Blog\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9/BVG7eh0qrMv/+LDm/uBWZlV2thZ1ZHS7Tn7csMang=,cs6rdwpr6Lgo7q95o7ZSJSkvKyMRRGPVm64KckJEADfK23nLuy5P9EZ2UXbihgARa7or11sB5LX9xXChBXMdUPZ\', \'ids\': \'26\'}\nWriting record for Wolf Garbe\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave276LFjhW5EJ37LZ7URktYndr66ZYeyKX2ZxEvNH7EpQbx for Wolf Garbe\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave276LFjhW5EJ37LZ7URktYndr66ZYeyKX2ZxEvNH7EpQbx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,/180MIct6jzCjSJFlSLfbfbKgOHwbdDEMo0NugztfP8=,551vUQJT4FrzjupRvpvAA5LDUTDkzTPD2HMmxa4NifadSPK5cuSY5gHzgm2URidjfJjrsVBiPdSKx9NMh56j3a2X\', \'ids\': \'27\'}\nWriting record for Paul Christiano\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveeiDPX3Hra1aPQta1cza7ZbBf3QqYHtUA6zxA39Q7QyMn for Paul Christiano\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveeiDPX3Hra1aPQta1cza7ZbBf3QqYHtUA6zxA39Q7QyMn\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,CWYqpKBUuVTUmvv0ntBQQchicOZ/g7kepe7DEdvViy4=,4kfbrTupV6RysfyCY92nnNkE8HaXA2ivefnfDdwEQ3WLr7gdXMGWRyJtQy9vFc8evUNJg3ACnRPps7iXJw81949q\', \'ids\': \'28\'}\nWriting record for Robbie Tilton\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave27gK8P6bst6V28DZ98p9KeRD13tFvZMA63sriWMWu4odQ for Robbie Tilton\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27gK8P6bst6V28DZ98p9KeRD13tFvZMA63sriWMWu4odQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,DhMrYaW87mslljnR36iKhIxRTLCbotU9dye6WI0fgkk=,crdsqqWLmYJyNfjZ21jFxednzmtsYaNk7D3aAcVzAqgbLBHkSor36ztXwi3W4Z7umFUBDgTQr9e5Xpr5UsZ2M1P\', \'ids\': \'29\'}\nWriting record for Netflix Technology Blog\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BPFv+CdN7hsg8q/WrUNoNfItHpB+hHQYIoMwurij/qk=,3FFfEXMKwnfvWU3HNVBnUUkaYUqVc3H3CdUaLY2nVosLi8MhF4ydoFGA6bnF5seyxtBJ6HAwT8Jqhp7Gd1gcdYeL\', \'ids\': \'30\'}\nWriting record for James Faghmous \n56f3b1f203e31c31208abb493ebb5d40\nUsing weavey8yQeryZ1E5hMFMMMmV6nC9CogLjWUv6g1KYs7WiSus9 for James Faghmous \n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavey8yQeryZ1E5hMFMMMmV6nC9CogLjWUv6g1KYs7WiSus9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,cgBOW92S/0z/wpTjbLwO9yAYx1cfS2mF0pY1b4KGyI4=,uWNoz1kCNRkhfM6CLNqWFu81SHGJbCaikJBTr5uLT4LvGNaUwyZQXTd5cGvkcEbAQuga288Ep6KounSyLxf3NQ7\', \'ids\': \'31\'}\nWriting record for Datafiniti\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavecbRsqUaiG8rA68QP4aC4Wb62xC3gk8w1KdpAtWqQuyTK for Datafiniti\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecbRsqUaiG8rA68QP4aC4Wb62xC3gk8w1KdpAtWqQuyTK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HsQH1VqyBsz+QNisMG1Lxu1ZrwWpYciV02gjR67FtWQ=,5hykrLgPDpr5JTJEV7jnYA16RdWjpaYW6N6SfS7zFCjm3cWvgn5uWKf8Xbx9B9wqdtSRyR3d6DfSs6ZDjCnU4hwd\', \'ids\': \'32\'}\nWriting record for Arjan Haring 🔮🔨\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave28gtaXE6CKcV34Wnt34dvTvZiJpvVRMuSqLUfkDASoNG7 for Arjan Haring 🔮🔨\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28gtaXE6CKcV34Wnt34dvTvZiJpvVRMuSqLUfkDASoNG7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Y+KckQDYtMI960AMJOfh28HGDssW1RO01obaxJb1ttk=,2SdTE4c7vRDZx5SiidZiKEJJouNCyFfTUcX4UZ3psvbE5nbGn8RwWSsm8EshJWvbetkf2taUdiCrdfhkbBAvVCH6\', \'ids\': \'33\'}\nWriting record for Eventbrite\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavegsfgroTnDRgcLiSEDM1DRqpFV8uZYXHUa8tifGmJncyW for Eventbrite\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegsfgroTnDRgcLiSEDM1DRqpFV8uZYXHUa8tifGmJncyW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,8IT0Iu0ulIqYrMgDpyIuKnE39AWPRgmLAXmizbiSCvc=,51Uzfvbpkz5Sf9Y3JPjQCSri8MDGuqmEsLDuDA5VycSnGSC5fGVcMAVnPxZxNDsgB1iTGbpByZ6iDYNBfjbG3qht\', \'ids\': \'34\'}\nWriting record for Akash Shende\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewSycCHhUWb4vkoC4GwwDQ7pXfMJYnyqYZ8BDpFj2yxU8 for Akash Shende\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewSycCHhUWb4vkoC4GwwDQ7pXfMJYnyqYZ8BDpFj2yxU8\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Aj7urI0Y66Q13l6etwoGIRKP8bePlTZUWZKCDvzD3eM=,2DTrkTPqWkZBVebPGH1NtsueSkthFoE93mVz6fvtRSTifWPEsvLQQacRt7vbauX6MMzG8W8nUfVN43ddtavWSFa1\', \'ids\': \'35\'}\nWriting record for Hrishikesh Huilgolkar\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveifdAvRgVhzhgCj1G1vdZLtPG9aFcMsJx1wCVhvfVNbLb for Hrishikesh Huilgolkar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveifdAvRgVhzhgCj1G1vdZLtPG9aFcMsJx1wCVhvfVNbLb\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9ff8UFF56r3R/KCESMtdCm4GXaYzA7rHCB1bs++OOXM=,65L8shztnuZ3q4SgkcnQu7qHSxeJ2ugXz7PJPmcSTSj9JTVhN6qRME9fzb1pboHTfQrAAf3dJNtcgkYbmr7anLw2\', \'ids\': \'36\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,DDg+YR0JNdRiNKBxTKPn8EpLTLv01Z/FYW8BR0MQFK0=,4XS1E3mQeATeP3nymZzm6jGVXLduGrmFBemWnt9zQKaFAfViJ7azfZ8CyuU9HgD75bSzHYabmtPYRioxq8gaf1c2\', \'ids\': \'37\'}\nWriting record for Shivon Zilis\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavezxfoPwdvth7EwN9hKF73fQcTzJKywTkpo1bMhi33PHc5 for Shivon Zilis\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezxfoPwdvth7EwN9hKF73fQcTzJKywTkpo1bMhi33PHc5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,cmOLtm/dts/18aV9wB/j1Ktzx8pDfWGRj97UXgpR15g=,hYSYsmcz4HWMcHqBuHeHmSykCK4bgogy1TAbZJHrrqiUrQCSzJgNStuYJiaxpLsGrjKcyf2WrHwcSDJHe7oLN1v\', \'ids\': \'38\'}\nWriting record for AirbnbEng\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyoiyAyPiaUrqdc6TynF2qp9SV5xXCBsMmUYb7Yec6urD for AirbnbEng\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyoiyAyPiaUrqdc6TynF2qp9SV5xXCBsMmUYb7Yec6urD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,2fZEkN3WAO/fyOiKEzThLkF0b2JRh43S/IQJ1hHuiUg=,6641peeXM9Px559gR24oRfYertXgwMNLeGJhFKnCa4tQxJCDmX5ejkfPwQ46PUPAPPSPJrB8cs8WNCbEfHy8v3qh\', \'ids\': \'39\'}\nWriting record for Yingjie Miao \n56f3b1f203e31c31208abb493ebb5d40\nUsing weavegbF6z3K5Yu6245Tm64QWDXwEakDgWV8E8BUJ1SH5nXEt for Yingjie Miao \n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegbF6z3K5Yu6245Tm64QWDXwEakDgWV8E8BUJ1SH5nXEt\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ktuEpZd1pJvg81H8WYqpYzd7ey+4NzQTc6hsjFH47/Q=,DRRsek9sFzSUdTQQaT4K5aEdpwhUvkxvqWWKZ3NipcUVXtiJHL8DHkgx1VMxEqCmchHcEFqN6nHZjCVnWAXhTyo\', \'ids\': \'40\'}\nWriting record for Pinterest Engineering\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveu7vhCJxM8Z1JTZNZPrmn3EeV5NEM1kdZ8mpGDcPArfjK for Pinterest Engineering\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveu7vhCJxM8Z1JTZNZPrmn3EeV5NEM1kdZ8mpGDcPArfjK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,uP3FkYDHpELQld1VNWfZQ+unktmHXRlXsGOa9sDadl8=,3nNJ3NFSWAk5Gyd7XTzuRhPDbZxw1Jb1CMUTT2pXEzVsYitQa4E2D67tib7oUVGmUqTYC9NbnSptJcr8cFycLWN5\', \'ids\': \'41\'}\nWriting record for Nikhil Dandekar\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2AbhabBWegLrtcwTfxAgGfSfPY5yinBtQMAJBFp4Qd7Ja for Nikhil Dandekar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AbhabBWegLrtcwTfxAgGfSfPY5yinBtQMAJBFp4Qd7Ja\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,n4niPTFLztSg5Fr+KpjfcxQOb62T2IDQNpil2yctTyc=,5QnqR6NdkqVQBdofh6xzupsnZGEic71qfUcNUcMbaWJ6uxmjDTEAVTwKpgLVFXV5sGc3mbAsfRMGDa26MmLDvubU\', \'ids\': \'42\'}\nWriting record for Jeff Smith\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavesqpXLE6sBdse76aTmJ9i43XHarQsNZ1XX3GDPSM3qNeW for Jeff Smith\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesqpXLE6sBdse76aTmJ9i43XHarQsNZ1XX3GDPSM3qNeW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6GigpiPV1r9StTNcplLcF+EwqaIRSyIy1EUdOsAnarY=,2VNTuLm1dhUJP8cRGh7uqtR43A2tZGmQzn9GojtZy6JuFGmeZwdAKyCxNztVgsg3iSeKHt5XLagCwDJGGh92cVPN\', \'ids\': \'43\'}\nWriting record for Chris Jagers\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavetx2LeihsqoHqTAvsNQJRp53G79SuXqXSoESzbyE3rVjj for Chris Jagers\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavetx2LeihsqoHqTAvsNQJRp53G79SuXqXSoESzbyE3rVjj\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HXtvJLYjrM9CBC/SQZEbJ/kSTA7WZfckVqlgH0P9nVI=,5ZXyA3RoXTe1AvDMj9reK6NafbTps8rjJLQXzxzN9idpYJH7sa2urnHzYcZrHGpn2ooB7sc3bkJND52wqqz2S1VK\', \'ids\': \'44\'}\nWriting record for John Wittenauer\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqanAgFhbb8CQJyMKX6jFDfLKpz3iGBcTBkqRGhsSG9TF for John Wittenauer\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqanAgFhbb8CQJyMKX6jFDfLKpz3iGBcTBkqRGhsSG9TF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6gE6i3WvrJSrjG5b35OtP09PpCsaThDF4h2k9ZIFwg8=,3pnkXAqeQEUXFi4ftcbXqfiEiajmhGrNuhRd66B7Wh5smuQ5f3ycoJ8ztDwbVgfMMU6BSTtVy6CGBbbKxD1FFJTk\', \'ids\': \'45\'}\nWriting record for Pinterest Engineering\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveu7vhCJxM8Z1JTZNZPrmn3EeV5NEM1kdZ8mpGDcPArfjK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,zlClyv9pGQZWJkpp77Y3a5Y0GO/RjQQ/CgklsiJwttw=,5NB5qkTAyubMMzAy1PzFTUjd5gUJWvAeqFXDiqhAujVC3tt6eUAuNAAZKyV4XSchhWs4qXKKPYQwNjs2in5HxpaS\', \'ids\': \'46\'}\nWriting record for Christopher Nguyen\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevwbbRwepYQb5NJGCptLkNZ4xPgsxwoHKMvdMGgZw75hu for Christopher Nguyen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevwbbRwepYQb5NJGCptLkNZ4xPgsxwoHKMvdMGgZw75hu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,McHNMLLRI3Dj/51xSEqsMP3ULc1pOnGkEK3JmIXn7CY=,4dp7C4NXQvR9be9YnAm3F5XncAZXdTouNSmhNpVWMUN4xTtjATXCfCfiTG1W8EuZsqAny681HVXKcVSEnnkuN28m\', \'ids\': \'47\'}\nWriting record for Per Harald Borgen\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveq2xt72H3CMNktaFK6Yf4Y6qm1q4bhWXts8QByyz7pCck for Per Harald Borgen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveq2xt72H3CMNktaFK6Yf4Y6qm1q4bhWXts8QByyz7pCck\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xosPECQBwa01U1m2C8O70vmsCuqRlb+jVO8F7OtSBh0=,26mRoDpwRhJ5ZwSxB8C2vdhcSVkGXpeNiTSXQmqEmLyaR3yDwHErpZbA4ADELoN86cgrfe2M613CEnJmjtQbpGwR\', \'ids\': \'48\'}\nWriting record for Ahmed El Deeb\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavepmGSuFp8cQhfXDGqKvECPdMvUJFrTpn6wmen2v1EZTUj for Ahmed El Deeb\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepmGSuFp8cQhfXDGqKvECPdMvUJFrTpn6wmen2v1EZTUj\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tqZ2ll/GHhUSXF3U0FRWani0qbS8Xo7agwzZGOKPUaQ=,qF9FqHsui23G1cpBWXTJ3hPXBGApbscJWjSvj2fQzk3McbjkeUPXFsF3tgXR1ofSVgRfwaz9jQUqcTVeGhePvof\', \'ids\': \'49\'}\nWriting record for Matt Fogel\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveiFZoogh8MZSckp5MhxhNJ2c4qUJ9LqeJnYdtNrA3oNd5 for Matt Fogel\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiFZoogh8MZSckp5MhxhNJ2c4qUJ9LqeJnYdtNrA3oNd5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xLTOvxHgwaa+LPW0uDU5HeToHZ6Tf3UdxSyaN/rYvoA=,3hhu12KhCMzfyHwtBWLZE8YvjTrBrbeR56ET1HJ9LBB19AWYgtyCnRXGV2kdUcJc5Jyo7kRpaoTqwStffRo3Lsr7\', \'ids\': \'50\'}\nWriting record for Illia Polosukhin\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavekgh9mDUynkbusDL1wjYT6jrgGterAXMEm1JPHSTPtEQJ for Illia Polosukhin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekgh9mDUynkbusDL1wjYT6jrgGterAXMEm1JPHSTPtEQJ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,L8R+YRnIwW9X9yOK97DpaG7TkpKjI78UleUEECh9MR0=,Ko1vtMSzTn1re38n1ZtQ5RQuh4zpUiDeM8LcgQ4r1h3oVeEZWMhvcpv9ABXctKiEFDQpqDPe9TB38vPWnTNeiYe\', \'ids\': \'51\'}\nWriting record for Ahmed El Deeb\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepmGSuFp8cQhfXDGqKvECPdMvUJFrTpn6wmen2v1EZTUj\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,U1mljuR92mofWLbOC0e9igXcLZD2cotueigU6H01YGw=,3ZGxWU5Eao95fuCFkwGS1VxxRkXm7o7SjSFKubPHYjiVsSWY2BJaFVKWRXL7WjWx7GjgBqBnbC6xTSwzXBKfbjxt\', \'ids\': \'52\'}\nWriting record for Christophe Bourguignat\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave24eiJL4tu8LbexzxW4nFG25gfGEStgh9cLPbGF7mVYoXR for Christophe Bourguignat\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave24eiJL4tu8LbexzxW4nFG25gfGEStgh9cLPbGF7mVYoXR\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,jWCaaDRTEAd8+ylpT2/8OtjAPkKM9uPVbCnS92BlH/E=,5fWBvkNULMg3FHXfxwa6yNAAn79BtEtDgGwoDHUrWR9re8oj8cvCFEDnVty6aswFVXwxxczDnvWRU5sJ1mVQGMc7\', \'ids\': \'53\'}\nWriting record for I\'Boss Potiwarakorn\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavejFmwrMcXDQkNtNXS4JnSYYQ7A9hEzmBM7uhmRkV23Pjo for I\'Boss Potiwarakorn\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavejFmwrMcXDQkNtNXS4JnSYYQ7A9hEzmBM7uhmRkV23Pjo\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,cIae2Gxud8gSwytDUF3m3HiyPCrioobbuw5jTdlXNEA=,4pwxL1bxqQb8pnt1V2K7p7GBoo6DnmK3yogUddKYASiCKMQgytwHLHeX9PN5sX7FkjTN5S39REaZL232vHExXWFF\', \'ids\': \'54\'}\nWriting record for samim\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavev2ENed3oJ1NLhietvN2UxJ3MN1NtP2FEwJhhmgm6458w for samim\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavev2ENed3oJ1NLhietvN2UxJ3MN1NtP2FEwJhhmgm6458w\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,swUAvVtDUZ9Gi4c5MpXR3xf61J8nYWOliNRzjbd5Wd8=,4yMQuHuFHhEjLbsmVyT5JyfVx6EYamCxtS2dctqFSUv9ob3m1NZ7L5SAyDSWHhNVRPR5cKNpBCfY6ozuoSQtE2cY\', \'ids\': \'55\'}\nWriting record for AirbnbEng\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyoiyAyPiaUrqdc6TynF2qp9SV5xXCBsMmUYb7Yec6urD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tCVztlQ7jQhl4c0bHCvCiJRNFbnNM1Ciu76u6rARG+w=,3ent9Q3Gr1cMik8Dmfaxkg9AZppuKzJykqQ1rtZRP1WXf7CB36JKtc74gjex4Q2dD3xXMXGqJQt8bxkh46oTpC14\', \'ids\': \'56\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,VXmFjm9D/U7a9Zz7vL/9Scs/+KwtPk2DUnxIhebIRCw=,2xUsFGHFETs1c1QVGJFQeaYEyE6HdFTrpp2JNjdLDTaBhdF8mNjCAFVYV652nU9waWRfPkABU4Q3iChGCcGenubF\', \'ids\': \'57\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,DLg3/kFJA0psku7CEzp0F5bfVMpG4+N4UlRMeWmszyE=,zrBiMPvFfSqqWmg7j62iNajod3jrebKBbHwtJGTRxQJ3jw2TA9ew9kV7eivdVgixV4LnFrLcJZyksSLTvyQbKir\', \'ids\': \'58\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XQsbqQFgatTAfgmeo5Ngh7VPrw3HU61RitcUwgMrZ20=,4wkk3Hcbc8GtphVFBmH3W4Uhmutpab6TeEmpMJRhPuvGPuNAMSc31oJj2G4s1YAXQGQZR4ZaeuEdzZo7KjxRrQSP\', \'ids\': \'59\'}\nWriting record for Arthur Juliani\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XLJP5Oa/uliklxTMv7iQCZBFXaVTkSsIg4uuE9Kx1P4=,sHiNU74ej7rNLPhfQLC2FarVra2T25qv48q8xzsHvtZBkBjhjdjoXc85LsvXUZ8gFxsEEaepUz7yWsWwjoweSYM\', \'ids\': \'60\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,w1ILvJklrx+NXNri9VWpU5mll29MhF9vr499RlTm4yk=,4rHCF8NgVL3e1XuaGH22uz71vaNq1imUHef8XgA6BzWkq9CTK2MpJTf2yKoCwksNytFmKU99pCHvDQRLngu4aEct\', \'ids\': \'61\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,0hbPuLBgy5jOzLn6TUABNVGt4a5F+o+lHk4ItUUNVBM=,3wjVBbpPfTRP6jCAKmMd3fVVtGVCMDYzJU9eH8z6cPAXNNf3PEd4Jvu9T6aF7t2GrXiRihJnmvBJg1pbnGBTvwJq\', \'ids\': \'62\'}\nWriting record for Tal Perry\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavemQ83gdkjq27b1HTv8m4mj2fRB32HP6T1GYWePAsPg99E for Tal Perry\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemQ83gdkjq27b1HTv8m4mj2fRB32HP6T1GYWePAsPg99E\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,awNYlLFVHI1GYLkqoGTi/UWeJn3Pp3e9TQCb4Bk66sM=,4uHKTKixRFSBBMKGHU6341kMMWSQj6w48j6wh2RV4Qc9XTmf8Sdyx48eWU9ax5bmsQhof3JpfjGRgg93sG9LeYur\', \'ids\': \'63\'}\nWriting record for Andrej Karpathy\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx for Andrej Karpathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,jffIuUqXklaSVsE70d/2BJ5Ca6u+gqtVj0pR55+0GQg=,5NzMc3NExhBFdnnffiw618KR8wQyff2NXzuju1uoy9U9N588WMP9vPi7USbLLaEq6uWbW36asma3neX1HoBBchMA\', \'ids\': \'64\'}\nWriting record for Per Harald Borgen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveq2xt72H3CMNktaFK6Yf4Y6qm1q4bhWXts8QByyz7pCck\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,YwFWkSYsgDk+cbjSuLbUu23TjS6o+VwZIcTTixOUH9s=,3QbwN2kqfgSfgtB4wpjYSDsYrb5rPtzCBxbxpKSTSgB1aYmYh7mdkjCKs8Hm1zRLwgu2bbXFbyjFRWjyrdR3AJGx\', \'ids\': \'65\'}\nWriting record for Xiaohan Zeng\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave274mgR5wCdAZHhj985J8cjNaxtcRGuhGWXcunoqPqLctE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,cRHBeyah8PBPMrv0zgBB4nvBtweRaQzwPL8mE3JxHJA=,2ZYDfQuEczpLQdxFaobh3LzpPoqLSPPcv5mKA4fbH1TVfLrxZwNRiN9jhXTZcbHWqhEC3L2uy9146t8y8vjT5h1h\', \'ids\': \'66\'}\nWriting record for Gil Fewster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28hJgLv9G3ku9ozEiukbaTgCR7TVxx2Q84aS1Ly9eWM1Z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9yyEBpNKcBoxKVKOa0aFi9w1mtE+tLmKD1bq2i/07d4=,5ZtA65E4UxMaX6q7ewpb1Ea5Zw4hRLTAmGAErvT41TygQ6zPkwDjx7GpAcvALqQzZDKswVwV18q1LxmshjW4W1Ry\', \'ids\': \'67\'}\nWriting record for David Venturi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepqSu5eoLj9AKrE8VU1eRHqpLNYEiVYW93kEUx1hknugq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,AWbpPT5cC/WtUBHvS3+Wb27UlWD8yeLi+0VYXpQN4GI=,5AgumQ6uoazzA4MooX2ntfJ863bQPAPqmo3BTHRWxp4Ng12VqyQLfidjt4pyUxWrPVrVBdLtQucH117xQUpRWyVd\', \'ids\': \'68\'}\nWriting record for Vishal Maini\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave28KtG4u3HdMjyBKkiv4rQjDwx1mr19E92BZgxYvYEwncM for Vishal Maini\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28KtG4u3HdMjyBKkiv4rQjDwx1mr19E92BZgxYvYEwncM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,WnkR1hVxShpms8ATmsK1fBJT1UxQnB9Rm6kzS70+N64=,4XDG2LE9RV6WJsnBueGqoeYzUDpcAaZGuUdMqUe6oikDueTKihnxVpWqLCSWUZxKmtCcAWug5Sg5BgXRn9mgpfXb\', \'ids\': \'69\'}\nWriting record for Tim Anglade\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveiRAqixNQ6m9pa5jGYAATnGriDenB6Aahi5XCuGjp67Eo for Tim Anglade\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiRAqixNQ6m9pa5jGYAATnGriDenB6Aahi5XCuGjp67Eo\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,mtShpMaMzvYoFP0KMXKzLYVG+Gh+B7qHSnCDHAk4cfY=,45usFxkZEPk9HdsNT552EsNsUJ2tyiZj7r4EANERDKdiUgjL5MsYS5HvcQX8BAbQ2XExqbvdWRYj5hAeiCVkWmpz\', \'ids\': \'70\'}\nWriting record for Sophia Ciocca\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave29ubKDvoREb2xApQWaJKnrBnt9Qw9iJ3MhCtueBb3ersc for Sophia Ciocca\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave29ubKDvoREb2xApQWaJKnrBnt9Qw9iJ3MhCtueBb3ersc\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3qfpg+fS1N7mGr6h+BpZoERDOojAAwH2hpv42hnB0OA=,385iX37Q6tSjQAh4GppwnRKhQvoVKnNtdgHQRrhgVfcvpqNbQHCk98MMZED5MJzT6XkwiKdNenyXVSSNSrjzddSP\', \'ids\': \'71\'}\nWriting record for Dhruv Parthasarathy\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,5XkYfEUToO/KcYdcg9d6VUIOOixK1lfwtCtaSEiv3jI=,5UzgNeZYy9Jo7AYCBwJfVmBufrrDwWMRSedgMGkskGx9eUEwXJkxJbM9ZefwB7JTfMznXRUcE9H1Vaz9yxtZRNtf\', \'ids\': \'72\'}\nWriting record for Andrej Karpathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HvMzrDDqNb+ryArUh589cXMH/3n0O+PdHnAE3Avu7SI=,4yUAvLnt5rwbxVCxaa41SKVmXftmaWmLsGW3GkpxrZWXkGH3Y5rkrqkwiKuHFK7fXkyv9uymi9268DTogR3RfUJs\', \'ids\': \'73\'}\nWriting record for Sebastian Heinz\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22zZtvUz3DRVDLcaBkA7mCwgE62HxY895N4rLfVsq56fP for Sebastian Heinz\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22zZtvUz3DRVDLcaBkA7mCwgE62HxY895N4rLfVsq56fP\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TSG32VSs8cfN5aznOk0aFKFby+QyilABtTxsMHoqNQc=,5khQtag7uAn4f5iwEh3j4db3cd1nwBLiM2sPLspoafY4fZnHD5jSZPgbonJzo62dY9HB5JFHLvuvRRe7zet9MC21\', \'ids\': \'74\'}\nWriting record for Netflix Technology Blog\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,LaQI9FBvMh9h39y52BeXooCZj0E+Mq7jFrWnDj7FJZA=,43URjphUTQvTntm2FC8SncL8awEPo5pcatEtiZYbA3xcqSrWtaXR4phME6w4WsMM6ec2EwYV2GAc5eVbbuLmRpcb\', \'ids\': \'75\'}\nWriting record for Michael Jordan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22UJH4ZLA5GyPhwAJGVHAKW941yHS2f865YT536hB2ERF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rqW6WGMfoetvwh6iPn1BytISC+ynSDHSm4IKBqhVAbk=,yEscTrZYDQugtzuVhgn5TEc1eN5qjC3Kb9xLqZCLhgeRKcukF4ocuTAHXTM6iXuG7862D6vPm6ufrH2zqJCRwuV\', \'ids\': \'76\'}\nWriting record for Blaise Aguera y Arcas\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave25FmmS1C3HkoQEe4scEiy4cEC4hzmQ6AXbRWcDZUuBtC9 for Blaise Aguera y Arcas\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25FmmS1C3HkoQEe4scEiy4cEC4hzmQ6AXbRWcDZUuBtC9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,LmREpHgqx9NyIdA+DdPGGBSEPqtcGVZ4/8y/M4TSZC8=,3bbhgLLqv9vZZVxjMrhfwCrf9WkgrAQMqFiFroQGrPJxzc4F38d1q5n2dsDb8Prkz3XnNrP656sMjNKyTQNE3Kx8\', \'ids\': \'77\'}\nWriting record for James Le\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveksdiyEuknX381n4PU68M5MeGpLAWRWLGkGSawiz7Hf5Y for James Le\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveksdiyEuknX381n4PU68M5MeGpLAWRWLGkGSawiz7Hf5Y\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,C4Sh7/VpEJTs3mfb+uwxYYXr058a+whHdUDN1kc5aRo=,VGMwiwvgjispoKnmi61uBGj6H7c3AwyMGsh9GPd5SixLPWBnBWBfqTEjoLXDehVnQgKv4bzXczcB12pad63rQnp\', \'ids\': \'78\'}\nWriting record for Emmanuel Ameisen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,pYXSKgJiQQFBDAe4YsmahuhCML/Z0kIuHOmHKSIe/oo=,3gamd7W9V6aPMeeVMtUUNvGstk2jo22pTUKWNUY8uy9388pTxoWViHuoJZ6TpMELKfiYP63vacVdL8DbbPSESG1H\', \'ids\': \'79\'}\nWriting record for Mybridge\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyg6tSP8HtD5Zt62AjLBRjXFkCeYF1F5WLLrL2VapTTU1 for Mybridge\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyg6tSP8HtD5Zt62AjLBRjXFkCeYF1F5WLLrL2VapTTU1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,kagoWMyq0O+XtuTKO/7f+iY464876YJt7q2Q6EEqHqw=,2uCkX9fSq8DUVP9KnUJv8oUEjHGi634DQ3G3WG61zfRgqcQyX96XKUcYQAGVDiKEfeFgBi7bKcqg2PxxJNFbUywS\', \'ids\': \'80\'}\nWriting record for David Foster\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavecXvMjKVHcPsjrDa3b5VN9YVdhKDjWDzhuDjhzfqswAdT for David Foster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecXvMjKVHcPsjrDa3b5VN9YVdhKDjWDzhuDjhzfqswAdT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,LUeOm/h1sgFu+J/XSqGKK494IkTEC6TdAG2bZuwAjgU=,5MZTjPwVsjCaLFYg1uFLFRiH1v4stgBhQgWP3BTKiZNwzK7N6RQJxbFZKzckqYRLodxQVzi2vCSz5mZp95tiH3ND\', \'ids\': \'81\'}\nWriting record for George Seif\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewsHzhnmUY4J7AJbpqzxHARcCrTMYhNuZMRXKM5vxhdeD for George Seif\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewsHzhnmUY4J7AJbpqzxHARcCrTMYhNuZMRXKM5vxhdeD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,T7v11ACdtSJGrfOoJNOPqe3yivVwgq7MFR4J4+DvSNM=,4g7VGVgzqoJBNokbHY6iZywdB7xMDtYFSpYVZprG2a76bZemEStFFep5YTgjTViKsvFHSSdRcBn5dY2vpiqnJsX3\', \'ids\': \'82\'}\nWriting record for Mybridge\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyg6tSP8HtD5Zt62AjLBRjXFkCeYF1F5WLLrL2VapTTU1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rBUmBDC0voaCiGqHrV9DEEm9HeTeQgTDak/4JWsRb+Y=,5x9J6LoRr2rZ1DJojFkkTevp5Jg483jD5EWAQqAzLzoPgDp9DcYgHWeTuyg4o1W75VkhaHMfEVpQfPEVouEDgpVV\', \'ids\': \'83\'}\nWriting record for Simon Greenman\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavesFxt4k745VEruF2fQdNQt9nXvaCxPkQBvwqMqyoJxGDM for Simon Greenman\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesFxt4k745VEruF2fQdNQt9nXvaCxPkQBvwqMqyoJxGDM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,GWhQ6OtuZ1N9mVQqe150znQ9iUdXEquv4ZHTpnqB2qo=,5Esocmz5ymwnu9abaAsVqJbDUpjcFi3PgBBhPLrt6oWX1AvdbzYqcGJq7hWAKcr83SZhNPogCttRsAfSVuGVd25u\', \'ids\': \'84\'}\nWriting record for Eugenio Culurciello\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN for Eugenio Culurciello\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,DrWRB1SfWO8WO3t/eBtNSiiJCVCpp3N7gQlHYAlbG+Y=,4bDZBGv9AWosif7tPhGiExppWUAXt4wDn41n5t3MB233GChSySm13ChDJxL6qDQjS2iha3QUQV7StgEbby28oXaK\', \'ids\': \'85\'}\nWriting record for WiseWolf Fund\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavekSyF5QmERBNwMwgxG65mzo2NK2czaFP3V434PPm5vWyC for WiseWolf Fund\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekSyF5QmERBNwMwgxG65mzo2NK2czaFP3V434PPm5vWyC\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6K1e1Qak1lt31LxhOOiOlPjGvtAt8jZq3AUJC7O3S24=,35inoi3utXPCK2LVCEUv98qbAYm4szzYvGDE9SWtUPBqFChL2e6fAsp2JGnWBCUPoWntgCH8DxvNkZQC1GYgdbEV\', \'ids\': \'86\'}\nWriting record for Justin Lee\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QpdJ3VI7r2U9Jjkc2CzW2+hgfJeqGQ8Rs2SwYpo/POU=,357VivoJeUJYFEwjpRuwDR6TK3qsfnd8fpWCzmskadMP7RfYySgPXeV2BWSiKx3SHv41Ej8L5gZ2F7UqMoZVxt1A\', \'ids\': \'87\'}\nWriting record for Michael Solana\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave224xRqfQ2wfYniYUtJKmC3Agj2aZML1pBbzERdBMyz7XY for Michael Solana\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave224xRqfQ2wfYniYUtJKmC3Agj2aZML1pBbzERdBMyz7XY\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rzw8gd3MP7hdzZ5v373XHEPzRypJLFikooRgBWKeaPU=,41K17Ag37cAYNHWzXWPYy2kr9Cwgw9fZhKnvxdHHtSPXKomvPYsccCCNBXTix9T8v3tZhihdpmNP3qqFYcL3q2U1\', \'ids\': \'88\'}\nWriting record for Emmanuel Ameisen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tAKxJXMjyJmlsVRx9QL8DzbUyMeHdiwOQkRoJxsWkyc=,5ES8P8f5Gr4ALtnQGyHkwe5dGXZCEeaq2zFsXhAyubcnEuQsWEabd79Vp5bXRhaKKEQcZRiYyBot1GaakHC3NYJJ\', \'ids\': \'89\'}\nWriting record for Irhum Shafkat\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21Jj2Zs46JsdG9AxgrABy3pr6CBsjZBV862q7SAvs6Jj4\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Hrd1oows4Zew3wy1am3wdTwXpsbNyyQ/0BTLyUGKxnU=,5ZJEDCtQCY9r6kzepFo7Ey1VhxcnkrK8TYNw925zJyYRiJyqLccCjGfphPRLGF7h5JVi36DSArKUsNGxn5qAyGYH\', \'ids\': \'90\'}\nWriting record for Sam Drozdov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21P5vXr69n69QZ6gk9NLz5BbkDFiUYNgjm2RzEsePnYPQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,k8pyI3+J4wBIkD0HhcoOxUFghMXAHxdF5vT0wYH25k0=,2sGQNwpyi5jYme5Nk95tQW3dCpRWptDVkf5eTxHtKg8nU7skLksLqDjU3JjuMf3giXK6j2mU7gkU8cbemEFWP2H4\', \'ids\': \'91\'}\nWriting record for Conor Dewey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebvDnoef2cPLbRtqqH5uA2M1t6Svdz1C3d8zx43481W3z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,dwBBttNxHvoEB8G6sk7tv0ilE6TaCevgp8kC7Uws6aI=,RHCg4E8NqNNpVFWhcTh4ijay4WwV55RpuW4Sworgm4RdKBzfXrv7fLkkcz3p2DYgU4vUTrux7nvhkwby1e84P9J\', \'ids\': \'92\'}\nWriting record for Abhishek Parbhakar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewYC94Hwi5bGhFeorEp2sghZKXBWx1yreFYBAs5Qjnmz7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Oq8qkqCDeAVhc39bUAEMRQf5c8i+Gi4Vj4I+U74FSlY=,2N6EC8YcvryrpUAuH4GHX6ZC88ywLwea5BL3U66UAjAGSsqpvBcXh6qgXzZFUxPHuX3w2La4yQQa77wwqz6usCEP\', \'ids\': \'93\'}\nWriting record for Aman Dalmia\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexjioGxCmvk2znFELkHXASjMbJzqMGX53a3wTjdmVo2q5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9s/he88OPeU1BpwGQm8a+8yAE2/11RIrmXCGtEIOFVo=,4SrzJifQDbApCeVc5PLZ8Eq6QXyCh8LBoujWB61Pc81UC9TF8Rp432kcXmaSmLY7DAYtJT7CX2stWsookdQRwLM8\', \'ids\': \'94\'}\nWriting record for Lance Ulanoff\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavehnFy2boRD47pcHqfkDJRJNNtdrZfgyRvjRg3G2cuVTsg for Lance Ulanoff\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehnFy2boRD47pcHqfkDJRJNNtdrZfgyRvjRg3G2cuVTsg\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,/0MPgJjAwgnLwv5NB+fhL6MxgEHKjGOwngo/MH2Vuz8=,6X74F9eRgX6tx2hfTdBzEJRZ2ByWcA3m5JUhyqtnia93zvFctk2sKiuWS6FZttcDy7PeL2fU7v7BU8GdPG7qqVr\', \'ids\': \'95\'}\nWriting record for Sophia Arakelyan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecd1LPk6JgVEBxkxgTrSGGYQ625qTzbgrB3WoLozGtFLT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,UVCbkSwdyNCj2Z6LswlF9MBklg1LnNzrhlfa+9uqNfE=,4CSoWViUmRwTVX5hURt6ZRvFp1Z1Sz1mCJYNfxoufdJcrtiouEdHWT3H87stRuFiu7XApCRstJn3UAUdn9bFiHSQ\', \'ids\': \'96\'}\nWriting record for Matt Schlicht\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave25CnzND8fziyxiK7G42YdLXTkrTL1zn2SL1LuLzHB6JS3 for Matt Schlicht\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25CnzND8fziyxiK7G42YdLXTkrTL1zn2SL1LuLzHB6JS3\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,WslizXjytFavABD5+Ac1+e9HOvJol2tgNIGKvNTpQyA=,3Sy1hkaw4jtnE6fdpxPBz9NuqPsR5GbNdvU9TA9rbNkPyTB4CQUZBkPR4En9F5jnz4vCqY8HkhMU68CdhKQSgCzD\', \'ids\': \'97\'}\nWriting record for Gil Fewster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28hJgLv9G3ku9ozEiukbaTgCR7TVxx2Q84aS1Ly9eWM1Z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,dJFjCgGUkRsDGowVNIxBrnsB3O1SFgPjosdA+uOIUkQ=,53sAJMxMBhyJz1iTWiSqkP5mEfRr39r2sGepPhrr9Psq6su3MHE7HipRNo8fFa2ZSnyVHdrHmPRBwxav5yP6Gvmz\', \'ids\': \'98\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,PVC5ulvTOQJYwgxmdsdTOBzvXuWhIsxgHTDvaJFthT8=,2eUKccfPsLSTZyzTBv6z7TPby1M4CreEVPpSw4sk2TxeLTyVZiDsBj9tuHj6NaarErtoWQhP632rLG6X1tqrhh6y\', \'ids\': \'99\'}\nWriting record for David Venturi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepqSu5eoLj9AKrE8VU1eRHqpLNYEiVYW93kEUx1hknugq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,PuNNQBuKjlJHMV1YJIwm9ZQuhNZuhKMu67+CZ0u01lk=,5Xr1R7jaExSyYMWfVWQfq9V5ehDGqF4P24PtjED2hRusFWDfuSWgcwxEpcjgzkhhizUnXL6izc6q5GhDRe56uQGu\', \'ids\': \'100\'}\nWriting record for Michael Jordan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22UJH4ZLA5GyPhwAJGVHAKW941yHS2f865YT536hB2ERF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,17tph3SawgwiEIob0i7nrj+T634fDhmCE8Y62uMkTpo=,2skP66QkVUQ79b36b4LmTBpZFFs7zcuRLR2YMnhKSCevYCpinB3GgFTjG3pHEYQuqDoF8TsS95orrh8SYqr4BToG\', \'ids\': \'101\'}\nWriting record for Milo Spencer-Harper\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XjacDTRfB2d7Ivvy9i1ndOuflPvZSpke6cLCEWNG7y0=,4gQGyWv3HAaxauysRWWfRRf9R33vhE5HYUkFHYWg2xc6jJJMKdg144MmNEmGQv9PK8LtJjHAhZQXdUwjdbJVkJJn\', \'ids\': \'102\'}\nWriting record for Greg Fish\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavep3mB88tqGxPagZMHtBoB5rHcj5ShCAhVVVCcyvC66iw1 for Greg Fish\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavep3mB88tqGxPagZMHtBoB5rHcj5ShCAhVVVCcyvC66iw1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XIPOYcN2v+4z+iw0UDIgy7kCd8UJudhwcMq6ExNTAIs=,2bTrt3uEB4bbAruHqKKgmibvspTiJWHYmDD8mqYd93aaq11gP5t8pnPhSExfmim4Bj3aKQBMG79sUYdN9fept4qq\', \'ids\': \'103\'}\nWriting record for Oliver Lindberg\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavef17NKLEAN6HMixT3Fo35axqjQbQvAk7bmycrjD2Qy6Wp\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,MmURnKaurxl+/5agQYcywOR6F34/FF8Iji6dApSpIIo=,5mxuSYjyW8ojto3Qi9MHtQV5sA41RTVQLgGubJjbsRFZsZzgR2oZWkHX2h4tUA4bdhDf8LXaFdsgDgBhapD7t6dS\', \'ids\': \'104\'}\nWriting record for Greg Fish\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavep3mB88tqGxPagZMHtBoB5rHcj5ShCAhVVVCcyvC66iw1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,76hKAzohAPdiLjlYNlzt/0z/xVKyIWBFux3CqoM5K34=,5ptpGowaau4mRSfiV3daG1vKQ55VvXULT6Mgxof4m1Ms52Zn7QrKQvfyqCpLmTuwAFpPGtthNMcQv6kFKdHXe3r5\', \'ids\': \'105\'}\nWriting record for Frank Diana\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavehKPzp4iGNsyh3URCQXDwfwGpwgXPkpXp7xF8UHf9Rpfq for Frank Diana\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehKPzp4iGNsyh3URCQXDwfwGpwgXPkpXp7xF8UHf9Rpfq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,sn5D0mwhrNIbtHoQBBFcDFYtQoFpgH0bPRCVtCp78b0=,Xwr8RJcCsTzz3yj84QYAwf2h541hPKr3eqYsx3PUW8YGHm7RfcEBA9hxT6aw1YHgqiaepdkdjBbMnDpMe8mFTkR\', \'ids\': \'106\'}\nWriting record for Paul Christiano\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveeiDPX3Hra1aPQta1cza7ZbBf3QqYHtUA6zxA39Q7QyMn\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,EhsND0vNa5t2K348Ew9TtJRc2c2ARo2dmxnHPE2IjzA=,3qTE7FAYbFHtCNSv2Xy5fUVfAHdTL9BdRFhoawZfYkQkx2T6QSiVrLEpi1UsQNW4peNrsZfseharpBjQEQMe6mn\', \'ids\': \'107\'}\nWriting record for Robbie Tilton\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27gK8P6bst6V28DZ98p9KeRD13tFvZMA63sriWMWu4odQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,K2D/hUyLpkADU6yyiHanFKra0JFAPqboooalw0Hny3M=,5TP2HnEKYQguRmjmdDtFoxyZpsgmzFmvx6qPVwvzujHfDWSwVogLxknS9CMREazzLY6dkt1vVJmts5dsLtRBfPPd\', \'ids\': \'108\'}\nWriting record for Wildcat2030\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavekuv4Ea3CqA1Xz6r2BWdi7Laq72cyXC6UvhyPCirFuxiM for Wildcat2030\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekuv4Ea3CqA1Xz6r2BWdi7Laq72cyXC6UvhyPCirFuxiM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,1TXqDma/6oYB7CgFbGpNIagi2YVXOUMVTGCL3HHWdz0=,3o4gRMmZri8Q4VmRsn4x3xhfW36npFjVBY72J9tsQjBZtAhySmPbAgwfLQqqgvdbZpzjpWKnjaNVT5WCdz3gdfvP\', \'ids\': \'109\'}\nWriting record for Greg Fish\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavep3mB88tqGxPagZMHtBoB5rHcj5ShCAhVVVCcyvC66iw1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rUHi5bQ5UoU9MJ98UBL/yz3rTmOJ6lmeIJSIQF3KHnU=,5LfmxxVFLqHqXFFYQNDn6FHbVDH3oUM1s1K7M3K4Ps12LGntiirWvwFD7baNyrqPMwQyySjwyXtNZEJaz8r7ALpG\', \'ids\': \'110\'}\nWriting record for Greg Fish\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavep3mB88tqGxPagZMHtBoB5rHcj5ShCAhVVVCcyvC66iw1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,mNe3QhtEPZpe4E40sFpnhuMGT5YupH7gwqdP+bgwvJs=,33VHSviTV1E2w8JvK8j2DW2bNaGLnTyBJ4qyDYTDWgZyzGMm2zVYNYjRNPW5crgZSmGRVJ7KATGHDUQaEXnfziym\', \'ids\': \'111\'}\nWriting record for James Faghmous \n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavey8yQeryZ1E5hMFMMMmV6nC9CogLjWUv6g1KYs7WiSus9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,x3G4TPmR9dSynNslkTv7EShLZCvfhbuPUAb/EaXXPfk=,29t7sK6SK6BTKJxi54VyjkVbdCAY8ZJYBHuPHUPxqBpjCXFfMMghrvyKTfJnHiKx9Vc29EsbztVE9yxoCeMcvU3M\', \'ids\': \'112\'}\nWriting record for Datafiniti\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecbRsqUaiG8rA68QP4aC4Wb62xC3gk8w1KdpAtWqQuyTK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Q+OF3Par20ZqfXhZTwW/qV2B4ISkrkdje4dT6M0w66I=,4Eicq5hwew9JiVyDW9SP3A3ogY3s5S4pVTVsey27mtQo3XwLrXFghJ7C1qQkPQGGY8Ww6zhTwmjpgXy2d1XZ5Nb1\', \'ids\': \'113\'}\nWriting record for Theo\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavebkWwnxF9FsBwcYntnj2EPdBW9rxhUb76J3nygWtTWoGF for Theo\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebkWwnxF9FsBwcYntnj2EPdBW9rxhUb76J3nygWtTWoGF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,8kLBYI/J6QQJdFbMwnT0dJTq2RSBmKkDP/8sE1yJjGc=,3pQPjiUVkLiu6wCevSQuhNJbDRmofsLc4dx2pNtDVHWpjQwMszcrzScTFf8xom3mZKrTht9mCsJhSxkdijnHU9ep\', \'ids\': \'114\'}\nWriting record for x.ai\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexB2nNrzRvPAQE4FBASyM9kHMWnoh5K4FEc5EaXugWAh4 for x.ai\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexB2nNrzRvPAQE4FBASyM9kHMWnoh5K4FEc5EaXugWAh4\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Yy7VrVIXBh1JRPf0QYrclB5olCo/kvVGdTAK+72sxl8=,6fxRmE7aAtmermR7wG36mHAAF37RnGN3qSYXQejoiy5uJrJUZHFKHRB73VydfrxJ1wFVJ2jaAZUXxEGWeFoUGQd\', \'ids\': \'115\'}\nWriting record for Arjan Haring 🔮🔨\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28gtaXE6CKcV34Wnt34dvTvZiJpvVRMuSqLUfkDASoNG7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,qwMSSI1yp7Gt/lYCTRJE/K9hafIZcpc+akSod1cGze4=,3qe4QHxC3YddQLTCwy4dA9gURjBsC8ivgnWAoLi2exufjyt23vZNXP9VR1wJw5xnMNbw7AycFTDasuK9DjbBKQGq\', \'ids\': \'116\'}\nWriting record for Arjan Haring 🔮🔨\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28gtaXE6CKcV34Wnt34dvTvZiJpvVRMuSqLUfkDASoNG7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,PZ+EAy2Z5MWBlG1MPA/eUam/Rk9+8zEyvELRlqIoEuE=,JxnPPgkxvju3sycQziHGkdJr6ZPmvEiDjxkJuS3HGfhFKgw2PXfrfiH6gTeojK2asGjk6pc3TxvkAJYaL6NPZFu\', \'ids\': \'117\'}\nWriting record for Shivon Zilis\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezxfoPwdvth7EwN9hKF73fQcTzJKywTkpo1bMhi33PHc5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xa3A5NG+832PdIM4JDIWWQ7rMCEoZI7eePl7R/ZaZzI=,27npCE6Q7s8AsBM9ZDkw2i5WT7WGx54xQL796i5Cagpa4KXFgnwXjCtfSkeuJ5jEJUKYUpo9ZGUjEbcowAHBUy1E\', \'ids\': \'118\'}\nWriting record for Roland Trimmel\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2An5cNgeC6mmBgGKRgwWeT9SywRSJQ16SKjnJhYnVgoeF for Roland Trimmel\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2An5cNgeC6mmBgGKRgwWeT9SywRSJQ16SKjnJhYnVgoeF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,yxh5mSANpHF9WycvCHKgcXWfKC3Klckbp2j25QCahgs=,3yMZJFP9BJirFoNyua4U2ii47ipF5MLYXNrNdvEuPEpSkVmJJ5SYusQRkAUhLFR31jYjBjiJU61CMVFcxgLDGhKQ\', \'ids\': \'119\'}\nWriting record for Espen Waldal\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavehA4uxz7o3EDpHZQ45dq3vAG1bh54AUXuTaomKcvoCkaf for Espen Waldal\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehA4uxz7o3EDpHZQ45dq3vAG1bh54AUXuTaomKcvoCkaf\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TK3pDcej/F/sE/We5s7LTqTzDuNOOqPHo3UVA232w50=,4TgMu69HwasoVDaQiTp4JcVb6KtLVapUG2XCcRR2RjNTneeYjcvAMRYcDc2c6NZFtADvmbLnUHAChbDUeMj7ktuw\', \'ids\': \'120\'}\nWriting record for Joe Johnston\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveuTaAWEGFUWnxZd6d5eBBN2KnDkTzfLEHquYZP8NrGGYC for Joe Johnston\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveuTaAWEGFUWnxZd6d5eBBN2KnDkTzfLEHquYZP8NrGGYC\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,dSZ832vqC/8tG1VZZr4sJErr81m+44HitaopDxAoqkI=,4rvcEwQXqdnGFFRpexy7bsSaS7RVyQVEGXZ34M9QE3TgjSyuHLTtkhhu7ZiMZ4sPVRGbHjpppgKgWnrc9Zk3m1rB\', \'ids\': \'121\'}\nWriting record for Nadav Gur\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavepb26zAmHhJk1w34UieXGg6XBD9xYsm6sNpPZNF5TjRFK for Nadav Gur\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepb26zAmHhJk1w34UieXGg6XBD9xYsm6sNpPZNF5TjRFK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,izwMZ03FW1Crc4AP3dPByMSb+nqfrnIgqhUw54upBoY=,MP7qNRXAAVQVrWxoSgQLKpm8VnQb2oWyuUiLVLzCUyBuY9qgX2M6V9ReSfoxsaWtb823tJH38DuUnKy9eATUCpY\', \'ids\': \'122\'}\nWriting record for Pandorabots\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavesThBF3wC5RkKK2NsQaYkaQDppuXxxzjBq4nz2fEiDBqD for Pandorabots\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesThBF3wC5RkKK2NsQaYkaQDppuXxxzjBq4nz2fEiDBqD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6VMNOsF9bVmhCzA5UqBnv1jJV2HKEnX+pgNz5s+WbCc=,56oXKWUVEbo4r7Ki68MSY3mMejbyYLZNLYQT514jqESd7VrePPTYFYXFhfuHT1Uk4miLMjhfZMCnYooFgGhHYuMY\', \'ids\': \'123\'}\nWriting record for Denny Vrandečić\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavenVcn8s3b2KBZ2yRvctF7tT7swwtrhsP3cuiAgb2sCgUs for Denny Vrandečić\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavenVcn8s3b2KBZ2yRvctF7tT7swwtrhsP3cuiAgb2sCgUs\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BgdfnV1q3Mw6fH9o2fmZulQ3sLpS71upGq/dElvyelY=,2CCKHJvdkUvziiydT96K6UPUwumWZ9zfjWeQzzkR55B4kqCGnLDBX5TwGrrwZmaVAsX6nc7sCNFNKeVrXqWkAtRo\', \'ids\': \'124\'}\nWriting record for Thaddeus Howze\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavesqrejVuUAX6mRFNQfrSEeYkmSudT7hbmzbP3opYkyV3F for Thaddeus Howze\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesqrejVuUAX6mRFNQfrSEeYkmSudT7hbmzbP3opYkyV3F\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,RR5yCzfCNQ2/6y+2haE+TOETICCgeyy8sGZnBsKtkmA=,5T8BoCQugbph6rGEsvDhFJVT2f2kGR23PR6gsLxyczu7vUVbgpAfC94hCPwBFG9iUuVpraGgwfzCQj1rrtpNDxsa\', \'ids\': \'125\'}\nWriting record for Tommy Thompson\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave23i66NEYuhPtHEFRhru48iGSsQMCe3A48uEVm7mFXcrRK for Tommy Thompson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23i66NEYuhPtHEFRhru48iGSsQMCe3A48uEVm7mFXcrRK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ad8T1xEzaKw2ZA+yUuT/4HLjJdNDMAsN++HaD7pnVJ8=,3voNdTodHemKa6oLnoBXW9B1LZoqDUAC7fEQM6rxjUCr6La3yGzqLDXaR3iFis7uFLnMLieSVubgEaMDyfcLeQVS\', \'ids\': \'126\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,+6U91X1hNK84qBWfM6c5MnoULIdKlt9+Zvqd3ey5yvk=,Ep34fpkicdjPhvjN3fmiiB1h94C5oBHc7Tk3waiNqCku3kXgRRVAMAazJkKXTxaj7RfbYumMHEgFpzek3XUxSim\', \'ids\': \'127\'}\nWriting record for Arik Sosman\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveuSWocRyXm5xLWY5dgr7LRgSbsRiakck1pxZY8DaQAQ1R for Arik Sosman\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveuSWocRyXm5xLWY5dgr7LRgSbsRiakck1pxZY8DaQAQ1R\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,OtMWoBK1zIS0XBcdSfLabGHnURe8fFUsE8Os6vPZj/g=,3Ekr5DDkSvMf7t8GBcJZ4X9UhysFL55fWGg9hv3gZajEv36gchki5K8ULeYZZiXRj894F5NxJdA1AuAWF5Hn8vWU\', \'ids\': \'128\'}\nWriting record for Tony Aubé\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavedHmvvzDuqDudKGoj8p9gWDX7sPr4Sqt9oXSBS8bjjRAC for Tony Aubé\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedHmvvzDuqDudKGoj8p9gWDX7sPr4Sqt9oXSBS8bjjRAC\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,gKcm1/FfqJ1KYXK3tx1+Re5RRKGqKGxrOw3hgcdWvHQ=,4aBftfD22sedGP3gstRAMnAgoQtELfDJboj3msKtVio5F8rbZ4gmyUqV6GNoyyEWWKfvnTMkQMfCW6XN7pU76zAt\', \'ids\': \'129\'}\nWriting record for Matt O\'Leary\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqBoMYrbXKtmgpk7obJ2XQKWimtoC3b1ps971CNdmyC4p for Matt O\'Leary\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqBoMYrbXKtmgpk7obJ2XQKWimtoC3b1ps971CNdmyC4p\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,64NU+g/SlWbZSvDTS/Z2CtS4YILmlp6yFlp9d17Q/sI=,49Jw3hSrc9UBafKhG93NX79QDdXRcpqqKSCbpNZJb8UEqTp76EVK3WuGynStafVanyeVdifDhGpAmc1HEWPgdoJb\', \'ids\': \'130\'}\nWriting record for Tanay Jaipuria\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave255CjBZgnaMJEBEhEt11BEymxiXQemi5nKeBcv57j8gLp for Tanay Jaipuria\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave255CjBZgnaMJEBEhEt11BEymxiXQemi5nKeBcv57j8gLp\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,k6gwZeWmtIu3K0aXJt7WDgvyuesHqzGliqnaifrPdCs=,63eR29rUdTA8d9Q3iaMiprK825nCot4muGZBWJLphEiMhEuVPMXQ4ftUWaC8M67wHmvYLK7uTivhccDLVqHjEnY4\', \'ids\': \'131\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,g3RkFImFpf+DtT8/eIWdFWblJoq7QGHNRagU3YcIrbA=,ptRsyuHBXTjs67oAUrrbBt19Jr3UwLx66pq2dQCVa55cYWDUPvXUzjFgGdaLvPnHnLkjgjF4qKJeivU39ZBKbXC\', \'ids\': \'132\'}\nWriting record for Ben Brown\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexWXdL6NRPxJY1MM2hpLyWLXa2MdEM4jTMNsoV3Z3VaD7 for Ben Brown\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexWXdL6NRPxJY1MM2hpLyWLXa2MdEM4jTMNsoV3Z3VaD7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,o7FEFxG2yKAnb2UCWO4uhZp8UI4pqdf8PLBTj2UJJRs=,4FiQZAeUyTsWSv1YRxDTQXgc8NK85ZP1gMGaA6QuqvjBSXuxJURLQunKtxWcLQQBjovpZT2Z7mfwPTcDWA9M6PYf\', \'ids\': \'133\'}\nWriting record for Frank Diana\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehKPzp4iGNsyh3URCQXDwfwGpwgXPkpXp7xF8UHf9Rpfq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,FGK1QIu9/w2wCm1fDiIVmzNUHAupmJKn/X2mERoE2hc=,5RRn125ZvjWAPqGR4drQc5w9yBeDbsD4nJgkxUzXZgYow6sEMJXLWxAHWFkLPsAECyAf1wsiJavhqc9qMMUXzyx6\', \'ids\': \'134\'}\nWriting record for Rand Hindi\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2AQYKQv3YjNW9ZiajUPTSbXrn9ntDDTMBcFBi26Wv9rS1 for Rand Hindi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AQYKQv3YjNW9ZiajUPTSbXrn9ntDDTMBcFBi26Wv9rS1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,z0iiuy3WwogYQ47DvH8n2bsG6Q57cXoLDC4LedrbFek=,2ckV5wpae8KibWr789vatXdna5S2ZjYvU5CLea8fhfNqv6UJxbfuN59Wb7L3JDqztQqPgELPrzYQfn3pf2Wq5eHx\', \'ids\': \'135\'}\nWriting record for samim\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavev2ENed3oJ1NLhietvN2UxJ3MN1NtP2FEwJhhmgm6458w\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,gU5JFUWuR1uguf/kKmIh+cZ/l4DU1y4zQGWzdWmn0RA=,5bZQnURHiCfuaVgt6qb1GsihjMF6g3P6ECkPtfv64zyfrSwWPFYpiLRvsCAeGmq4oj3gJgJjECEkbKbeMEcrB8QS\', \'ids\': \'136\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,SPp8yJxXHIj+ffacx5B/E4rS0gN9g9BuFXSz4fcB+aE=,2RrNAj6pB21MAMYSMBXvu1mZRfRYkso8PLxUwccF7gyawXb5XoPeRB4xM5bRTsh9u9bhjpDgGsr6jBs6NrWUq9bY\', \'ids\': \'137\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,e842UP2UAJjTmL09Y7jx1f18M+kBYtjb64LG7ehvdqo=,23N1t71DkjQEaDcf1D4yvYZzzNTsXFsSyGRDLRSZnT6aEC8VxvPfHLVtqWfEJ3e6juKprwX1YEQLAVSFRUX55e37\', \'ids\': \'138\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,iBW6lU4RUDkw4vngu7eY6VK+yWfXUteFwNzE2V2RMwM=,5VVEvNwRZNDxStAHuEoy5AAm3Pe5jH7zn4ofVhsF7tfDtbLwd6JbnLUkzEMe51niXEBZw9Y5q6uVdWbcYE3rmiBL\', \'ids\': \'139\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Y613k9CcyxwdedEttO9oelu8l/flkhYKT+Ew1AIQJF8=,5gFFfnuo2MgNVdpJaoC3pprsivRu5fCbRmCeyreyoPLQd3iiy1qtWG4ZTribABejosLEBgBnHTYHytz2d6Rz9etq\', \'ids\': \'140\'}\nWriting record for Chris Dixon\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavemmX9QA8PxjLzBChMb571x5fiZkyWJ51ZWaRFrvMGCNtz for Chris Dixon\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemmX9QA8PxjLzBChMb571x5fiZkyWJ51ZWaRFrvMGCNtz\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,nqDSjhWGYgoETbKhJ7DHc5zFNIpdfmet0nLCjRzS2pU=,2TfrCNUQxXKmU3TDfifNdqLTwZbP5CusRUCa3z8eDnd4L9b8t3MWdydRq7cQVWh64Q4XvWGSXQ8YKy24zUZD1Sa4\', \'ids\': \'141\'}\nWriting record for Tal Perry\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemQ83gdkjq27b1HTv8m4mj2fRB32HP6T1GYWePAsPg99E\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,NR19uwI87vLmMAGeXhWZIqFqeY6bLotShmzWrTpEwp4=,5EQnzHw5om5FpnEVN6cYGo54C3bvWgfxMoyiwUgzUMUzD4JwjQU97d79kSDLi5jYLE6SBx5ibwXNSy8AtccdL2j5\', \'ids\': \'142\'}\nWriting record for Gil Fewster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28hJgLv9G3ku9ozEiukbaTgCR7TVxx2Q84aS1Ly9eWM1Z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QUYKv4wOBPHgBI9AyHH734mgELJ+k8BBu4oOf9AtVDY=,459DtQvtKdqtCgY9WkfA6gt4aG11jGLGnaGaNt9J5k3jdhxLit6rV4uWYYxMrkxkGcrE1gk98xRNQvSrszGzWshv\', \'ids\': \'143\'}\nWriting record for David Venturi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepqSu5eoLj9AKrE8VU1eRHqpLNYEiVYW93kEUx1hknugq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,riONWo3sIs6HcvIZr1I/Afi9NQr8AlBPmKZCh43JOts=,5ABb4oqpWcRWZJjCKmLzQWkqXXqYEVZb3WsQ2m6xaamEFgiG2kAd1BP5nRafM1hDCG97iggJKTiY3TiUtHoXSwsJ\', \'ids\': \'144\'}\nWriting record for Vishal Maini\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28KtG4u3HdMjyBKkiv4rQjDwx1mr19E92BZgxYvYEwncM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xex9PFjBIfWv9+fGuTWVKas7zHFfHx+JwFOK0kjPpIQ=,Y1f3mWpNNs2DiUsiN2Pc8B2H371L6Dg1aFFUh1sQ2afE3ErHE9P1nDVGmib7aWfiXtA6uExqk7rwwaViwAS8PHA\', \'ids\': \'145\'}\nWriting record for Tim Anglade\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiRAqixNQ6m9pa5jGYAATnGriDenB6Aahi5XCuGjp67Eo\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Fa6HiVTE89aZw8Lb4VOZcWfINUDV6FQyhgerQm3kPAA=,53GL7KNgmhhP7U1TM27LbVmUm1MQuVMxNFLYthPvMZGx4o9zaTKMQv85k98zW1WaNxxParRJrHs7L2aBYbfXbbrp\', \'ids\': \'146\'}\nWriting record for Sophia Ciocca\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave29ubKDvoREb2xApQWaJKnrBnt9Qw9iJ3MhCtueBb3ersc\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,/eb/kU2SmUpxp7LQbvDd3sTfb38+3HpdSCegebQZvUw=,29J3qJh47WvfUuFvN5dRpcQ3dfKNZaaKcKf9eoXhLgcYEEUDD2XnSP7yvjyg7r9McWUvKCcmoDPvFTKUeX2VXGSw\', \'ids\': \'147\'}\nWriting record for François Chollet\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyo5qHhU9cuj8uRfB83AasS6qcDhLEMTjjquVQ4ihwpc9 for François Chollet\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyo5qHhU9cuj8uRfB83AasS6qcDhLEMTjjquVQ4ihwpc9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Jnu+CGvawFaOlNuaQdEBVXER0GxuEg5BWRdXg4OfmmY=,2rKmeWdV9dK2368FFhEBNBHt8zJ6KLmS45HwU532Up7cGfUYMwq4kJJ5yKcDpW7qQGoRBCi1LhQ3YSVYLjS6kjGG\', \'ids\': \'148\'}\nWriting record for Max Pechyonkin\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22pdghXa46iy1DQdJAz92d5Tzx1wS3KneCJyo6fiA7FTQ for Max Pechyonkin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22pdghXa46iy1DQdJAz92d5Tzx1wS3KneCJyo6fiA7FTQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,wAz51r01ByRU+EgRhLR/ppWt8mow0jZQIFsI32IgzGI=,LECFebP8GVGG6zTswzJBkbmNGiCC2Lc8BamunZGQsy3Adexun1gcVuqoWYYrpzQ6dqdsSCz19VvtQHu1v56T2bQ\', \'ids\': \'149\'}\nWriting record for Slav Ivanov\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,kpgHEbyD97Ztmg9A81SSTRZRYgaP+PQVproF+OMpgxA=,2DraXAtjBa9umREi15koNZjWtw7eFhTw2t4zrmVNrc5xstNWLvmYmcjg7Z7zdUq4PL5U4yH8d2fVpbVkL9NigPxw\', \'ids\': \'150\'}\nWriting record for Geoff Nesnow\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavesW7noqhibzaNLwuwhhMfxJUjmX5pQ65kcpJhb1FbtZUn for Geoff Nesnow\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesW7noqhibzaNLwuwhhMfxJUjmX5pQ65kcpJhb1FbtZUn\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,aRSX4N339MnzB7ZTzz1I3d7xfv6PiN7OY9tKlCnxfLk=,3yegAUnScGgDuXAekJTYd4KMdey523ZzkjrYs5CC268oiPuHAVZF9eMbdgkNsmDkyyvsK1qUnsKuZDHrv2xiiPNQ\', \'ids\': \'151\'}\nWriting record for Blaise Aguera y Arcas\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25FmmS1C3HkoQEe4scEiy4cEC4hzmQ6AXbRWcDZUuBtC9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,OvJYZs7dHiYJ5hpXy8z8/Sw+5KuJFkMqEjmbcJy4o1E=,5pmRVgitEA8fK4E5AuSZ886eBFt6vcbiQnQ1skuTm9dTi9Qu2udmztgkN7GjQAt9zUR654QgHQSvXeRM5NhGpYYe\', \'ids\': \'152\'}\nWriting record for François Chollet\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyo5qHhU9cuj8uRfB83AasS6qcDhLEMTjjquVQ4ihwpc9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Jf4g+LI4LCQg4Clf9gwKFZtFYiZ/OLqXr5SwZADewG0=,3YwBsLaX26V8pv7vfgNABw52myyXNahQh6UfDo7KTRV9FbtjkZGNyraqu9PuKhY4wxxZv9pYALiCxH9JxWJTp149\', \'ids\': \'153\'}\nWriting record for Simon Greenman\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavesFxt4k745VEruF2fQdNQt9nXvaCxPkQBvwqMqyoJxGDM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tV3yYjopHT3Zod330G1hllP6xm6T44YBcFU6ONdIbAY=,4Bz1jNZC7vw1fVcvXRCLnChCB7fnqmojrcg18Ve85hCdnSaffrGa9Z88EGjdfBXuRergJdkCroW1YJr4qZyGfLBx\', \'ids\': \'154\'}\nWriting record for Aman Agarwal\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyKrGCkmrGL18pWHik3iKkzxZQknMv586jAhJR2MR73wq for Aman Agarwal\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyKrGCkmrGL18pWHik3iKkzxZQknMv586jAhJR2MR73wq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,+3+rKzbeAne88lQHkaI48VlZGsb0u+iA1k4io96N9+M=,3dMpqS4ZKxqzFUKtuqgLipxEutrRtxnCLr1idYrQBnWPYshSU1vFJgRLXffHJZ3eCCXpCddZ6rwXhtWkSuCvjQeo\', \'ids\': \'155\'}\nWriting record for Lance Ulanoff\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehnFy2boRD47pcHqfkDJRJNNtdrZfgyRvjRg3G2cuVTsg\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,r1V8LmL6ijmxxdpq5P4WxgcvKnGy4YyRtrQ5+hP1UQU=,2DeUjr1rsksMDCdwnxUACMTRt4HeYJJuz7UvQxoGifXS9Qo9pj32Ji2XYq5TcrQAo53QgQoLBm6XmvrtVhBMVHbv\', \'ids\': \'156\'}\nWriting record for Gant Laborde\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiWV2dK7p3AHhBkwMBjPqpM6vVM78D62HdUUBYxmMzdKb\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,q6S1QY3Z9aEJXw98KWrojQ3yhBxqaA6TYmHM/aL3d98=,4h7JWuZNFsHukZ9z8LYVT5nHWQFF7znHUW8vs2d6rZUWuKEPiihfUiiWBFLpLRMXZ8cJNuLAEaoLoxaZFzQLddoP\', \'ids\': \'157\'}\nWriting record for Emmanuel Ameisen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,KW44vJhoMnFwojO/WlVOMzvyQVxZFvT1QXcmyu/cqcM=,6433bm5DAmrUmJTb47wPhU2rGBw9w34ttwhUfmNAYDtZq7BeSsXt9VizotVgThSGuxfzVAi9o7aFCZoucBoXsGxE\', \'ids\': \'158\'}\nWriting record for Irhum Shafkat\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21Jj2Zs46JsdG9AxgrABy3pr6CBsjZBV862q7SAvs6Jj4\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QIN6VcssYhx1INXsmrbvndHMmRJxaDKtEFN0SuuQpzo=,2sE5PZ9cmL2AAhX3QbGsRCfn5JhY2tWYk4KfT7FXJqu6NXb3iKfERUo9Muzt7eBaBMUhN6o2X27Wgac2JKpE8Mue\', \'ids\': \'159\'}\nWriting record for Abhishek Parbhakar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewYC94Hwi5bGhFeorEp2sghZKXBWx1yreFYBAs5Qjnmz7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,iGdANQ2ivD2z2mVXxPKBIsTPTZaEhHrlNTDl8VtsEik=,2N3YBYPgTwJsX2GYP1Pn3bRyDPdgSURHHsd6kc2RZVsgFmS9nbGFBmD6aKpZS56cXQLA4KE5ykwXKynypJe6k2P5\', \'ids\': \'160\'}\nWriting record for Aman Dalmia\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexjioGxCmvk2znFELkHXASjMbJzqMGX53a3wTjdmVo2q5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BrKPBLRz+ScjdzVFjK0TYHz4kO7NqDPYOdw2GE7kjhk=,3CcY6QPXpBK9mbN8R6ShjvS69bGae2FwdDuF8Ep2k7KjafbpmVLcq7uKLNLSbZWdz6t7wm1PuHwffYs6Jfu7p8bR\', \'ids\': \'161\'}\nWriting record for Gaurav Kaila\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaven4V4PMvAtbutzGc5DPmnorMSxxZuPFeBdGKgR59UvhZx for Gaurav Kaila\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4V4PMvAtbutzGc5DPmnorMSxxZuPFeBdGKgR59UvhZx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,pi1ax8Es0k6KiXES3T9vsLJY6znUGMLeJXgPeVpvdtg=,4pJxjhmmV58jqsBQADGY9QnqTptWnWujK3NFASrP9cA2nA6eHsmmh9PmRGwjxakPQHk9MVXhzrbuyur333du4XPQ\', \'ids\': \'162\'}\nWriting record for James Loy\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavev1mxEYma2r1MD2Q99PJKj1ct7jmAC35KWSYPitijrCTt for James Loy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavev1mxEYma2r1MD2Q99PJKj1ct7jmAC35KWSYPitijrCTt\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,8Jq3IdrAEsITCXwcKTquZD8XQIYVuy2kirkdSZ/tBto=,2BuuyuXjQq9J52mgLP7Y9p8hWbExRMnpLeHo6we8GjKNpjVUZfmY1vKUWxyJUb3fNxz5SCRrYJYNWq6Uok2peZBo\', \'ids\': \'163\'}\nWriting record for Chintan Trivedi\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave23i56eNqQx7UGf4R5Cp6whMST6e9LGK96SGmeVtUXeD3U for Chintan Trivedi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23i56eNqQx7UGf4R5Cp6whMST6e9LGK96SGmeVtUXeD3U\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,myHPQY0/YYt4rf28xU6WQEwNJd2sGPinbMssYbXCD/w=,3bxbPyuXsJM8Kec8Zk63QxLhQ5Mdt3M1EFq52XNJsCB4136iZsKRKa9tz86xuz6g8SQTbTN9jhBUepSxQSu4gWZq\', \'ids\': \'164\'}\nWriting record for Abhishek Parbhakar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewYC94Hwi5bGhFeorEp2sghZKXBWx1yreFYBAs5Qjnmz7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,UxzYFgvpUmUbS5Og1EaOTBe3ulCrAQz9Lcmi8jyuUUA=,4Rh7VDKSsR7q9aDa46zTvfqHQVuTUqgJdb7ANLWVyJvX3yzerUx9wwoEy9oHGqZcTRPZckWPGVDHKxpX7SbRHqfs\', \'ids\': \'165\'}\nWriting record for Leon Zhou\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavem3zUDmYscSE2p1PRfUwWAB4ec5v3LuLXDETmQZq91co1 for Leon Zhou\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavem3zUDmYscSE2p1PRfUwWAB4ec5v3LuLXDETmQZq91co1\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TpgK7sVdTbNZzcePBlmAFL1ShXdbB6oNhDpAiC1SznU=,td7mg6PXE8VoRizZcbyeQJddqsgavaaaJtsMUw6sTHPJmKe5RbVeAQhiNmKYRPaZbEMuJboVtqmHTaxybWsySmC\', \'ids\': \'166\'}\nWriting record for Dr. GP Pulipaka\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefJHY7kHgG9cPmv6Kt1GBu7XnB71jBxCbrZvxoWPe3Exa\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,GogdGjUYiEL+YIRGh+/VupxgODPK6CQCLAr3sR4YH/4=,5d3ff3CBockuXH81pCmAokuqnP5SGVUVfjgQeDcKmECGoiVd9aL6KJLE61Ej4MCiiQQrAQ8u8CzLu9Qnp5jCc3Sg\', \'ids\': \'167\'}\nWriting record for Erick Muzart Fonseca dos Santos\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavehgKrz5jmXKLLxQJSsJSAUCVV1hkHL1cXJt6m4D1Vz1zV for Erick Muzart Fonseca dos Santos\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehgKrz5jmXKLLxQJSsJSAUCVV1hkHL1cXJt6m4D1Vz1zV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,d8RzFq1ILVJtc2XF3GEACkIfQcEoWtOY2z8AUnGGDJg=,2FDw2zeo7RWHxUfuEWfBJu3jpQWxvVMpPMpgySgeB5N6n4D1Pv96DEaMZTebjibHzYEmZ2Fsi1oAY5BtMN37hMh5\', \'ids\': \'168\'}\nWriting record for Chris Kalahiki\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveigT5ZLKaLdBbFRLNQ536NtDj97WPoMGyKjcJVKNDdGRx for Chris Kalahiki\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveigT5ZLKaLdBbFRLNQ536NtDj97WPoMGyKjcJVKNDdGRx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,deioWDV1f3adhrerIboSSgE6NuZeX7LaY+az2oTlo4o=,4xwFju9spTPNn3y6U7gFSVhFaQXWuUJtoQNoT8eqkWLAvCADNUF5exLbFfcxEZ9pB3VSyEHxiDfuVZ9Pa1Cc81nj\', \'ids\': \'169\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Xuz41ZG3/IWrhR7aPTMRlMLb6sTgE/HaekuV3RzWBBk=,2NKdTSsJdhNP6nsBSYqxG9PuFe9rwTADAG6wtKpKTqxng6dccXoEP4o43sxs1ftCmdjpzurh1Jorfdz49DjjbVgR\', \'ids\': \'170\'}\nWriting record for Adam Geitgey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevSc8shf3NN6ufVKNHh7avoAzKcPFopmr5uj5vL2BmMEF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,5nJy92HpMonWBkTopLMblwAF+r5Qtk+JlhVj+AmY6rE=,F7UtuUnfuazQTBDRZjAqugyKX2usW9qq3YKH7K51wKTUMRTgx3UArrFE7vDeUyz5ZPKg82ppev8QaAWYP5Tw7oy\', \'ids\': \'171\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,RmPD6coJnecrwl+Grqu+XlZ4AupriUWYrq9sBfHHMqg=,C1xeNukbx69SUnWbhrddty85Q86FZMZWG2r5wD33GcjWUVf6wvZtdY9iH6F3yDaR2hgXYwb7LLXDPX9cLJTGNFH\', \'ids\': \'172\'}\nWriting record for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,yNIs8/qPXulNwu1+Ymt2DTPo1S86MA9PKL2VhmQky6M=,3yGgwzcqqvD4fUuXdRUyf6qEsixUS2Tyw2ABHnLiTQjrsHa987XkxAA3RcuN1MK1bPMT1hNTut5sY1xZYUhomSaF\', \'ids\': \'173\'}\nWriting record for Sebastian Heinz\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22zZtvUz3DRVDLcaBkA7mCwgE62HxY895N4rLfVsq56fP\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,RmK5OUYX5OubR7+ihfhtY/q37GxNr/4ZS37UhP7XatM=,22szeLckiPqJB6CNPtEXqkhzadKiMiv4XGzhgPn4GKEb41jHZDQ2x9Svd7tRZv3pTJfRGS2JvNKPmne5nBfH6V3S\', \'ids\': \'174\'}\nWriting record for Max Pechyonkin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22pdghXa46iy1DQdJAz92d5Tzx1wS3KneCJyo6fiA7FTQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,42FDDv7v5VqMMywrhKdYO2zzHQe0dqz3FVJ2B3u1lI4=,2zdvY3uweVYdRwPKVsf1SkHzVvvVaJncaCFtxwGJFScP7NBRErUgMoYeJ2mGpWy76jvw6sNcCjyyEqPNQp6u4aQG\', \'ids\': \'175\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,AVMO4uLQPzoEtiPqJ+59Rn9Rtgi7BSTTrkENvGRuwto=,5YLPEHvHVpSqMszETSGZ4MrrtQhcPtXjw1X6cUkfRchp2S4bnxQLhNv8n4UQX4229JpPGpUyNVQ5DRqxqCc65vuu\', \'ids\': \'176\'}\nWriting record for Stefan Kojouharov\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA for Stefan Kojouharov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3+9SZ9URq3q2IktMLQbZ+43spH69/KlTeqpf3ljMsfE=,4A23wZkDAJYRRQyJ2yBGRteK6Ytecjc3tNGPv7ctzjoJebdkRDbneF8tbQmirotWWMfQmkpNjHij3mGUQjM4zz7D\', \'ids\': \'177\'}\nWriting record for Netflix Technology Blog\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2Bd6edL5Zoa6qkTrBXSEGTrG5DrrGsRPmCt9fbcsbzPHW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,uDfmS3fKRr1LdCYOrJb1kjun8Usqo9V+z7X7Kerzi3I=,5TcNW8sVy1Utm99Xjhup7oRqrh91UJGzQxvBjt6EG7xJR9GWNddr77UupYdfh3sAT9onLdLhkBeWfPohSaXua9cJ\', \'ids\': \'178\'}\nWriting record for Francesco Gadaleta\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyN8fDvhiVCna5sENACMye5aU8VNvY6KbqmwV7x2Aq7yz for Francesco Gadaleta\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyN8fDvhiVCna5sENACMye5aU8VNvY6KbqmwV7x2Aq7yz\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,dKs2fagwovdZQD/Oz+vvgRTB6VoqVFVwL8kwqf7lAVo=,3N7ZhuYKY8qCZPtXywBt827S4kEXtyDc3NSKf7CQt6HMYoBLAwtxhXFbFMaqrzkMUPCLDL7nVXFsoLqyWWEV7GLB\', \'ids\': \'179\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,kxG/MZ5K5oBbZwPJL+rzkQ+wEXiSJumJGnXNmS5DV7s=,4hrpMTv4HPG8kn8xfcdoDRdKoQ7WB1KpGMHLt13ptLxRYhtWXEkmyck9qoVeqokYdLW5rMUZxsy3Yqf9Hgfm86Nw\', \'ids\': \'180\'}\nWriting record for Jim Fleming\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BEbhqFoJmvhsAhniXVChxzBUeG2emHD2aXdHoVWjveh7 for Jim Fleming\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BEbhqFoJmvhsAhniXVChxzBUeG2emHD2aXdHoVWjveh7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,FEy2GXlFhi8A0jgtZftrhcaebA54wOxhc/IHWDviZ8Q=,mEVHjt8NKtx9p7pqybiFxVAHhPo14MEgDoudvK9mpys1JV9HwxYBbZihdPHRoqxup5d4WkZeBuSVAFAGvZp5n2p\', \'ids\': \'181\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tsJag46dFyvCM8xFuZkiZrodDHyeq0/Ca7ibpibX9vw=,5yQvTMy8U9r3EJC8xt1LKUx3MnFcJaVUJ8GbAAgV4asAh88wkv2piwXoeDfiCKAi1T93c58aCKDfrwY1WrinTUXo\', \'ids\': \'182\'}\nWriting record for Christian Hernandez\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevucDPnpf5XQmTvi2GHLrfkfSsqfFzytVbXu7PcSpc1f4 for Christian Hernandez\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevucDPnpf5XQmTvi2GHLrfkfSsqfFzytVbXu7PcSpc1f4\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,g3qsO85AHYoJazmm/QWWCcxy9HraEIYIxVCZVyykeO8=,3LLLqD8vg4chNfAVSvuYhqpPuaUFUYfKspy6Yu3MRvu2gB6SnXfodpEK2cD45y3iidLqRRGkTceeFrX2yQMomw7S\', \'ids\': \'183\'}\nWriting record for Venture Scanner\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavedHXGEpYq9zfqVyiwzX6GPMVhkZuhEAxBmFhMjzhhfkoH for Venture Scanner\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedHXGEpYq9zfqVyiwzX6GPMVhkZuhEAxBmFhMjzhhfkoH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HffshCvNpGgYlLZwAviELzM++RWsyqMnGRllf+RdlFc=,brVqy5Mm6NBrJDQ2gGCFgEDt4oYSpQRg8SgETTPFGZnYd9Ln1EnJ9GFw2UUYNZqLwgQn67bHafxn4oyz37SspKu\', \'ids\': \'184\'}\nWriting record for Illia Polosukhin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekgh9mDUynkbusDL1wjYT6jrgGterAXMEm1JPHSTPtEQJ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rRGE/81fOHycrk4JLhj7eJ6+WTnC6993RCVxuu5PIY4=,52nUiCMJ8bAHoERkvCvQwqiMxLnjnyDkhkNiariLUcNDHnqmi9BPYb17ZEdYMxkekKQZmDuXMnpchJB7S6zs2PdW\', \'ids\': \'185\'}\nWriting record for Derrick Harris\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevZyzEBYFswwSCgTqivvCx1WMT25aXQ1SBrPTifYLqETg for Derrick Harris\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevZyzEBYFswwSCgTqivvCx1WMT25aXQ1SBrPTifYLqETg\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,57K4HABlWMWRFAzyLyQiLjP+8YTIowTQ3Ef2w61eEgg=,5UFpTui2hpf2XGWyu5g2SFsgrsGr5Yt77hQdmJH6F91J1oN1q7d5SSAjUozX3bGg3vF4YSu6tY2e9Ygy6o3XVmQW\', \'ids\': \'186\'}\nWriting record for Kyle McDonald\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BsRWpXq7vdJ2GbpK9c1DhauvHf5ZQS8U6PzMHceCjqwR for Kyle McDonald\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BsRWpXq7vdJ2GbpK9c1DhauvHf5ZQS8U6PzMHceCjqwR\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6vr5OGFnDg/mtCfilTQZsFvmkBoXlt1wk4m7PLv4OP8=,5DmdJTufzTnyYdKwTGL9jGXCuboPYZ1Jh3YzNtSrG5rmJCouKzCQ4cznDg7NJtpZCBVqjZRCxhcdBCaMSMninaYi\', \'ids\': \'187\'}\nWriting record for Jim Fleming\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BEbhqFoJmvhsAhniXVChxzBUeG2emHD2aXdHoVWjveh7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,aSqpglG6Ab7b3hB6T58jR+yDXlTBjMShnETYUKwTc5c=,4o98FmWRHjuer2NMa9fXVeFPFrPuayDiiBoR6s9eJHiq1eDw7J93kx5EFxrp2skN5SL3edRaSJRnsoUQ5u1EyMCj\', \'ids\': \'188\'}\nWriting record for Nathan Benaich\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewDdiuSxiQpLzG1yjgFiX7Livv9wh6BpiPo82oygK7pCK for Nathan Benaich\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewDdiuSxiQpLzG1yjgFiX7Livv9wh6BpiPo82oygK7pCK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,pp2gU0d7dBFL1pabl4TzY2g9pecCil8Lk6DIQlu8icU=,21zuzCxL614NFNGeJhCnCLUCjgmsiLfamcec1qF4WSnk6zxs31xDNPV9avVCMYBj5efoJKEwysFwr1dsZbHbh637\', \'ids\': \'189\'}\nWriting record for Tal Perry\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemQ83gdkjq27b1HTv8m4mj2fRB32HP6T1GYWePAsPg99E\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,lrM+ikKe24tzoMNdcnd/TdoF2ENkCDpwir/IeUumBc0=,2Nt29NZVkqJX6SnBph5kXrHBbFPmEbajy2c5tcSyWf6RvZQC2Qv3TXv9tMchnQsqCPbv767WiuZam5fJmhCKbMub\', \'ids\': \'190\'}\nWriting record for Andrej Karpathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3+m6OcmK92/HTUSplcTElizSY9oJ7woyxCjfJ6Hm32Q=,2DNwLrx47n8TFHVmVYtnF2nsrQvUwjmcC25KwKm9xZgSzhih9JYzSiXShh2sMPDw7GihRV8nbLarTJ4QpDj9niTR\', \'ids\': \'191\'}\nWriting record for Erik Hallström\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqeDXhRVJwtzvmHLdtWur4i599kSMkBYeTxWYkyRHdkEr for Erik Hallström\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqeDXhRVJwtzvmHLdtWur4i599kSMkBYeTxWYkyRHdkEr\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,+c0dqP9ds5kO9jK/eSqNIBMqvONQsjMsCWt4ez8WknY=,4KqDvxL7rQgsrk4cdJWySWDY7LG2g3GLYBm16srZAf14t2AuJLjiCJkqL9czvCq3MctoPLrSSvDgj6WHG7DFRgQp\', \'ids\': \'192\'}\nWriting record for Stefan Kojouharov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,bQk/GrYOdt/fYyM1lmMzAts+wHIrw2BJpjck/gs69qA=,5Qs8Pssqi2xW98HiW8hTmhniCVXdjAcQrUrMvq9L8vuLrARSQZW53VYUfGU7a3JBCdM6cffFe1dsSrofjawBUc6T\', \'ids\': \'193\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,1ics+scyR942AxFNj49tpsbOt/qD2bVmHcQTeYcaNjc=,2AGkeL3LhxBygtzoAgijp385vnXUJYWnm8fndznsamDDBsNV8b6pFhLc3wQ6TihvTRaH9vkBC7xfedJeV9BXA6uA\', \'ids\': \'194\'}\nWriting record for Alexandr Honchar\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave25dWGtpRM3txtG1xt5XfPVYFApU4J2CRPRyPoiZFoDW3H for Alexandr Honchar\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25dWGtpRM3txtG1xt5XfPVYFApU4J2CRPRyPoiZFoDW3H\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BSVLaPK3ShDba3TT2MTOSFrSwTe2zeIkUiFGkwsfGHo=,TCkfQGaXRSqaWw5hSmsLb1y9p7d4rtRmhCBaPEYqrER1Zp56YFfu6qQVHP46tAJ1NCpdf4xzDJkK4jUSJctKbf6\', \'ids\': \'195\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Mzzvntdb1zNPlbaPP+58+ya/92YmDIXg12xOSqlNF8k=,5C2uLpP8mkN4w9XnNykmc4x4hNb3WYbwqKgRH9g8G68UWYoEtZyHaezVMx5aVoDTKGD4ocTtKreqtTh2uSRFbAL1\', \'ids\': \'196\'}\nWriting record for Vishal Maini\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28KtG4u3HdMjyBKkiv4rQjDwx1mr19E92BZgxYvYEwncM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,B+8FyNH97zdmBZqr5FhRdT9zx8WhM5R3iPYeCMtZ1zM=,5zxHikWanAZxjSZH1dn6jxGHzk4gLabKZTuiyxcXXYGDo3DSda95gy8c3ZvVDWzZjmx2HWmaoMeLEyENxNP2Dm2k\', \'ids\': \'197\'}\nWriting record for Tim Anglade\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiRAqixNQ6m9pa5jGYAATnGriDenB6Aahi5XCuGjp67Eo\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,1/TFZOsXTYG2wdGOphdgDg+lPI0S2zv9Ww9EH1wWIS0=,47yViQf5VDtRMdwewqYvEXYQbYDjmvScCdCR2w2YrNprkKkzsqhAR4DfiDsgtyKhXV15QY6CdiPzSNRWcH4Jj8A8\', \'ids\': \'198\'}\nWriting record for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,WorZ7gWkasu9+EeWXsZ/GMA6xjfxZLuxK/ZpYzszsHc=,5aSbgJdNRMpC417ydmjVfQYay8SADgQ9ftssWsU71h8V7sxJQ7JpQqDAjto6A3tTFvrSVpdqtdf4sruE86peoE3W\', \'ids\': \'199\'}\nWriting record for Sebastian Heinz\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22zZtvUz3DRVDLcaBkA7mCwgE62HxY895N4rLfVsq56fP\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xb58KZsWv1LiX/Xc7AesWxlmVcTxBIAa07DOcVi9gf4=,wv93GpRJA7oyosShcWD6gywniLNYn5EAzvo1PbH7uSC9SbToF1o6eLgdTAbE5ctT5PWdnWk8eaZE4KLt6vecajs\', \'ids\': \'200\'}\nWriting record for Max Pechyonkin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22pdghXa46iy1DQdJAz92d5Tzx1wS3KneCJyo6fiA7FTQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rr9Htn1ZPlQ1f4PysJNQfD040kxz/FijcF/5qESrYr4=,ZgzKu8vzJ6hWz6bqS7rmftEfQXtN9SzHE8uHy9guMjnWUmFtUHTaA7oAcM4uqDi9NTn6j8XHqsv7Sr7yShmeA9d\', \'ids\': \'201\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ym6+x/fd7KXtxttLrZYWbdZ9plckwx8CglxQFOZKuYQ=,2hwSa1FkX68idy6udP7rmWXwo5W6jpTwRtYyFKXVkzY7irQKNWSYEfbxa91qwPvZPj2yLNMq1oVt3igf8tTcMriF\', \'ids\': \'202\'}\nWriting record for Stefan Kojouharov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9Ji0dRXJZkJg9YokrIq+UujPRe0jZM/o/Af9yEUA7jk=,62K4SXNmUgYWCSoMByqrjEYMaqre9koheXRsN5VnifhSJeMWd1DSnCs775DGs26Rsn9F2ZTKtaLwwFuZ65UsBvRS\', \'ids\': \'203\'}\nWriting record for Vishal Maini\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28KtG4u3HdMjyBKkiv4rQjDwx1mr19E92BZgxYvYEwncM\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ly03IK1WbuZpcqzAYKZp/u+hA+jyhxnFtNGJ9SSjvKI=,3z3kqiu3wG1V63bXGTXVxg5EmZR3vrUN1eYRvHTvspiuEGUnkFCGxcDKZ7befYz77rSx1hLd56jBUUW9SM9piS46\', \'ids\': \'204\'}\nWriting record for Arvind N\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavequm9hcVc4VVnZ7ic9mB9TwepoxNYodXw4FxbdoGhex2m for Arvind N\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavequm9hcVc4VVnZ7ic9mB9TwepoxNYodXw4FxbdoGhex2m\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Os5qDrKX8MPhGVl/M/leWE1JOtz64v9SU2R6EbUp65Y=,4tHPdc8cMQ9brqmDi4xSmw9GYaswyy55zufm4FMHDJyrBaVWZEZDBoJiayg61EN343WJkM9a37x261VDy9eUGG4G\', \'ids\': \'205\'}\nWriting record for Blaise Aguera y Arcas\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25FmmS1C3HkoQEe4scEiy4cEC4hzmQ6AXbRWcDZUuBtC9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,N5Wymx82T6Qqi7c1v+3KwVN1sGWNEzsJdE7NekezUJU=,bssN5xypJX4cyz6Uxw16t52Yw6aduL3wDzcyvdCMZgEieAYCsh77iErevwQoxsigAooXngJjXdfQpoSuccGUJJ4\', \'ids\': \'206\'}\nWriting record for David Foster\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecXvMjKVHcPsjrDa3b5VN9YVdhKDjWDzhuDjhzfqswAdT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,5Vj3kdY/pG0TkxNVonuEAn2YHu0PWmFBfo2miSgqYKg=,5PtjhNZU12XehCn7esg7mEjXHXydDAs38wCoaZ5sWBwZtiPeEt8un2USMmFdtwLV4DQ5VkTp4mqh7cyYmbwmLHNC\', \'ids\': \'207\'}\nWriting record for Aman Agarwal\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyKrGCkmrGL18pWHik3iKkzxZQknMv586jAhJR2MR73wq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,040KsuK0I00Q5CvuUh3fuAdcSRjzQpxHAxFIbHXdygU=,2dXDS2PGVrQweUBzJjxcDVa8pSSSpJbHSBa1CpyLLUrsWWFHn5svU5eBWr8pztRdVLkiCMH8LkY6GDgcSvWQXgxG\', \'ids\': \'208\'}\nWriting record for Eugenio Culurciello\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TnTFIrwrq0BJM4AiLbgyvDPD73uLQ/0YJFw3RoA2VhE=,2u2ME3fEBMJnmjq35mqz777ohdvfywzy7vx1X9GXcvLzL9mSf7BfJujK26xRgFeP1YaQhRsW4wjFY2NdB1i6X9hu\', \'ids\': \'209\'}\nWriting record for Gary Marcus\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave27YN1kFxk22HfUb4fW6x7nLkb6UmMWjacJXsdFBAgPLX5 for Gary Marcus\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27YN1kFxk22HfUb4fW6x7nLkb6UmMWjacJXsdFBAgPLX5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,bJ3ODTd5c/g/W+EBp5WDE1JyhRP0ZNaHVQ9Pcj0Lyj0=,2HENr8fePNjy5fForiqjkXb9QNKTRsnqeAZbU7xx4MW15BnCyyH1gpDbkxfPjKDRnLzaukvwZgsTtf3G5aQaX4FC\', \'ids\': \'210\'}\nWriting record for Bargava\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefmtJc8vJseWZsnGkNo3acqoDTE9rJW5NYbTqyDFx7MKQ for Bargava\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefmtJc8vJseWZsnGkNo3acqoDTE9rJW5NYbTqyDFx7MKQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BxRsfjnYr26JUcbWCSmNThx2S0REsxzFsRw/LrhGsTc=,2htnDzjNvSERiEqYRtUAciW84qCrZRr9xrrVbSUm6kj7xjpWry6gqez8B7bYvjHE7SY1ZN3Qnt98LWcsgCZRb7mo\', \'ids\': \'211\'}\nWriting record for Seth Weidman\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveh9JzMvaA1djtsoXprS9NeYidkqwxJCh2vSTiWFEi9Naq for Seth Weidman\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveh9JzMvaA1djtsoXprS9NeYidkqwxJCh2vSTiWFEi9Naq\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,MZP+zfOoeCfHtVcbtZEG6FZBJtbPL9WEE4+OHdcGwrg=,51ri94kr6rYLL3sE6ALcmRBcTN8zBaLX9r5umCpjKDAxQ31UpzG58wkdt2ik5j2ffNuhEyWSdhuiCXLUPizS5pLE\', \'ids\': \'212\'}\nWriting record for Gabriel Aldamiz...\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavenDgagjbwCDfQ3rQ8B3HCt7EjDEcWtqUTugD7KsLyjwR9 for Gabriel Aldamiz...\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavenDgagjbwCDfQ3rQ8B3HCt7EjDEcWtqUTugD7KsLyjwR9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6Q//3jc5ibmG0aEc51N6ocwgF4y0y0jzfG/gRAUd5Nw=,cJPU4RDgJ9vFJJQFopwXf9kvgZJaER7AJkfL9KQVAGLkQAs3gjJZwEezY8PfiKWL8GXvWy5Tw69v9dGhqcgrdzQ\', \'ids\': \'213\'}\nWriting record for Sarthak Jain\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re for Sarthak Jain\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,smpoWEZe9So4XPN9UCe8+wvQY27vdU5ruwzU5Bomrgs=,3e5JJcMjKS47fpY5EkHD2WcE7QEcm6gkpKanLwBkEVHebF1d7T4BASaUyAYN6RhKksFVC7C8KLYZQFUBNHoqHwCu\', \'ids\': \'214\'}\nWriting record for Emil Wallner\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavek1WcjV4cvTewhjZWurTsgRXSmHjgAomkpf5TUJA8WMYu for Emil Wallner\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavek1WcjV4cvTewhjZWurTsgRXSmHjgAomkpf5TUJA8WMYu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,IJytYblQkgTiZSaIK5V2XMYysiknxWHlzyyYHdNYd8Y=,5JJciswenGnQhk4igD4f6EZhKA6qjtEz24EqUoNgsLcQh3SThmNHezzLbdZY1a3L3rZPJAgXaqWqvB5zL17cmiDu\', \'ids\': \'215\'}\nWriting record for Gant Laborde\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiWV2dK7p3AHhBkwMBjPqpM6vVM78D62HdUUBYxmMzdKb\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,TdFaHlnplmxlfOn6QEDPQdtx9gNQfvkFqB4NaXGR7ks=,59T59Lvubs3Ucq8Rtimu2wfrik2fKhbAXegjtVMqSPfTqg5JP8Job6eF7FDn9LD6FrtHqk7Tjz8aEnBThYsYwhEG\', \'ids\': \'216\'}\nWriting record for James JD Sutton\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaven4NJPnGkv279TaLfxBAm9QPkkekHAxDnpLQuLsG5JX1w for James JD Sutton\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4NJPnGkv279TaLfxBAm9QPkkekHAxDnpLQuLsG5JX1w\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,JGjq614zBbh90mwjA0YVHiLw/ZsKEv1zQaz4Qku0B90=,jKGSjBWBAoDnLuKX7wTXeC7xrFLJX9WfCvNHsQy7RhKgg6sGfRrcQHJHa2yJitTCSozR9FGr1T3VPz2w6oFBbDW\', \'ids\': \'217\'}\nWriting record for Justin Lee\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,CWRnsA4YfzFGmoqvWUMWp4K179odkAGjwOMj0Gma6Ck=,49cqiEHBg9tG4Zw89KwhDQstEQPT98WcMNPMD9A1ajfSpGH3hjytf91jsr42mZR4d1PXbG17ZeJqt9oFo2f61QLg\', \'ids\': \'218\'}\nWriting record for Kai Stinchcombe\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqj4CCk3YwxrXiGRL8htNuJkx9m2ihNWXu89QKrw5Wkd5 for Kai Stinchcombe\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqj4CCk3YwxrXiGRL8htNuJkx9m2ihNWXu89QKrw5Wkd5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,wNo0O9qM7eSQK1tMJarWqGdJU5WpBC5ik0WUSaxXNdg=,3bssdCJFGw2iW1DkzcdzH5gxJF63jdCUj723TcAuvjjeqfkSwDh6pC5DGaJzypvbGKAzfiXYXXd52uZTgVkchNFP\', \'ids\': \'219\'}\nWriting record for savedroid ICO\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavezcDwigwgTRRn97YRX7AcXSF3tRaM4poeMqUqSzVsv7go for savedroid ICO\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezcDwigwgTRRn97YRX7AcXSF3tRaM4poeMqUqSzVsv7go\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,37pm1xkVBJL4uGRU27JBkkMjFUAhvdcyb62hTRL6IEw=,pjd5UvG16ePjjmrwyw9UKynY7CrSzXiUiuYFPr1kvXu6uCqmxi2hqYQEQyNLJMGvtUYUDrmZju72ShAcW7Dy85h\', \'ids\': \'220\'}\nWriting record for Brandon Morelli\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveg2tZnZxXAqJrPscmJHNzRygPwsJ4ndgUXqxmTfUroeXT for Brandon Morelli\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveg2tZnZxXAqJrPscmJHNzRygPwsJ4ndgUXqxmTfUroeXT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,91aNoiP0p56m9NVIZ52BnfS48vKH/QKYsKUisIg8X04=,2f36gkKJbyVasiqtffqWnnebggcX4Ukm3hS6kFLLnnTYWjzTwVFComGpn9Gx5kuAGRsKJXmqb591xoGh3ZV1MhyX\', \'ids\': \'221\'}\nWriting record for Sarthak Jain\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,CCmZTNaYF9lXGmrsdHzBElwSdy+Ko2NhWkivxvNVs2M=,4BC7bD7HBirGTFKrTaz3Xg63ybhr7LeeydykFDSvCYvjT6rpjjkKTuw8YdPeJMZeQCBPFvtoWoJDr3mjY3HGvs4U\', \'ids\': \'222\'}\nWriting record for Dr. GP Pulipaka\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefJHY7kHgG9cPmv6Kt1GBu7XnB71jBxCbrZvxoWPe3Exa\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ghftrfs+EpolRAYQAqqdoNGTbBRiXjH7HERIf2CbQPA=,2XTWiYoJ4HteweUoFTZmHxzEsxBxwhTpkpKKVK4G5vEx4Zrp9gJEKUEjGkxEdwCzwFopXaKm3uKXgLaaUyNJwSsD\', \'ids\': \'223\'}\nWriting record for Gabriel Jiménez\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BUHDoC27o6bHRWtEgCFYz7czfbyf5rGtcLBWUcq9Tr9L for Gabriel Jiménez\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BUHDoC27o6bHRWtEgCFYz7czfbyf5rGtcLBWUcq9Tr9L\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QgHnoD7QIuDqI2x4DBkUtgvm35YCPQrBePtaBxwKaTs=,64WvE7HFt3BJ9rm8h7Fm5DNpTGNeXUJYv5anQXWmD8pWwVFM2okxUQHq2FP6oQyxzPzYorCiEdvZNgTwbRsLw1mv\', \'ids\': \'224\'}\nWriting record for Kai Stinchcombe\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqj4CCk3YwxrXiGRL8htNuJkx9m2ihNWXu89QKrw5Wkd5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,uZCiX6efpXXjNqfrran5cuCnNRPfOGjsdYkqF8zusNw=,3gitVrCxhdsBbvgneJpU73FyJrYYnTdvSjhnmaSjg7NnLm1vDurmuETeMymgYuWutA4z5bTxUyvjUEa9AxAUuz6s\', \'ids\': \'225\'}\nWriting record for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,u73xwjnv1IXor2b+Hs2k5qk2TkW6rsX4e+H/fqjkCco=,5EFSsx2rtqdnXBHP1rb5SBZKueLQFRg428vV6V6CeqscNT7rzk1mGv9cVgzkqtbmBTeWbmR55VfmHBQUJeLNkHhH\', \'ids\': \'226\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,8DW060E/9FOPwMMMcUJPG8+/k9zd9QqNOcbgw20iEJ8=,5cb2S2QVnDGHELyNuBWwKVsPqvY2T22dcZpS3gHKMHnoSavqJK1qswaik86WLvGUSiuCKYq6ZiyaCUNc8YWcHYeu\', \'ids\': \'227\'}\nWriting record for Tyler Elliot Bettilyon\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveq2yJtqYPE6afHfBkXUxVssB91ZwGuevU6iERvnimvZiT for Tyler Elliot Bettilyon\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveq2yJtqYPE6afHfBkXUxVssB91ZwGuevU6iERvnimvZiT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Ozf+jCxCt1whzyf2pZ0HdDFg2s3ZTPwf/FvmdZabgf0=,4ZWeBRvNNBrHvQDCaFrSoVJ7d8RkY9SGFZ1g3tgxMKMgnAD39AfjERcZdQcny66RpmwBeN7fkpM5hiWiPFzG2RBj\', \'ids\': \'228\'}\nWriting record for Blaise Aguera y Arcas\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25FmmS1C3HkoQEe4scEiy4cEC4hzmQ6AXbRWcDZUuBtC9\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,KlfEPV/B0MFCE12WDnH5hf5Fo3VXwgiAwhJ8DR3qJl8=,2crBXvGnKhAMmCanMjQGoddFizUeNjuKhaRP7QNsGzqqPpUQ73kK4Aga44cZgNe9Xm1DnGuwtdd1hijf48ayN6tc\', \'ids\': \'229\'}\nWriting record for Arvind N\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavequm9hcVc4VVnZ7ic9mB9TwepoxNYodXw4FxbdoGhex2m\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,IsuQj+6T4ByhTgVFGROmW8Cvg12AO59CBh3LBV2/D9o=,4te6UgUgNgkiL7potVaK9EKvt1mMxgAd8EynnBdkf7CnMnDZaxpx88G2eJLURx6R4oyvBabh1qgpGHhXMZgxK7xP\', \'ids\': \'230\'}\nWriting record for Berit Anderson\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22ETeUTydGzGLLsdW3dp3qZ4nbz5HvLwePwpD3YUPJiJD for Berit Anderson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22ETeUTydGzGLLsdW3dp3qZ4nbz5HvLwePwpD3YUPJiJD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,V+7E90rrpGBf0HXzKyLQQ7hK3wfNE++SvBLEkOgLi+E=,4pife5gM9Nh37koAoCQd4qUF1JccBZFDYy1WkbrZKWHvbQJvKTjnmrVXSxuCfmLQqpcfzhPVWjXmpDgiemvhqYmU\', \'ids\': \'231\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,DF7/WrxqDapQAqJxvbB/C5wgz65NcqvuW6fQ90qBWWQ=,2jHgjcf8kZZgCHEwXcAHNd85HQmM3wXmcwhS5W8hwY8iscVQem1GEHhfWpG7xyxuQ33czaC7KswV5B4vczBmC4Em\', \'ids\': \'232\'}\nWriting record for Sirui Li\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2AJG3ZzxHh7sAXHeikHrdacxR7wrSE3JenZZxK4wBpSKR for Sirui Li\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJG3ZzxHh7sAXHeikHrdacxR7wrSE3JenZZxK4wBpSKR\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,KXRGuJ69wMkiFdT/9j2qJl2YszsP541EkemkqlKsODc=,4FvMtRpcBaxskYRkzDjzjUnDxWi7fKiSNiZJ7xwQy9DC4dM1wnVqDAh32p1y2yHQpcjEY42DkexLxg3JZQmMGNQB\', \'ids\': \'233\'}\nWriting record for Theo\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebkWwnxF9FsBwcYntnj2EPdBW9rxhUb76J3nygWtTWoGF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,x4JJRrPUql5Zflps9GU1o7SxE4kg7Elz0C4oSvJH+lQ=,3r68XRu5bVAK3f2FjiffhdNdY97xNBK9UShcdarZE5PW3xbBE5uerNCdtqQ1FTy25mRHC1BSUtY69UQtuCyJWALd\', \'ids\': \'234\'}\nWriting record for Diana Filippova\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavenLYu9HDJy2GnJX7NpqjXEZx3XeaVQvcspdVZXkKWpP7p for Diana Filippova\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavenLYu9HDJy2GnJX7NpqjXEZx3XeaVQvcspdVZXkKWpP7p\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,YaOV7K1l4OtLuTCuE7VTHn2h6h83zxatWnJCa6ASsXQ=,3cQYtyWpVTyeu9gx4ApMud6CWmtmHrtQG8svB9Y9tuY1wsH8tCi9oK3qqA1rqZWfQB5hjpd3KXNGecKBqk13wy91\', \'ids\': \'235\'}\nWriting record for Peter Sweeney\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveegnFJx1up11tZe16WjDnVRq4EwdRMKuA4BizwdsUoUjW for Peter Sweeney\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveegnFJx1up11tZe16WjDnVRq4EwdRMKuA4BizwdsUoUjW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,qcWWy5UAGsj6u7ljosIHL5SSKC1v9px21duimdsHeyM=,3msLgSRy36XNEQChRbY8o2qVfREhyShkVeJd1avfWrkHpn1pMF5X46WHuPWHnTkdSJRtLmSZXsqSs52orgCPHKxH\', \'ids\': \'236\'}\nWriting record for E.C. McCarthy\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexa9NWpkxThWocbnHTbNfqPCW2rHucCVQmRXBWxo36hhQ for E.C. McCarthy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexa9NWpkxThWocbnHTbNfqPCW2rHucCVQmRXBWxo36hhQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,7xIbRhQTLb0yD4stPStVKPaoDGPPJy6OUwtegbQfxjk=,5Ga5xVvQ8htThqcBYreF6SskxHZidbRb6B5c5jzVBHbHoqGNDd923N1eP8RPS5vqSCHuHu44gpw9v63pPtkE2oc7\', \'ids\': \'237\'}\nWriting record for Jorge Camacho\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave21GCC5E9stevvKqaXaTNRx7R7AVSnFMXN1m5TVzcZwxPf for Jorge Camacho\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21GCC5E9stevvKqaXaTNRx7R7AVSnFMXN1m5TVzcZwxPf\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ZtXwETUzyAPFW3v6soNn3BMCAxvKCRqIWr8C3WdIkhQ=,5UaNXzXoSLTVkjarpijJePAAGwCLweoxkxCkJL3MFRi52cXT86qVhixF7xJVGdDoMZ4DrRt8YxRE3ZYRvLNpu9oL\', \'ids\': \'238\'}\nWriting record for Tommy Thompson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23i66NEYuhPtHEFRhru48iGSsQMCe3A48uEVm7mFXcrRK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ZH+TzHa/WEJ1P1QZ5Z8cmFAqlYeHlbR6d+dKyLjNVeo=,yTb6NedJDXheNDJ4MgSduqbgeWvoYrxrnGJjuz2RxZ7jGRHMdu5ZAw7UojjGR9dGFJ2WgRYEitCtbLLt9dvHEiW\', \'ids\': \'239\'}\nWriting record for Matt Wiese\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave24vrvGux2vSARnTYtuqjL5pqzXMuQUsg9sGLCHZAbpQxD for Matt Wiese\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave24vrvGux2vSARnTYtuqjL5pqzXMuQUsg9sGLCHZAbpQxD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Mr8bwxAkre6DizghCfFUS7fdnH284dwGD0GDa8ujn4A=,3KEDAR9JU6ePD27pFqkCLeHkhP36dz33N5Nn3h7gQ8LLKNgGGn2AtpLsiEwrfEkpVzZDSdgq9EAF5rauYHNTTD5S\', \'ids\': \'240\'}\nWriting record for Matt O\'Leary\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqBoMYrbXKtmgpk7obJ2XQKWimtoC3b1ps971CNdmyC4p\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,5m4sbps0avaV6Ywy+Mxiwa2470hAVF/E7eg5H1qfaOg=,5xwnkTMnJTvLadyiFXUsZCoF2Y2Z4bLawai8oFKki6KuCWRi8dqJB2XYkL7y9HNwNUYyNwMEoWKekBp8P5q8XcmA\', \'ids\': \'241\'}\nWriting record for Tim O\'Reilly\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave25STMXr7wxbrHEo7sshTmPhpWwyvamWMKSdHm2iF97WsJ for Tim O\'Reilly\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave25STMXr7wxbrHEo7sshTmPhpWwyvamWMKSdHm2iF97WsJ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XPHsic3h7lMx6d8cjqqGIQ+3yYrl+B1wmNs0Nfrt/TI=,63NBR7cUC1YEN8TAoxdsDFyDx3L6JKrxg37uzLgfN669o7HHE4eyHSeTd7wYxagC3m6x62ENDC7xo95BeAStgQzs\', \'ids\': \'242\'}\nWriting record for James Cooper\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqxCD65SCe1V2QnuNNdm2LC9dBETrfJw2B79Mtj81Cb9D for James Cooper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqxCD65SCe1V2QnuNNdm2LC9dBETrfJw2B79Mtj81Cb9D\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3zP2gHX+txumGP4Ksd21UlNOW6VTVKCuDEh5AxoiazA=,2Vv2VY8pzt97XSNwebUUojgwPD5YbZmEGSMaQcZhd4tCFajfoqWwa38McfwKuyM73KwY31z9CFZ9ibDv1jjAL8k3\', \'ids\': \'243\'}\nWriting record for Joel Leeman\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexNGiAo8PfCYJn6CsRebVknCMgimjZRSWuntqbs2y8m7k for Joel Leeman\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNGiAo8PfCYJn6CsRebVknCMgimjZRSWuntqbs2y8m7k\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,/cTX8ELq7RqR9A2DsXKQ2blrz8B4WOnq8o1ZchvGdTY=,3MbrJdkCqKVZRZrsq9PqyvXC2zq9AWueVWNCeLHcgCfecXjF1bVg2SwVvUQvN86ktfFGCBXAgrxQ37SUAQ4BdVHH\', \'ids\': \'244\'}\nWriting record for Scott Smith\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavevHPpKT5CBM5pCtUAwHqh4E8KvyA4ccynfypkM68Cy7hb for Scott Smith\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavevHPpKT5CBM5pCtUAwHqh4E8KvyA4ccynfypkM68Cy7hb\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ZECyTUjZWuZOjlEf6l0pxG707hKKZwyx37Risx+RJAI=,3QotEdSeiBoKVEXgmQyo1aPRB2PU5eRUWo7956S8TYgvsHYqRKpH2GER46sMecSyTgyq7jyTrNG61mZTX8VVBW74\', \'ids\': \'245\'}\nWriting record for iDanScott\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave221jAcb6vUZe94jZTMfD3hMJDJ96uUDnXz9j75pidfNuN for iDanScott\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave221jAcb6vUZe94jZTMfD3hMJDJ96uUDnXz9j75pidfNuN\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Z/6YkVX2O1ARrD4RDOdjZW8agkLJVzMki/c2IE6d/9o=,4VYzGmcY2K2G1c27MkDdsTZ2QZ1JbQaxPKfuwFzamzdH2qAb3sKaHJ1AXHshf9tRVfbdVZnH9DRfbV1X2UyF5ELX\', \'ids\': \'246\'}\nWriting record for Josh\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2A7P85zScCTD4fAwL8iH7qktH5TjQYPtd4ZrDfbkFZtR5 for Josh\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2A7P85zScCTD4fAwL8iH7qktH5TjQYPtd4ZrDfbkFZtR5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6JQfJOoI6Mm693XPiZrhncedPbIp0XAU9xlVpYa/4RY=,2mUhzGdHCWDV5WTrnZVVuQBPXgbJJ5BZP2R4pRFD4hnGikZyF1gfTj7ThbfXWc6ecJTKUX2WHcJzzXojuaU46E5m\', \'ids\': \'247\'}\nWriting record for paulson\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaverL9dAr8JYY3o24AN8Nw2zFXC6xxVGnVjJzuWRHop8ZLF for paulson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaverL9dAr8JYY3o24AN8Nw2zFXC6xxVGnVjJzuWRHop8ZLF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,9GyR3Z5ffq0Q5Fu4tZivnOHqsN3gA3vKAkAduaevzq8=,56QAzL2szW3jnxqeVGbr84G15HLpmYddGerbznNGNxLsa6ffU2SKEFAHA2H4LeNEF6NDEDGtSA364A7TFrkHTsXC\', \'ids\': \'248\'}\nWriting record for Christopher Wolf Nordlinger\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexJqJhZ5xrybA6hZ9GSPFzSKyzJFXSpJjE1TmmfBibQCz for Christopher Wolf Nordlinger\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexJqJhZ5xrybA6hZ9GSPFzSKyzJFXSpJjE1TmmfBibQCz\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,nsA4WmvVNuZB4rZa2PK51cmSgXEqYZVTYHr8DTkOaq0=,4U56BCoJDWePtNLPk86qugea6oHpEWKGw9Gjp3jNzx4utZngE1ojo2cKstn1HXwAGquqGYPs7s8gBcXSt4TFJGNe\', \'ids\': \'249\'}\nWriting record for Louis Rosenfeld\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavephpFaJQEVXe495aViS2xgGoEREA6BATyCTeTauaQW4CL for Louis Rosenfeld\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavephpFaJQEVXe495aViS2xgGoEREA6BATyCTeTauaQW4CL\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,e5YB655y9QJ4DdG+kIXa8r2aOWycb3HwqMsJqwDcdSE=,4pPXovTuY64Z2yRwjeQzSMs5A5v4RFQGj2wkyTnb2AnjNHcb9hY7R5HyxQEkRibazGEBwJyuD4q9RNHmTDwrukh4\', \'ids\': \'250\'}\nWriting record for Matt Harvey\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavegeWkSkgzonRG39z2U1tzvYdUWCusxA3mSWV1nuXq5Kxu for Matt Harvey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegeWkSkgzonRG39z2U1tzvYdUWCusxA3mSWV1nuXq5Kxu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,OXQ7GLuDbVUpG02dp/S9WI3gyd1Vj97nhB2kIPkuICs=,3e56YYsrsmY43tWjJr9B9hmNyhSDju2P3vLZJdwpEnxydZCg1Em6dTYENTEfDhcpB9j2qTgiEABy4GPJTGcjPvq5\', \'ids\': \'251\'}\nWriting record for Vivek Yadav\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveuVv4YmEidAwpsJFbzV1ctj7ng3E8nZWaUwU129jmrnpp for Vivek Yadav\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveuVv4YmEidAwpsJFbzV1ctj7ng3E8nZWaUwU129jmrnpp\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,I/KTjDCkGc7pTnHZaMSv9TLuLHpxDP67w1FtzaEwfVE=,378T55KYthUcR5W4hcx4DxmyWKTMMGdcd4e2iGVkqy1Gud3tdybR4Aqh6KmhjKPayNiwPBdZf6VDU7SPsYWtgoQv\', \'ids\': \'252\'}\nWriting record for Carlos Beltran\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavezek5AzGLAGxqL45VnPtvAAUDZtMMVRfokYHdEaQXVkXh for Carlos Beltran\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezek5AzGLAGxqL45VnPtvAAUDZtMMVRfokYHdEaQXVkXh\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,23sHTMuRQmg2NA6KWCoZJnDrV+ZmXF5hIq2wjnniI0w=,3gbh9nK5sG7FmFxbdGQnpKLSiAQUK6oRJ96ahMmSmyZAKujNhdUgdC9WbKCAHHzday1V63fd5dViwcx34KiqSe2P\', \'ids\': \'253\'}\nWriting record for Matt Harvey\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegeWkSkgzonRG39z2U1tzvYdUWCusxA3mSWV1nuXq5Kxu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,d55mWR26joyzTH9Whgadji+9XVpOCSWMQllerDcaVpE=,pbfjqAm6vUJwPeaSWtZqCdYs17DGJtnPupGkAnwRodNjdXPpfGEM35vm7RFLtpW8DDYLJ5krCAfV1qTsQFZVGmM\', \'ids\': \'254\'}\nWriting record for Oxford University\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave28aw7u5ot8vZF55XdsKyF7MugRfau5twbeyiiMQ6KHtXy for Oxford University\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave28aw7u5ot8vZF55XdsKyF7MugRfau5twbeyiiMQ6KHtXy\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,4hZuYVkPlVhkRA6XTnkVUlTzumfE3Y+SgtPS7VBNAwQ=,44hs8hqsEznZ3cXZ2jseaSXfYBuUgZ55ZoruJ44fdehttuzyTCixB4n4fFu6XVaKsZAxtt4Y5k5wWDaW8z1ui8Mc\', \'ids\': \'255\'}\nWriting record for Maciej Lipiec\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewZ8gzMnajEiXo31RvpcPgH6uZCX9RCha5cXqRAXtnNbZ for Maciej Lipiec\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewZ8gzMnajEiXo31RvpcPgH6uZCX9RCha5cXqRAXtnNbZ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rl357x6UybRtmE8JQ/QLc6RdhhnXAxCrNAoRjemlvsI=,45FbEXDjDTUfe1rENZ2FQEjvc3Y4JXNzXuvx9BZwpHqVZYAwrfGpFujdSSDjuskq2VqMGLZZ6yg2bgkxTxiS4pcP\', \'ids\': \'256\'}\nWriting record for Camron Godbout\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave23vzTG37CTDnoA95yqxn7xCgBPxk2omnVzna8RtHQvwoc for Camron Godbout\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23vzTG37CTDnoA95yqxn7xCgBPxk2omnVzna8RtHQvwoc\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,w7bRuG9CzkiRd49CHpxXXnULy6yqG1aS16ywnuik/ow=,4VqzzA42vy71DiMcHtiNWNNfrYmyC9HbDRfX5ydaYzxoX8aKhPcciHpKzCXRLiKPFwvUqEAnYLE8jHyJieyXBFJ9\', \'ids\': \'257\'}\nWriting record for Dominik Felix\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavepKCBnsSWCkeT56Kmbh7uozwLc1PrNiro6FMiy75e8i1Z for Dominik Felix\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepKCBnsSWCkeT56Kmbh7uozwLc1PrNiro6FMiy75e8i1Z\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,pAco/hpKYz9vFynZOseRZyWXkwJSs7EwKDyyAYI3iK0=,41bUaL67krERuhNZo6aZQ3c9hD3ZZs6rjvHMuTLZFCXRttgssWvwEYd6MwDJxDQqBeP7mf1H1UX9m75tWdJxJ7gc\', \'ids\': \'258\'}\nWriting record for Greg Gascon\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavekBhRer8cCaY8XsKxkg2vuVJcx44rDBrzVv9bvPAVz3u7 for Greg Gascon\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavekBhRer8cCaY8XsKxkg2vuVJcx44rDBrzVv9bvPAVz3u7\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,frN1VasDtNzPATCRvq5dRtApBb/eDgxbyDom5v4IXwk=,n2cdb3gwCZNjxQdU4MXQyUKKykecpGzuus929Ls2Q1weWxEsjcmDaHs1rTG17PmSvjeV64YhXEA5C2D1UUE2xWd\', \'ids\': \'259\'}\nWriting record for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HjJ7cJcpO+cw8a5Hl7M33LN6oU1jcLcpLxpJZkdNW2c=,3B96SRJEqkYKpruzvwpVuTiUKjwu3cdGYBY5qfJyZ4f4WbmriMiXr2Bg1e3cHvLJzCg6LZfZtJm2D9z1FSsoUL8i\', \'ids\': \'260\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,briujeSMWo8jejpOCita/AOAfu0oaqF5KlTj1+OvMdw=,4jTHBMheGwMb7pCW8fYgKZNEXfVjzf6Fhg74QvzYykpVgdw2fGnscQEUZeBAvoZRBxLZBy4cVK2rUCoY8BEatJGM\', \'ids\': \'261\'}\nWriting record for Tyler Elliot Bettilyon\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveq2yJtqYPE6afHfBkXUxVssB91ZwGuevU6iERvnimvZiT\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3htiKGYVVNQGYxSK6CWTyN5kEI1e3HE/k24sGDqEjXk=,32KpEjBnUnDrBaGvPYoNLvRo1afchUy51oX2ZsSrwRPXnqzDYLFWB3hX1nFQSRS8KNsrmNJ6vzjBdpPFPqUe2XeP\', \'ids\': \'262\'}\nWriting record for Arvind N\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavequm9hcVc4VVnZ7ic9mB9TwepoxNYodXw4FxbdoGhex2m\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,EL3f/dIkDnwsAtyNxKuQ/zNEM7SqdZNHeKBPyY80/44=,4DDCwJXo8ugeFjMCFqNHPzCiVYNPFZcc3TtutRkoNcpiqtp7awhPLukTW6Wnr4p5oGhtyCcTLpLGxMdfEv3wfEXW\', \'ids\': \'263\'}\nWriting record for Berit Anderson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22ETeUTydGzGLLsdW3dp3qZ4nbz5HvLwePwpD3YUPJiJD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,+KGqn3KGAKSu4AodaKa2sbZcrIknnE6KAMIYeDOsd6A=,5n3NVRYZtNtegJ5H1CKUZscNC2oLGsA7rvrXGua7DH23zrsDWBLJxCXQ3FRw9nnNnWGaA58YUf6ssEwSFPQwwBXY\', \'ids\': \'264\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,VDz++jcaSSzXBzGRiyuqXyvkxcJoMkEwRdLocMY3+Pw=,4NGJMtbNResJcHAqmm5d5gJrHMzTfPfXjoQpCJiEAUnmxCaXn2j4gccPUL5yiHSS2PTsY93y9zCdTqERKWsTL19d\', \'ids\': \'265\'}\nWriting record for Keval Patel\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave23QAoH6JpT2HZNVbjoAtYdgH45yvLDFuqjpAxJJdgKDkC for Keval Patel\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23QAoH6JpT2HZNVbjoAtYdgH45yvLDFuqjpAxJJdgKDkC\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XqJfzQZMpt8r4AxesT/h4SJpr8rKT70WmPZ0coUA+ME=,4zoLkchjFE6v7sMQ4ywXZJUsVWtd1tNJ559nRRLq24iFR24rUiroyAuJShN7F3H6bBVRkNjf8fUvers7bbFCGP3o\', \'ids\': \'266\'}\nWriting record for Eduard Tyantov\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave23hgHebZtEpJN7QrRjmTa6fKBBQzdi73HdZ6HyvCgS4j5 for Eduard Tyantov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave23hgHebZtEpJN7QrRjmTa6fKBBQzdi73HdZ6HyvCgS4j5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,XFxKnKl4wL7td8uB9cHVh/Vhi1kCFixM41fAjt7BL3M=,2csTqCiXrKwtTRimF6NxmsAMyLzeDC2PMoPGN5QsgHW23ixeMRKeqWfCzkQMVZrEqwV4vX4dQVcybQasctjintSW\', \'ids\': \'267\'}\nWriting record for Maruti Techlabs\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22gMBu6v5nmXdHx7i9VTHu1ouGmTkwobmhQpJFnXKSzRP for Maruti Techlabs\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22gMBu6v5nmXdHx7i9VTHu1ouGmTkwobmhQpJFnXKSzRP\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Rwts77MaagmS31gYXK0SAUHYEHevEn2ECkkVOJstZUM=,2c63fzyxuAnhwaea5kDdS64dPyCTtuY88NQbKfoJWGePgMDUG3xDf2xG6etNQsF9Aw4PzWosoPBjLytuaoge9Ry6\', \'ids\': \'268\'}\nWriting record for Jerry Chen\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave26KKNhGwp5q86UZnmAip7uj7Krtox4qpX5znnf51eLsPj for Jerry Chen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26KKNhGwp5q86UZnmAip7uj7Krtox4qpX5znnf51eLsPj\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Hk6Seyn0yiwRdZSrKxvCTGf944CtdUvUSn/aXMSO6W0=,p4Ub1voMCepnZLiG6iSLB64muz4FPFrNGzsL8XVAokwi3Kig4Mg7kutXrDkCp9BTo2rhvMF6uCEYW6EToUbr1Sw\', \'ids\': \'269\'}\nWriting record for Sarthak Jain\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,IF9z84a0nW40Bfts7sN4KGu9gLjvSmozVHqlJqJ0nDk=,3HrbtRXDdbYTzV9cwgKUUsGD3zMYhst7mKjdxjVxrKLKgZeSar9AhVBup3bftFtcWzZ3pFH16jUQphVqsnc4ayS9\', \'ids\': \'270\'}\nWriting record for Gaurav Oberoi\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BrmzbsdKuygoBfQKJPyuLaxMhersmKyFnDbgMfWyiAJw for Gaurav Oberoi\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BrmzbsdKuygoBfQKJPyuLaxMhersmKyFnDbgMfWyiAJw\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,bfmEBhpcWB5e25riOMpTvbvJeXqHpRdJ43lX0bzqvP8=,29JQiee4eAtnDssFwA8v1qF8rJfJVQ4r2wLgpyVEQCefJwo4f7eR1wdP1LK95Wv5TH7SHSmJjAh4uZ9G9Luh9D2e\', \'ids\': \'271\'}\nWriting record for Nick Bourdakos\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveh7cJf8xyhtCwQXuQntwb98cCTkiQ5QLZmR1AihoQ99gr for Nick Bourdakos\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveh7cJf8xyhtCwQXuQntwb98cCTkiQ5QLZmR1AihoQ99gr\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rtMlni0kumVdaaC5+P51JZOEeLUXLpzLpnvoiACZi2g=,2yh2mp78Uku2x4Hi8ixXp6GDhZ7n7yXdZhDEc3PnDMM473xh2UwSbCaYdGVJwKRG8uZkCxsfkfu6LWFrBCYKGwyc\', \'ids\': \'272\'}\nWriting record for Mark Johnson\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavedtja9GB8E7yByEtHSd9Z1XpTPmMfLfDuipzFHPzC9keD for Mark Johnson\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedtja9GB8E7yByEtHSd9Z1XpTPmMfLfDuipzFHPzC9keD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,uFjn4fCrHFL4vVKXFwxTSOHTpM4QV/zq7OADdpIdLXU=,5ExEWFbacVbwxwj7LVDVXoRAah4WSFfMWazqC28cKBfoV9YAb6F7qEj2eHi7LXzgjXgvqRnrqxnuFwhmiJoZy7Np\', \'ids\': \'273\'}\nWriting record for Justin Lee\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,BJtnA1lhlod5exN5yOHQe3hqdWTBCRtPMXgOq4RhU4k=,cNxDgUtnYEoynxh9YdC4PhibvPRvkZm91Pjo4bZ1BxPMVK2DAPhiDjDTbow8erwZeAgzcLcBkGaeDKezF4hgibN\', \'ids\': \'274\'}\nWriting record for Leigh Alexander\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavetY4ALxM2HAqTqrkJXszgCmv9BLD2BgKPfvPHYiVdxo1N for Leigh Alexander\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavetY4ALxM2HAqTqrkJXszgCmv9BLD2BgKPfvPHYiVdxo1N\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HCROTeFh/HGXilyjFCgal6eHxnGwdqwWhjeY4fF/nUk=,62P6FB2jBd6ewyfWxULRAzN9ZAMnhuoq7H8KqydDBbR6WUGvn2kDCjQPyqHErUpkjiFKrxPBbRgveTN2FzH2X8YD\', \'ids\': \'275\'}\nWriting record for Daniel Simmons\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveyTJyuUJw7VW71peNmXiN8zzgP4NgzCuXdQbfe2d8NL33 for Daniel Simmons\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyTJyuUJw7VW71peNmXiN8zzgP4NgzCuXdQbfe2d8NL33\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,X9NPUwBGUVK2RKFPzOwQrOG/wT6YN8ymz38kDMA2xcQ=,4Y6Bcsrp8Z3edm4HDDrdx7jTSKJdGfGbJAodKdN7RWV9DVuEbAknZ3opu79AzCmpUinz9Wk45gnper4yixSc8nxW\', \'ids\': \'276\'}\nWriting record for Logan Spears\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BgNHvVH1mgqUyrWE8pcMvHjkEnhqLoNZWjojhs8NK4XW for Logan Spears\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BgNHvVH1mgqUyrWE8pcMvHjkEnhqLoNZWjojhs8NK4XW\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,75fXfQDiqaaQg0YQsjQuz5/NV7PS5CK7TEBhDHzrw9w=,65C5sHusH6m9mEooyJAvQAr13oqiBBWsb4KaJZMPc6GNY4qjZuK7qAnbmxxoMwD44hmGZopomtXmnHUcM4pe9iCP\', \'ids\': \'277\'}\nWriting record for James Le\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveksdiyEuknX381n4PU68M5MeGpLAWRWLGkGSawiz7Hf5Y\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,4l6MQCzyx7gzweBu6pZY359ro9D+Sx8+KDAal0pJsRM=,44hyMm9x2q9YfbjoCGKz3ZsnFikcGKvbgx7ZQ7URrJRaU1emJ6geADZWVpxgiEr2a2DEZF7p5cZ5xWjuWPRQMmrt\', \'ids\': \'278\'}\nWriting record for Sarthak Jain\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,UlzFRhCTBHFTYojXmafml7wHSpfhXQIba9uWJlthy0A=,613AmQNKAfos3UaJAqMgdBYUnGSrCpyKUWxQKmeURA9S4tv2kS3Lj9WzCZxCy3JtsoNRDHiYBmvdDXjkj97xMw9\', \'ids\': \'279\'}\nWriting record for Bharath Raj\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavenJdSgqcpeLqWJwMroo213xtxjGcmGW9mVJRgP2riA6pA for Bharath Raj\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavenJdSgqcpeLqWJwMroo213xtxjGcmGW9mVJRgP2riA6pA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,5eSY1NbxMwfK7TQuWyIap+2JKO2VL9f8ctnnvB3w7fI=,5U63aE19cY8W9R9D1YwMtw73MnhxjeR3rsiXJNaJXMDsF7hErYSC1hpE1xKo1NKV6EHGM8BmuPgviwg11D2PoEmJ\', \'ids\': \'280\'}\nWriting record for Daniel Rothmann\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefSrjk2u7WYwuJG47D9VE8uDmB3R6m5Xh5gKb2pTyp24K for Daniel Rothmann\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefSrjk2u7WYwuJG47D9VE8uDmB3R6m5Xh5gKb2pTyp24K\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,x//v2evpb2sQ+ljePiLSy3O5Vqv697yGeLnkgeu9TZw=,4Gp32CJEetvGLUQKVuyqgmKtGm6Dp5czRdeewMdSbeUbft96aCzLgmCypH7EtfWgpKEothVgZvmKc5BUjjdZv3Le\', \'ids\': \'281\'}\nWriting record for Amine Aoullay\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveqxVnyaMvM8RzRA7z8SUrUCh82bWyq2tS5uGfZNjMv6eF for Amine Aoullay\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqxVnyaMvM8RzRA7z8SUrUCh82bWyq2tS5uGfZNjMv6eF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,s8k/9p8IY3cfr+EdIkrEOuPMRwka5nPx9/2ugdTHbjM=,22RpnMXp1YvjMmZKm4Rohf7pMLG86M3jbWW4k3LRUauszPK6qSD4H7aooWfxdULZ5cKoTUEAGjzsg3VjdCrpHYbe\', \'ids\': \'282\'}\nWriting record for Jonathan Balaban\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefTfneyuQW4WThhCoyfij5tYT2dKNmHdrMS2srzXF235W for Jonathan Balaban\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefTfneyuQW4WThhCoyfij5tYT2dKNmHdrMS2srzXF235W\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,65nVKDzlIj9UUKU7ucBKR4nDdtwi9k1P12Grco1/GBI=,5fpSzRw2pkKZd2zvRDKghYngwxaxHkvZLJE95N4bLKpjJUwFHYTq5hYqFtr3RARh4H4PiQ39ssp4c4tdcUtu37io\', \'ids\': \'283\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3qEaxYOVYMs7CmUeUlPLVx7FJ9uLNred2tryrmQ7tLk=,3TPBKH7XTTcYbanDgbgPKD4bBaFy6Tx5G7taMcXrQWXLC2N29awon1HS5C5XWp2YFTXeVbpEhhVozEyrciQbWdAm\', \'ids\': \'284\'}\nWriting record for SAGAR SHARMA\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewbSSSk1NcutDfEk6gF23UNzpfE5brPDio2T4Y6zXn4ae for SAGAR SHARMA\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewbSSSk1NcutDfEk6gF23UNzpfE5brPDio2T4Y6zXn4ae\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,EVCWFiQY2QPaFv1phZuirSxrxkONLISv45oIMBX5LZ8=,3LSi531JQP7tbMDvYGeZksNVxUemYgZ9oBriUezawMYqfnKhPygwhyEegVN8A63SzE6FFgya59ARdjZjfH2eZFKD\', \'ids\': \'285\'}\nWriting record for Jae Duk Seo\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavezfxNzJS9Mrvbr1p8B87sm37fLLVuw2VC1Qu5xDFRi5dS for Jae Duk Seo\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezfxNzJS9Mrvbr1p8B87sm37fLLVuw2VC1Qu5xDFRi5dS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,3lDyN3qQG4JPufBnL9atueICdYOzNE2xyRY7cAOtPp0=,2LkRhTNWU1i1XnwsyZSHYwbS16sVS4mixULtT9cTBC9sqy3WHvVk4af79xeEr5yfZL8oUu8KiN8dP5L5tQUs2iNX\', \'ids\': \'286\'}\nWriting record for Jae Duk Seo\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezfxNzJS9Mrvbr1p8B87sm37fLLVuw2VC1Qu5xDFRi5dS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QJW4hl2wlQR3VF+TcfNf558kfqNQKh86RPj3Mkdqp8w=,62dUQuqjDNpN3SD3MCugtXjHamkfGQ4ZubcLCWrTRQ2jGLsQQXcQzpKgNrV8odXQdFiLncBiH1sLKgd8ojV68PM1\', \'ids\': \'287\'}\nWriting record for Wallarm\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexzqFZ1JPiicdsCxZEFMpuCELYuEU4Zeyjawhqf131xCr for Wallarm\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexzqFZ1JPiicdsCxZEFMpuCELYuEU4Zeyjawhqf131xCr\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,E42Opg+PzL1XUVvojRkiChZf4i7eZ/6rPnCu9XzQPPY=,5bHsupEYp3yppBfTev5jGr9ZsDVpZJKJjqdNFAEyaTtbGH1YYpVSTwUCRyYeJvdjSxDprUwrRL8ED8hh3rjT1RoV\', \'ids\': \'288\'}\nWriting record for Maryna Hlaiboroda\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavegNYLwsycxi6WTu9nedLPLvda4JZ8Ng9G6VLQCTtLCH7E for Maryna Hlaiboroda\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegNYLwsycxi6WTu9nedLPLvda4JZ8Ng9G6VLQCTtLCH7E\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6X7Gg92SePTJWdncMROjwCzkY69hjXL8RJ47bZ8zEIE=,5QNh7eXGqGBTih9XDmjeUgD5sEQGAmtUU8Ud7CvisSwcTUh9w457xJ8BHeSZwMz3M9EHJqMs3cY3DLKvB5F8AbpA\', \'ids\': \'289\'}\nWriting record for Amine Aoullay\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveqxVnyaMvM8RzRA7z8SUrUCh82bWyq2tS5uGfZNjMv6eF\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HuizlR57rUEKPi93F/PsT2wX5OYrdY+/+4Ney+srym0=,3BZzpQXHBo7q9XEhrzY3Vc8ELg47ZNsjbnDYsRpNdqjNZMyRg2XzwDpij7sGwzid4CFkpXXpnmayv2fq4jX6gc5B\', \'ids\': \'290\'}\nWriting record for Kelvin Li\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaverL1Dvi1iSDqHEF3C3NUUhcZuEe4SZeeL9p215k5FeFWG for Kelvin Li\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaverL1Dvi1iSDqHEF3C3NUUhcZuEe4SZeeL9p215k5FeFWG\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,ugN9xO0qQxHUlV/KnBWxpQcE/foHM2a0TL5DbLOisZU=,5oXa3a766Vk4AYnPHRXTYEG789BaAXPiZd3gtYzWXVxNgCBTvSahTUYqKAMsLpweUxLY6Ws8JjQmKrAiKa7p9Fbk\', \'ids\': \'291\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,qoa34RNUbmzmW1uOMLF/XfNmQUSZ6FGGdbhqQJN8bZY=,XaE6zpuceGiCW6523GxFC1adZUcAgBcGsjpbuEVRiVSYhUfCGujxC8k1SKHEM6ztUGoq4qgSF36JUAyjxS2YTPZ\', \'ids\': \'292\'}\nWriting record for Stefan Kojouharov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,VD1n4eK13LYx/FTdSnyRaqfiKr3SfMhIVGVpHDtsnrs=,4uM1mMTMN9j2hKpfZP3wxVkwGXDShRaQzF1kAjtkEsPg2woEHJUW8P5CXB7ijEx3vdRHt7fZAgCmXvuLsuritKQf\', \'ids\': \'293\'}\nWriting record for Andrej Karpathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,rq6edg3hrQIOuvFepjZoneYcKbFaJAQ/uJEPkXUvK9M=,3VKY5abiKMWu1XvYJQkLqkaVt712aYy6A5GJ14VqnEtfEMb6U7PeezZUPLpXyqMuCm2pgC3UP63ovHXnk2HNn7Tv\', \'ids\': \'294\'}\nWriting record for Avinash Sharma V\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveu3JP7nHmL6cPHG7m9qGw2UJWkrAjzLmN993ifHBnEsbk for Avinash Sharma V\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveu3JP7nHmL6cPHG7m9qGw2UJWkrAjzLmN993ifHBnEsbk\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,d586oRlxgsMxZHHtoNgQslm8QvH06EljQ0d+5/cHyQ0=,5e27sjAjEV75yuuFTEjF4atmSKxuzZoC7cQApEFevKa4VCUNULAtKxket9J2kYdMtjWKYFXACT8nfVXRej91N6mQ\', \'ids\': \'295\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,HhgWeJLChL2vsezl3EokXMny+ZjevQAAOM5q31nSvzM=,66XgxH6K31AHwbjLBE7BjNXYdVYxuP1q2otm3HLb1mqYVuxCVDNjKQ9PPzSdZchnJMhb89jsL1meHo5z1xbMQ7do\', \'ids\': \'296\'}\nWriting record for Elle O\'Brien\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavexU4p6bM3jr14JhFSg9x5zLGBaSyTpjEKNZhBNTy8xNVQ for Elle O\'Brien\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexU4p6bM3jr14JhFSg9x5zLGBaSyTpjEKNZhBNTy8xNVQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Wot1n1UIrKXk5T8ZxCs0O3WuSpN7+LGHuvyMlyhPgew=,2mfLgyLST23bd5ApWvJiScqfnk5pGnL1HXWpc1Fdt8yXuCiptmvoKpi1vi1DUe8pH65UT2Wp4LDiQQ9CxzWzHnN7\', \'ids\': \'297\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,7LzITJ/iv1pAZgxAS1xidx2CmSzHrrgFYQoOvC1sfxM=,3TJAXLRcMpMeXfRAeCvJZh5JmV6Lb9R5AYLhC489UKgUDVpBmsH3WRdpSQN8m7i4LmnJF4NxftS4sH7KKPkzkQvc\', \'ids\': \'298\'}\nWriting record for Datafiniti\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavecbRsqUaiG8rA68QP4aC4Wb62xC3gk8w1KdpAtWqQuyTK\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,lbhPF/5KspYYipKuiGNjEVRgjNhSJCS5CPNjQ25x0Zg=,CZsGUvNDMGqJhp2Kb3GnkqshyoecVUx6tWnxqqgvKE7X61BRmEdunypGw8u4MEzXYqbZpNmsTk9QLxhZ1W5dLs9\', \'ids\': \'299\'}\nWriting record for Yingjie Miao \n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavegbF6z3K5Yu6245Tm64QWDXwEakDgWV8E8BUJ1SH5nXEt\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,O+Yx+Azj3L12LYwZBr4bCoIY0m3XjyqeQbiclfNBe4Q=,24dKp3zJUZRUA1dPbRvGetZPA6bSUPNRXRZRFcxt9NNqf5v12EoZqKEqPYqEeBc3uoPhZuDCWejkk24QdpAQL9Pi\', \'ids\': \'300\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,LetCFy15YzS2Wh1pymj4DIpnufKlzbKHEdT8Ks62WRs=,2wae83WRBVY7hkYyctBmnPVi4moePcP4xHAhJBuPKmk8C3DtbCjamomM3LmW1eFbtc7ij3Z9kP3uWcZdoJ3zJNdt\', \'ids\': \'301\'}\nWriting record for Josh\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2A7P85zScCTD4fAwL8iH7qktH5TjQYPtd4ZrDfbkFZtR5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,669Y2mprNoxdmMve+lE/2BV60Yd7nRjPr/J/OnhITbc=,2bhaCLb187CKcTGvozsZEZVFAiKWDYKJ7XtCrsrDh6VYBmGKrMzRLSujNFRgNJDX8CfSJgC61Gq9cZjugJXTM7Du\', \'ids\': \'302\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,g8dnTb1gtdUQyqxj9U/OtZS0PnM6cBvr8h8w8hK5+AY=,2Fipky3DE9cY95YJHPCc27A4np53jRH2DXgb7ckXhQ6PuKHX4hDrrZ86sKqxMdjwnfHprVBdYzioS9jGnpu1MsPg\', \'ids\': \'303\'}\nWriting record for Karl N.\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavedt58mukKQoqVnQaU8SYLXckyg4oFSscC6aXeNQ4bPtXx for Karl N.\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedt58mukKQoqVnQaU8SYLXckyg4oFSscC6aXeNQ4bPtXx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,toN0+Qq4h7H9A6a8Lqm8PxtOJ1R++OOkttKQaVBHmgY=,2DZQsHN4eLMcurFRiqq5c4qEystXMYVyD8PJTQrNssqtiyv7z1nwwonhTaZwfRBQK54KSrME9AeB5Xfg3ZcZcaYB\', \'ids\': \'304\'}\nWriting record for Milo Spencer-Harper\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavemC6X9c5CrsZkU91XLbh2fnfueGrKZc8cfXhzbphSi8uH\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xU0Uo2sJogeljBLwg5bEzc1GvWgF0rgUrqfK2QN5tvs=,5e9LkZAYVkvzHGhfnrt7SyYoWZUcCNWkeNqUxqCFLbr94pFVhXWPZJCz4Ku2VB9ttXd9KvEMQWnDcp4pvBQBkPKd\', \'ids\': \'305\'}\nWriting record for Nikolai Savas\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave22gXPEMzgsELu5qFcUtoAVADwxhgZTqCh9GjrJBoBpj7s for Nikolai Savas\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22gXPEMzgsELu5qFcUtoAVADwxhgZTqCh9GjrJBoBpj7s\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,P63zvcDd64legq4FyhB/9whg91xOsPW36LVj4Zedgjs=,3kTy8PTK2nKzuSet3PzfakMjtG4U9GDYBjRgVwuSo91zgGoZUpQF3zFW7zViFdJrJ37fxaWCzGMLDBu5zP8gZcwC\', \'ids\': \'306\'}\nWriting record for Dr Ben Medlock\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave27HqivHpE7duSBnCoU9LRQEYYCiF2P4E3HMtGP9Wr6f9j for Dr Ben Medlock\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27HqivHpE7duSBnCoU9LRQEYYCiF2P4E3HMtGP9Wr6f9j\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,7zAp9IRsCw4dpsLYV4mnuJlso5K2Q6PLboUUAL60gSc=,yqtw6CfaQatGbGtJek6QJv8PV8fwcPoxenAKPraL6CQnLZAppij1nJfupPoD4UYYrizGXwTgayRrSDWdmCFFYfW\', \'ids\': \'307\'}\nWriting record for Nieves Ábalos\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavet3AavRPNg3bC81P4UH9REDguN5YPJ7evQKLPSJpK3U5M for Nieves Ábalos\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavet3AavRPNg3bC81P4UH9REDguN5YPJ7evQKLPSJpK3U5M\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,2IIgA4Xpty8DzuR9gGTF20JLXtNEEvAx/Qpy1OJN/mc=,Gq7KijRjmKsWygp1z6hJsvGbNkqRqpSE9bimPqcPxCDgecmuEVc1dAuF1c3USp6czHwxQVGKZ6A377iGqCYhMxs\', \'ids\': \'308\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,63x4RXAFwZLhDf1hzLm1BYZV+kioPPaF0NUwlatIt+s=,3m7oCGWghP3XmXcV6YmsLDibUfM79RXrp94DJ3aEe2oQP3KpfirVccpDpYTrjfPSBmRyLRT3ondfXktghARf9FUE\', \'ids\': \'309\'}\nWriting record for Andrej Karpathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2AJvcy86CZgw3hdwnoXahQuVko8VXPMTpm7VwU7Zpoxhx\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6XHTIhDAgPNYZjHDb9zynXHT9yWszlP9v2STck4js3Q=,2fNVcyLsDo4W9iGb5Aw4pXUTMW8NsvJAjFXYkmdqQhjPqFocUrVaWGCki8cbpp4k5g371PaTozbmoMB9H69Df1Tq\', \'ids\': \'310\'}\nWriting record for Arthur Juliani\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavedFL29ooZtwQG1ErgJrRpzigVbZMrLoXA58arW2Tw8YnS\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,fFyRJ2e5y8Ga9GP9x5ZDgWzneWEd1r4oW06xR+FMZJQ=,2t5y4TpAbYbRFUs2XacZHQURpYNXmnPmVefmE44EvNsmSETuuMFUwXYtFmFqX3CUX1BKiBcLoRhdqFcZoRAhR9gx\', \'ids\': \'311\'}\nWriting record for Rohan Kapur\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave27mCtghKmJFa34uGas2A1xf7iGGD1dR9Vg1u4rLK96gYr for Rohan Kapur\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27mCtghKmJFa34uGas2A1xf7iGGD1dR9Vg1u4rLK96gYr\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,FyXQcwt+GS+Zg139K7g4/mG+sy1itvdpHtERCL20o9c=,4X97HKWwQAYXizFbMht1mnxW3HKsyDmzow1BFvTGhXeYFYDhpDoC5eG3uV6oxT2nJVAcjSYddYarJYzFEzYCDYTX\', \'ids\': \'312\'}\nWriting record for Per Harald Borgen\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveq2xt72H3CMNktaFK6Yf4Y6qm1q4bhWXts8QByyz7pCck\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,FBaUC19et2sV3IvgXlhOMhZ1lZP8zchVAtYfapBh9gU=,2yDBqgyaimJKyqfKNWvadTL76dW2MS2FMh7BGfrkZe9N8FG3YHV7TottvfR4kqvR16mHn7v8yDvGeaGvXqjyQPGo\', \'ids\': \'313\'}\nWriting record for Shi Yan\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavejKtyA2eNWLbR8asv3KdrqS8CF7C64Voytf4JNpyFZGaj for Shi Yan\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavejKtyA2eNWLbR8asv3KdrqS8CF7C64Voytf4JNpyFZGaj\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,NPajege/pAbOYsR1LwY2lfr2mb96yKJDuxpaeBUzmp8=,5FZ8WapyDmBTDvE7LxMy7JhqLcavnJpuXyqLAHRzED7TdJ6aPMs2pywp8yGeryK1gZoL9oJVsXsy5XBGSQcATwar\', \'ids\': \'314\'}\nWriting record for Ross Goodwin\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavehiAh1QgrLubTRUUy8PjKVeeTY4aWF98RjtX2YeKhqfiD for Ross Goodwin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavehiAh1QgrLubTRUUy8PjKVeeTY4aWF98RjtX2YeKhqfiD\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,wm8kzKQO1RByp3grEYx4kIyr3kUm0J94F2YEijJhY38=,4KdHABip2Fe7sUup3jrNxcC6MLrJYN989ayE3hRGjAAtQKfxbtCYcY4T3o4LRDC6sLJVTZcFmLE6NLibEdF5agNW\', \'ids\': \'315\'}\nWriting record for Eric Elliott\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavezu9fSEE8oipgopXME8hSR6YcCA5mqoAVebxRVm7GFrBk for Eric Elliott\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavezu9fSEE8oipgopXME8hSR6YcCA5mqoAVebxRVm7GFrBk\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,OU5DJwSRa86OmyioQKQzI9yd+h7xSnin1qN58nKKifM=,b4unEz21EkjU94NEhfVZ5x6Q7iRSN88xV9HzwsbMTfyQazEUKcDUHEzfUEncamfZAhoQ3X1zbErJcCT3F2ncAnn\', \'ids\': \'316\'}\nWriting record for Dhruv Parthasarathy\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaven4oGoFxRccnvaCzqY7RQhuZdhSs1ZA9By3fFft2QGvzu\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,eoSs4NDiKaoAnEmqynvu7BkNZkRiyhi8PRJFjQXnBoI=,55kUFeCHNpAXsDp9FtDbiWoxWboSVf4z13VhLrYaQ9Q3ZuTxR6sSUNnR634jNBKBfgFmhEJMbwzZnw3XVQqZFpLq\', \'ids\': \'317\'}\nWriting record for Waleed Abdulla\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave21k8ypkEmDmwxAPDEQfCYZHNzwWuMN8oBsqMm7ECdDwPt for Waleed Abdulla\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21k8ypkEmDmwxAPDEQfCYZHNzwWuMN8oBsqMm7ECdDwPt\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,QHaAj7622ACUpIKzQvybxw3jbnkYOQ0JC99wEE3KblI=,CzMHVSZoYACCzkoDe9k1KhRhetcSjt3djd7apBFA56YgMqY9RYVXKtYjnJkoorVGuHXh2f6HcyE3L9YQSPfXiaw\', \'ids\': \'318\'}\nWriting record for Stefan Kojouharov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefKjV59wbQoUWdfp2BtH9JdhkeHoAyDgZS7ERk8kWUWyA\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,/x7WPM+D6ow2l4aQCTdgdoZ8TgpUKu+SgrA0JyF+F8k=,61pwsvchR8VeSwhzqyZ2yfCLghQUXZvgrRBPoz9R6kmZzjazWUjSaTSXMpa3uJcJ9r57wDRNjL31UrG69XfJpXUG\', \'ids\': \'319\'}\nWriting record for Avinash Sharma V\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveu3JP7nHmL6cPHG7m9qGw2UJWkrAjzLmN993ifHBnEsbk\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,1iq7W6eW60O+q4a4zn3Yom+RYRr6bXw0rfiQrPdrZjc=,4UpjMtpJ1uDXnRfcWWtmWTBDD4WZtz8i7xLeZssmGzu4ueyUCNHPuDGPL37mLxMgpn5nKrEtN3tzSN2rqV1cStfn\', \'ids\': \'320\'}\nWriting record for Elle O\'Brien\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexU4p6bM3jr14JhFSg9x5zLGBaSyTpjEKNZhBNTy8xNVQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,w1lWIt8uZu/YO6MKk7udWij5dxiJC+X0bP6xwjB7B9k=,ndsedYQhmsnHjU2UdBsjoqAg9SrwkqsBnwEN5HXXLJb7uCdraHTz19FwbxE6wY7JxwFfT5SrtbR83U2jMriqKpb\', \'ids\': \'321\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,pjoqVE4jqdpAzvR0GMK5/SB5UeoDNj/zLecPNMRk9+8=,3SuHJJsbf2Wxk36HdQPK1bKRJ4a2VXEmB364xqTwr11prLgHeZckDmE86QMPBsgGDpsbuZFEMKqfsqPZ7NPrVtZq\', \'ids\': \'322\'}\nWriting record for Slav Ivanov\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave26MivJGH5aepdnznAym38RtysyTBEq9yjUf2wr2TAjwVV\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,E3zDvWLnWcUmsTWMT7V1nO7Axl9TFGxrrLd0My7TSOc=,5eEb9GMCTwfVVz9pFeADdZUbgx5q28KBGfe9ZFo7V4JgrC1ZEkMKfqNC5MeZBYsJRjvpNPY4fB4VrXvSZDaH8G1p\', \'ids\': \'323\'}\nWriting record for gk_\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave21ZndPm4dPjLwfbjfsHsrC9yPBBunx9TwUqJcL9nxca3i for gk_\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave21ZndPm4dPjLwfbjfsHsrC9yPBBunx9TwUqJcL9nxca3i\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Rn23Dh5gOXeygbPFNGB/8ljtXov6AFaTzQYG5WKHmnA=,UWKiPhQCzAJG1kgVhmfVuN2f9Xe44nJB4WeSQXWdGXYoGRqGB85uVdvHzUhBCbrNb14fSMpspaF3iBbdoQ36svo\', \'ids\': \'324\'}\nWriting record for nafrondel\n56f3b1f203e31c31208abb493ebb5d40\nUsing weave2BYv46kfgYy5jJqZpgXXaQCVV3bNmWF4yaZz2Qtq7bhQv for nafrondel\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave2BYv46kfgYy5jJqZpgXXaQCVV3bNmWF4yaZz2Qtq7bhQv\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,JO9zzabP5oEFHk2Zu5Oudrvh1z33RtOlktiyc6+3XcM=,66tLHjuXjwtNAoJXzZe8YsWvuXEKGQ1zfczAN4zEtJAjWF6KEY316kkPVyKQHrpX9QKurNnVt4XGteL4vM2h3CCC\', \'ids\': \'325\'}\nWriting record for Neelabh Pant\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavebnHtY43y4UZXddkL4ExTdMJ4o1N1FZYE6dH9q4aB7JeY for Neelabh Pant\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavebnHtY43y4UZXddkL4ExTdMJ4o1N1FZYE6dH9q4aB7JeY\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,+QchGZpyyTWaAi9zlnKfeyBNqRdzic7njrJpTXqdnXk=,3YQBjtvQLceJrbh5rtpJxi7MU31Wxtpe9ih6ftkurav6NV1GnC4hw4ZFv5B4UuusjcPQuLUBF6bskw2s8swfsdqn\', \'ids\': \'326\'}\nWriting record for Eugenio Culurciello\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,CxBuaZDTs1Dy/cLOURdvasRKyGKJaKkR8oN46sQFACI=,5qf1M7XGYH1uEUWQ7rVAjSLcWK5NoZcpL6cSzZuNYHE9DCC71FXJ7Rqq8vpEKbtUF94qZtiZCnjsE8ZeK868VAA6\', \'ids\': \'327\'}\nWriting record for Gary Marcus\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave27YN1kFxk22HfUb4fW6x7nLkb6UmMWjacJXsdFBAgPLX5\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,Kf9EuusG6Yp4513gymgLtDsUMoU5l87isWrFzlwwNd8=,64eCcMr95oRpiSjVkEP64eovSR2vQwqSoyfn7G2Tm1jY9kigG7SzhSM7mtsUATPQgQQPzSD4dBbBWpuGU6qwWM7m\', \'ids\': \'328\'}\nWriting record for Sarthak Jain\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavexNBJK7CwQhjRGHPf2Mcsd4az5gAH16YJFQ8wCBVkX8Re\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,NcZbNqfw2eL7Cyb67r35aNaMHbGrTW4b2xpSvM7TcvY=,4QKWySjCimVkXEADMCNmeCx9s8QiUMMMB7BEn3vdhBDvBfMdd9fpikjwLAwLqJfaMMXmZP4op3CFrWXeNFpP9kTS\', \'ids\': \'329\'}\nWriting record for Favio Vázquez\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveiB55xBMybfaQj4TYnv2YvAc4Xk4SHhaC3XtmEvcqy12y for Favio Vázquez\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveiB55xBMybfaQj4TYnv2YvAc4Xk4SHhaC3XtmEvcqy12y\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,YKIlMbjhAfoWJk8oPYJsz8pt2Db6t8Fdg0NZvSa9ddw=,3DH4Gb4VuCsXTufYqjp9u6u6HKur7UNkVHxqzNwVTufDJr7CZ3jZLrkxFS74ZspoFwLW32tZhd89FmQdzRG1PueD\', \'ids\': \'330\'}\nWriting record for Oleksandr Savsunenko\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavefVH9dRBw6crs84RwFH2EnU46JK17fTguticMFhh8bKV8 for Oleksandr Savsunenko\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavefVH9dRBw6crs84RwFH2EnU46JK17fTguticMFhh8bKV8\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,tCXNoEpr5Gr7Kq2Q51Hsqli58uP5OfbTkJCqQykqxJE=,3jrDvvdEFPRkaESDvVg8gWUUCMvChWsUchJ88FJQEGg6nu2tDuBG6Fakm3v7QNj5Zq5tQzUhxLCDoSpXyku5mxuV\', \'ids\': \'331\'}\nWriting record for Max Pechyonkin\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weave22pdghXa46iy1DQdJAz92d5Tzx1wS3KneCJyo6fiA7FTQ\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,6y4crl/xt8TzxBDgZKF1MuGAq8MXFFAaCvoJKCFU5cQ=,fxcKhtYUmEUV7a3em39yVKdDt8pi1n3mSkD8J5WovgFuxt8yuHdkeuGwLccn5JDbaAFRSATpidMjaSwyzq1yRRr\', \'ids\': \'332\'}\nWriting record for Daniel Simmons\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveyTJyuUJw7VW71peNmXiN8zzgP4NgzCuXdQbfe2d8NL33\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,sawdNj3J94URCcqlndvwG+SIuIBtr9yfd3wlvnwEgz8=,5U8vuK31r1p7mMQvqEvhYbyYCb3665TZLUyRpw5ehYZ4ZyNhQDZY5NXU3w5LhJmSCB9KGQjHiwRaDqBsDUSqQ3bJ\', \'ids\': \'333\'}\nWriting record for Eugenio Culurciello\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,OWjPq61eHNmP1DSNGAZhP+xW0Jo+HNrXxGlk905217o=,56fHvaDK3eYhsWbCSC5d8hP2QYgSnbGCFeYXuLU6Zo84bDkFL7D9FGvBACCAjTLhu9cdvo6adDEMrGG8FpkATz8t\', \'ids\': \'334\'}\nWriting record for Devin Soni\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavewtrC9kGB8NJm7tKDBY6vVYC2oyyG93Gv39akdSGEpWCi for Devin Soni\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavewtrC9kGB8NJm7tKDBY6vVYC2oyyG93Gv39akdSGEpWCi\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,wFj4vn4J3T1ufS4ZLjaEU1j65SKLxq80SNwh5ex0WFY=,5eapFwYFnJhZhtnFsw9ZZHQ7Mt4J2qfLnPu2bhQ6mwV4k23eWCMmJvnGvAnmW7bQK4TBsqbDiBnhqhTNLYaFbMEx\', \'ids\': \'335\'}\nWriting record for Carlos E. Perez\n56f3b1f203e31c31208abb493ebb5d40\nUsing weaveySdqTVS2dqjxAozJZo3sLAEjNu3EAWq41Fq9HwndqTra for Carlos E. Perez\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weaveySdqTVS2dqjxAozJZo3sLAEjNu3EAWq41Fq9HwndqTra\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,++G3QgfD+IuuXo7ckmVrbaCK/afNVbJr2UiEePtMXtM=,2dmR14zyQrpXGZjQimUE4Ps7zLQLyVG6UqFfhnheHRcJwxDrT678eAnNWrwdXHEJLQERq79y2j6VvN6oqMPcrNZz\', \'ids\': \'336\'}\nWriting record for Nityesh Agarwal\n56f3b1f203e31c31208abb493ebb5d40\nUsing weavee2pD9gD5q3ZXFxJL6TDA6q6jXj6c5Tf4HnB39FMmxgps for Nityesh Agarwal\n{\'res\': \'ok\', \'target\': {\'operationType\': \'WRITE\', \'organization\': \'weavedemo\', \'account\': \'weavee2pD9gD5q3ZXFxJL6TDA6q6jXj6c5Tf4HnB39FMmxgps\', \'scope\': \'vault\', \'table\': \'medium_posts\'}, \'data\': \'weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q,xf3ZPdM6LUOgNmOhxwDBXtZNQ2NHx1dWg23gEb7xmlc=,4aDaVDCSPDm49Zz5Ej7o1kECtHzmThULagnRhve1h4v5QJQbX9FgPq96e61HyP5Mk3GtVDV8bN4GtYuohcGrSPJ5\', \'ids\': \'337\'}\nDone.\n',
  'rootHashes': '"{}"',
  'writesSignature': '42w7GhxAj385wuzGzpU1AwE1cYnEv1VaVj3evN512bCZNgjwAx3r6txEXvaMCS4hzB6uGtumZDahu5saBSQ5h5L7',
  'outputHash': '36UaD8YjacqVUxbbCoAssrkruugmmAWjC7sQLvKEJcNC',
  'outputSignature': '4FYAToD4tDshwzddtm81cMpAVzKZCtb4dkiHXB45qsFweUbmsLBJQWecS5NnNXgNnn6T1t1m3LqdJchnjnbNR78F',
  'computeHash': '4M5CUV9uRi6EE42YEKxYyPkd35Kf1CMfUWig1VUMfnWu',
  'WEAVE_API_KEY': '7e85df2cacf74d1baa9a8a90e702126586d6dc3f9d76f773',
  'output': '{count=337}',
  'input': '[]',
  'writesHash': '6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN',
  'paramsHash': 'GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn',
  'writes': '[]',
  'outputSignatureTs': '5RZUsTFSxN19RAfSEeTkNGHPcLzrdyqU3wZj5TRYrSpvc4xck5U24Z2EUZ7Pwa8LaMwppPzpZbHfhhqXTvB2yBZJ',
  'taskId': '665884fa5bc444ebbcbbd2e9c5fb695c',
  'consoleSignature': '3Cpie6emfN9Tfv7jnimECZXGbvR65SmAHEBPLvP7r6SYQbs2YQVPonyZEgD6ywHJmmNbrTJaih25niuNqR24iJBn',
  'ts': '1691601087449'}}

Compute lineage

task_reply = reply["data"]
#print(reply)

print("Compute Task Hash:", task_reply["computeHash"])
print("Input Hash:", task_reply["inputHash"])
print("Output Hash:", task_reply["outputHash"])
print("Output Signature:", task_reply["outputSignatureTs"])

signature = task_reply["outputSignature"]
match = nodeApi.verifyLineageSignature(signature, task_reply.get("inputHash"), task_reply.get("computeHash"), task_reply.get("paramsHash"), task_reply["output"])
print("\nSignature Match:", match)
Compute Task Hash: 4M5CUV9uRi6EE42YEKxYyPkd35Kf1CMfUWig1VUMfnWu
Input Hash: 6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN
Output Hash: 36UaD8YjacqVUxbbCoAssrkruugmmAWjC7sQLvKEJcNC
Output Signature: 5RZUsTFSxN19RAfSEeTkNGHPcLzrdyqU3wZj5TRYrSpvc4xck5U24Z2EUZ7Pwa8LaMwppPzpZbHfhhqXTvB2yBZJ

Signature Match: True

Test read records

reply = nodeApi.read(session, data_collection, articles_table, None, READ_DEFAULT_NO_CHAIN).get()
#print(reply)
df = pd.DataFrame(reply["data"])

sample = df.iloc[-1]
sample_article = sample["text"]
print(sample_article[0:200] + "...")

display(df.tail())
I believe, we all have that psychologist/philosopher in our brains that likes to ponder upon how thinking happens.
There.
A simple, clear bird’s eye view of what neural networks learn — they learn “in...
id ts pubkey sig ip roles link title author text
332 333 1691601083484 weaveyTJyuUJw7VW71peNmXiN8zzgP4NgzCuXdQbfe2d8NL33 [{"sig":{"recordsHash":"sawdNj3J94URCcqlndvwG+... 172.17.0.4 * https://itnext.io/you-can-build-a-neural-netwo... Daniel Simmons You can build a neural network in JavaScript e... Click here to share this article on LinkedIn »...
333 334 1691601083503 weavepxPwEkHfD7sDabbEMN4Rj9F92LiY6ZN7oKpwGWeUYzZN [{"sig":{"recordsHash":"OWjPq61eHNmP1DSNGAZhP+... 172.17.0.4 * https://towardsdatascience.com/artificial-inte... Eugenio Culurciello Artificial Intelligence, AI in 2018 and beyond... These are my opinions on where deep neural net...
334 335 1691601083547 weavewtrC9kGB8NJm7tKDBY6vVYC2oyyG93Gv39akdSGEpWCi [{"sig":{"recordsHash":"wFj4vn4J3T1ufS4ZLjaEU1... 172.17.0.4 * https://towardsdatascience.com/spiking-neural-... Devin Soni Spiking Neural Networks, the Next Generation o... Everyone who has been remotely tuned in to rec...
335 336 1691601083590 weaveySdqTVS2dqjxAozJZo3sLAEjNu3EAWq41Fq9HwndqTra [{"sig":{"recordsHash":"++G3QgfD+IuuXo7ckmVrba... 172.17.0.4 * https://medium.com/intuitionmachine/neurons-ar... Carlos E. Perez Surprise! Neurons are Now More Complex than We... One of the biggest misconceptions around is th...
336 337 1691601083641 weavee2pD9gD5q3ZXFxJL6TDA6q6jXj6c5Tf4HnB39FMmxgps [{"sig":{"recordsHash":"xf3ZPdM6LUOgNmOhxwDBXt... 172.17.0.4 * https://towardsdatascience.com/wth-does-a-neur... Nityesh Agarwal “WTH does a neural network even learn??” — a n... I believe, we all have that psychologist/philo...

Records have hashes and signatures from the source

display(json.loads(df.iloc[-1]["sig"]))
[{'sig': {'recordsHash': 'xf3ZPdM6LUOgNmOhxwDBXtZNQ2NHx1dWg23gEb7xmlc=',
   'count': '1',
   'pubKey': 'weavee2pD9gD5q3ZXFxJL6TDA6q6jXj6c5Tf4HnB39FMmxgps',
   'sig': 'SpGY2Qpoc6XmXRzhEibQY7RstmnYUY31gRg6DxYBd7bQgpVzoUM9mhje6B3Qh3eA2xwwXHp6gcisnSB8MhCWce2'}}]

Check balance for one of the authors

account = sample["pubkey"]
reply = nodeApi.balance(session, account, "", token).get()
print("Custodial wallet:", session.publicKey, float(reply["data"]) / pow(10, decimals) if "data" in reply else 0)
Custodial wallet: weave29LwVcvu5rrg9bfbp7UhQ89unqStMzQvtn7Td5ioSu38Q 0

Set read fees to 1 USDC per row

amount = 1

fees = { "fees": [ 
    { "operation": "read", "fee": { "count": "1", "fee": amount * pow(10, decimals), "type": "count" } }
] }
reply = nodeApi.updateFees(session, data_collection, json.dumps(fees)).get()
print(reply)
{'res': 'ok', 'data': [{'tableExpression': '.*', 'tables': [], 'operation': 'read', 'fee': {'count': '1', 'fee': 1000000, 'type': 'count'}, 'version': 1}]}

Train model

Blockchain anchors for immutability proofs

Records have immutability proofs on blockchain

https://mumbai.polygonscan.com/address/0xf1e724671af7b7591bDd1501A7f3F6cf81bbDE69

reply = nodeApi.hashes(session, data_collection, articles_table, None, READ_DEFAULT_NO_CHAIN).get()
#print(reply)
dh = pd.DataFrame([ [x, reply["data"][x]] for x in list(reply["data"]) ], columns=["ID", "Hash"])
display(dh)
ID Hash
0 1 +OS5Or+l5QQopMePffNnEg62E2uSjsZRcja9ohjORMY=
1 45 08AWqU3V3OT4oIb0amJ6M9yOYf4G+c0lnLsd1maseAU=
2 102 9PuksDOy7BmvzFK9/o5ssY90q4y7pTjmqXqwF93an0I=
3 159 dyRjUZ1znJZH9GEwBgP8kYAHhRsHZfUuw6BNc4EWM9g=
4 218 aR7crHv1hYe9X4GqgFbEuNBShcVtERSZ+fG9FZ4IbHE=

Merkle Tree Proofs

Records have a different type of immutability proof offering the ability to check inclusion via merkle trees

https://mumbai.polygonscan.com/address/0x4a2DEA252D04c9da1029689c4907Ac36a5854d24

from binarytree import Node

def showtree(tree):
    prev = None
    root = None
    lvl = 1
    for l in tree.split(";"):
        level = l.split(",")
        print(lvl, level)
        lvl += 1
        nodes = []
        for i in range(len(level)):
            pidx = int(i / 2)
            node = Node(level[i][:3] + ".." + level[i][-3:])
            if root is None:
                root = node
            nodes.append(node)
            if prev is not None:
                parent = prev[pidx]
                if parent.left is None:
                    parent.left = node
                else:
                    parent.right = node
        prev = nodes
    
    print(root)

salt = "salt1234" # Same salt used for records hashes, this can be improved to have different salts for *each distinct writer*
digest = "SHA-256"

filter = Filter(None, None, None, None, [ "text" ])
reply = nodeApi.merkleTree(session, data_collection, articles_table, filter, salt, digest, READ_DEFAULT_NO_CHAIN).get()
tree = reply["data"]["tree"]
rootHash = reply["data"]["rootHash"]
ts = reply["data"]["timestamp"]
rootHashSignature = reply["data"]["signature"]

print("Generated at", ts)
print("Root Hash", rootHash)
print("Signature", rootHashSignature)
print("")
showtree(tree)
# We've built a Merkle Tree at a specific time, signed by the node that created it.
# The Merkle Leaves are salted hashes of the data in the table. Binance did an enumeration of coins.
Generated at 1691601135368
Root Hash GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV
Signature 5nfrVJ1FwUhm8wWnjkHaBYEq4CcfdNWmtY7HV75Vm7YAqeq3LmWmxqQ5mzn5AMkYTJbL2axvN2sRrhGA5fLUJUC4

1 ['GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV']
2 ['eXchZzqyGmuUf5inuchRjwkKX543MHi8YJUSZg4xYsz', '7QdfPwEZcCSNym8Tmm5MaN4imUPSe4eCroeHnRp4t8M5']
3 ['8uXdwYFH6Wdcr4Vs2Fwb3BrutWh6pDcnCkk61YM5E8i', 'CkRbcbEs9WZi2RpEULtvVBtt8JYTKpo5BFdF67dsohrS', '7QdfPwEZcCSNym8Tmm5MaN4imUPSe4eCroeHnRp4t8M5']
4 ['8oGaYtp62vQ88bu73rYD2oueqMD9wUEvDAEYbmHRD1Ti', 'Bunp59ZQN8gv4xbZe7t6UvSDFGg5ZEUNMXaryurGYt95', '7EV1gr8ZPK3ryc1Yw1gNrty7e3tNx7x9PP6qAcuMFPRk', '6xzbgmGNKsNxNnHNJagxhMhtG3Yw2J2NuGBxzazaWEMF', 'GjS8hiFKJMBbGERrnFdx7qHjvgBzuvE93mXzd9anbcwD', '8EnykTr6mqRZyiDnC2NznsZnHmugYU4MxEqYPDdu2b7o']
5 ['7D3BorZbk1cY4FsMgoRtb8RubfzjFrE4zPweTT7G4cho', 'GvPQjhxgJth9CagFwkCi3FkKkPyxgndvR7826hrL4uy6', '7JM9uumriu5vs2aQ1sUNuWLJSqd3XFpVR7LdANNEqiUh', '6FLYr7yXs4v6osFVYrnyuiA53aEa7DHs3EugkyY8QYP1', '826ZoPqNujfiSQEZUt6MhojEicQMjyADNpy9hZESHBaB', 'AGn8SKuoaWKdXxfaxwFrTCAiBEmjiDK8bvJEG7oqWgYS', '5ZmuxjeKiBzyENdjxVEvDxcu4LrVaMkvV3RuckRd3s7k', 'Ek4YCvM3BMWN3g2wrs3qNkHk2xBeHJno5Nv6EN8x2ZSo', 'BTHVgBzYT4XbrpXLZNAmW6yvTmag1PLAebjEkAGHGJBT', '5JPM3JSMxkxYeCcDDwAEyh6xDyvi6oEKLN8yy1df9HHP', '8EnykTr6mqRZyiDnC2NznsZnHmugYU4MxEqYPDdu2b7o']
6 ['4VLTwgfbmG7kDKKdyTWwSmZXx4jVRvhzWZ1cRriX7TSf', 'EK82QX8H8ggwqEXdnKz7BgdDk6Ua7uiQHmE8fD5L81pN', 'CpTUkrEVhCbyh2SA1RMmS3io6D8gMAHjbMS3pRoVxs9i', '5tKtFjUkgAbixP1n1UqJBLYFPGTu4voGf2EncaZoU4Tn', 'Gf3bgJRshgXPJsMFfDtZTDR7wSHN1zSWmREF39ebu9mE', 'CH6cUKco6bz5oE5DsR1f712KW5EyJPRNHsoj7QBRkFmk', 'DCoSYfDcCGxwSENf7kq95uz1oGLGTAsAyGRet6VkdJHx', '6PJa5Y9qYKzAR7UEch1JjuMkMgbhmK4HVXdRptsSU8PC', '4teytPzX4PNywYbMSkJaz4AY7xJn5uBJ8i2dtRarJXsC', 'CKP3xZsZYhn4xcvg2N36Jqn6m1nyTqj4gifmvLPzB8do', '6hBKcB5Ycj7EGGUirvpZMcaadtFx6TX5orHrgKAEVYBi', 'J6iAmyJWiJDq7fELajbtrfUkBHzXWrvqgaXCzriUdE8N', 'Fd1aKg8rPWhsSgCSVxDVPKA5QGsT77xRHYfjv1ajZCcf', 'ArFqDArQXhddpkpUSqENjFdxL2655yNhEkKtUrWWZNpe', '6UjvaXQjYy3xjHwsjKwAg5bT6gZLyjaQAoi5mWSt2YKH', '8LndfLarY62L1cV78JkZ2uHJzfKknJCFzqG5mXdp5bCq', '417dLyNUyUqHTqKTN7zm4vAUFthz8U6u3JJTDHWLdHKZ', 'Db13UMnkT1W8ZtHK6xLWqAppg551sFK64Sqh2Cc4LEnC', 'AbhJRtztRX5nRtHv6h89YKa7PoDRDiYPjHeSmt5fAj8g', 'Biad4AYAx3fsUSNYqCrz1MPsSZdPBy3rSzBtCgws2MAr', '4jCJGXd5SfZWQaB1EoxcLGTtYwWLKL9Z4RvUvCvSdCsg', '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc']
7 ['5m3BraGweaesYZZVgNKoRQgFWGCt8RV3TViJAX3KTYzC', '2Gb2BPSEEJFtAdwHMrv8fiTeMzDCMxdw71CKzWUxuZP8', 'EPF7PixygWmJAmcyTxVBa7urqaKhqtzd63cMmj917iNN', 'DAKDjgMtwDgbiEmK5BxGrdQbB1mRc5RUmzhmFz6quCh2', '3aSbwH7VaHiBEfuyBzdAxHhubUnnnYMGb6Rbftb8ThyU', '7v5KK5grwMbT6e3UyxhfYYkyXqeXraZiaWjRbgHPhLjx', 'Ac5oJ1QwiLFBGUy16nVBP5VBksMFK6tgUCKR9Gkn4aRL', 'Awttzuvobz2xDevLnm9XaVZambaxPudyWnHcUmyDhd3q', 'GqXQhPUQbzk3JqdQ5BmdMscVJBKJAXuKDHETBAmxSwXD', '3ng3oSowqHM1ATEVhcnesYJMYEhq92jhhXDCvRnmnZZf', '8UCPnB5sZh5Yd8pyNHeXntUY3Spgi5M2bBgUXfigoXya', 'iatNTaayU5Kya97gehs4yjzuZmnpaX34XBF3vWgEhQH', '6DcFuA7hPsZXKQuE5y9cMBuWgRgXnUmzqs4zmnguvLzu', 'G5pqUNc7hY7abKvaPGpAEU1NKk6ziMCbUU2rZuuJsJCW', 'EK4UhcWwjAmeUNzbVKrxbqgVifgTKAeHSTKESVeVvMrP', 'Byx4mgJ9nJjTwcjSiUvkSP99YrhDGuirgxgjcZ2DE81Z', 'DQEUaw6U6bRmQjGkhhRzH9jzZEbZbn8iVd3ArAjh97JH', 'ApuTPbHRKrQxG3QnTVT84QcEZR4nGkaWE5cc5Rkxkqat', '3CK2f5UfUpVLGYC6QT4S4CHqZJTnCmJ4mqPHUwuDE26K', 'CN8R5FTWFkwBnGp75b3jRAS7Dvm9gdYdHQUYuonDfyLK', 'FpqjZUhvKrRCtm6eCkVf2LsN39eLn7d3LGtGFRHTbGFm', '34ZHcDGhxLbrkPjvewb8h7etuKRTHnzojEs5Xdoj33Gf', '5ia7FtZgcPz4hrMD6eSJ8ajg6fY2SMRjznT5rPdTmTen', '92ZtKnag8isTYVFV3Z2CJH6eCzpFZWQjVUZT8vTZBGFY', 'Gm4CYsxQnLMcxvwdZk3pBYvWfMcLTUNaBWYUcpVmeqXz', 'Fpgvr3F5p3ZiVf9XSwtn1edeBHCeg9g4FSZkRXPkejSu', 'AnFtj8CArnVGfcVpsrQxLbiS9LM1KGobhmpcNVVb8FZ9', 'BzuMHaRJVzxR7wV4wRS8xY3uSPyNFhvHaFbocFaSZv4N', '3xCNqFs5gY28K7ok1TaokvjC6zRaCHm7fLeqqn7pYapC', 'EMzxtA2xPupfHbpzwWNG5z4nqAMLGnMsKGJg1p48RXj3', 'CSDKxsZm78PT41XYz2yP4XpwChAf4jscpFXXA7qjWhnL', '6N5USNuDUR3HiksijDsDkdj5P8e8cf7XztmVcCFBSu8v', 'GRcQ7RWtiL7jjpMkirhhHV1GwKFsHb56zs6ecPANGWDH', '5YY3rcZLstrjitYynL3Jdxk1JATEaipMbdWyLkoArqC1', 'CVvzKACaynMvDuZvnjkzusdDzrKpKnfqxCCS1K81mT8k', '3F3GTZ2R82oBvfvho6Uktbnc8QrHCwhxGqoQJrKX3R7w', 'GRzXU3Y8osZMfM7GexR25ec8hxsrrNVcxwDNGPfRrfzW', '3xUkmHK23EEVBESNG7TYUQgvgv3Mpg9UJkbkCtwd1rwd', 'FDEEqVYzmbCD4bP2Z9VuiF6aXggQZm9XNAoBnwA8uwY5', 'DdwBYZwzfgvfupdkM8KF2hQnq6Gf3Ppt6pELzU7JurRk', 'EsCtaXL98pGFZRVKE5oizGdRK7GgWyabJEfBnthuEJAG', 'D1YWGxsZuAq7aSChqQX9SVM8Z9f1JpFWyADVfZjgfuLP', '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc']
8 ['FNo6KaYaintjcy3xX7FUPHVjVGMFj9KGmVPAhgEoQxZi', '8Rdx5eqXkL6PXyufTg3BffW3iExYuMWmVXWj4D2BM8DA', '3JVWbWwkkTo1MLX9ukPxMRrcNjonpJDmUSXFM2nrQQtU', 'CVX8SMAGxSeaRKssVbEcUd1YgZqsE2k957BnLYz7Zjk', '268D9oayah61bPrXuExqAjTmZZP3UMkHGm7fNVxjXzdm', 'EkTni31NJzEQv5rQaThQkqjSFvrsm8hQtKGtvg7ruzEj', '5XMcEKj86Qzz4PRfLxULbuizNhGjNvvfhHoHrsiik7oy', 'Bmje6KKGa2L4uJoE5iDF9AVFqXhLjRxKYT4TBqkUrLLv', '7vgfyoJTmnaT1ZfoXCZCQhQ8nk7u49B4w7eYar6fovHC', '3T9JVobxcCytyKyCnDwAqmeUfk5nW6DpoNJ4myDg6hUc', 'DBSL5mrQfdvfXz1XTMWvFX1pYPwtT4ThgjP5L4LS6qWP', '3obvyCZkb5aybrBR6SETK19QxgyKCvorgLMb4Dq8vRhB', 'BSpuPajTjue7tZwzRnp1Lp8r4CNxo9ZbUquPHR7nvDwb', '26oLtPAj7wprR5rdVSWi3zBRMqzqudWdqeQ6JiogRkbA', 'Fte8przgTj7vYneUpVvqgP4mWuDkYgNZsvkxkErGsqMJ', 'JCq5NbkSeF3daa4zE5RHwjUUyqaAzuxLuzVRpHKkaiX6', 'EQuKb9QTRyXcBeoQ7ZcPANpwwSMhshvVzAigqs8XFW93', 'EEGJ6nMahpJPyf1FJof231HiY7ABx2sHBcQ72fFUgrYY', 'HZ7RY2sqZNoyMkFWynksRijPMASHRWWKE7Sc7CnVUBVS', 'GMM46QQj7TeBEygPKn4wzcAyUYWVcq1h6qvGtPz7o4Xd', '5CXz7wgnhPVzYWjeeVRLhAhKzbSRyZph6wUAHqMkuXi5', 'Qj4kG4JsaHCVevc5XmanKt7ffenVTzGaEsjh7a7ZShP', '8Rdx5eqXkL6PXyufTg3BffW3iExYuMWmVXWj4D2BM8DA', 'FSEnzRhVkRnuHCSiTGSnBfRFGaGVvVqYU1iYUShHcDTH', 'DJA7XwD7w62v4dAzmkSiM9DwyRHBQ9ZeQJ3oz7hnhbxw', 'DcQpvhHiAM1rj6tJAPPdWmwUkQhP26C7EkTx7az3Xx3k', '5FpgsMrkwPUhdGN22hjX5X7dv3omR9cQPmZhhzq2AWLN', 'Ez7y94j3tNbJxST5T2BtxxxFyjmTHjG82brFbwEKsXoa', 'BM6RnCxkNsXAwhgw8GECaQ1qnkEH5uoWfxAQSKXGP91A', '54rWiPMRdPQGN7HBmw8G6XuiWgDUQz6JQrMwTR2RN9At', '8MF6qj6oFyLk83RCEwA5UejbssH1CJ78m4PbrXRnBVGt', 'HD1VThU7MwRzsbVgC7jcmTEyBArHjFJH5tCJamwdwV3t', 'vjGkGe8kAzNrKXWXiZUQ44Gi9CLJQbw72aimPh27uAn', '3n3nQsUGjvQAVta6vvU7BKTr3EbyaxjESrRafKaxShqN', 'A3AEX4q1qAQoRNRe7Xmq666s5a4WsD99xfshuG5MUJUd', 'HbYbmYGAw1k7439kS7JF9dhKsNh2fAKkDV5B4DLtpUp9', 'CqhJZSrhMQKLncQp4pTCRejsHntisLdtavxwXhxScZj8', 'BYR8xdwiQpCZ7zXrb6aDa6UnVM48UhKEJdTVZP58L1Fy', 'GjZksdGn1G1hToC6KRZUa5svsGHV2XJ6R5XryE4N5cVj', 'AvqQ3NaWzDm5QhPMENegr2p6A2DMC65LYCY5fQRaYJyW', '6YAvoAndGYcCFdi8vewJDDPj3iNEbS5hXnMqMPfRLz6Q', '52AoAZQ1x53xypMxa1mQFQjvb2LuGmFgJbNiqmYKMaAc', 'FDnXmxaxA26qi327i4vN4DZ7bfsDUMgkfNS1LF3ossRd', 'DGoHR4CG4kHybmyxH32XDVWMqJYLCKknXQtkEpWjgz5m', 'CSaGo4XMdid9XRQ4jCk8aWSoBzVCAzhDv5Rg8C6UYep4', 'JDRRHHJfVr6ocGfxZQRLnarKYcENyfXFzMR8orctmBnf', 'E9GwgipCpHLrBf1vGRQFsEUMRDxb3hA9zpjSZDRqc8of', '8fGNMeer5tgQj47wDjBZhobrD6jQuQVcjXZi81rLu2St', 'DZqyDkWYGt4VrzNaD9BwaF1ifGtEp52MrWrwN6YgJ62F', '6QJRoFFohc3hRMCuwd7qca5K4cn5m3MTmyTHw1xYEBvv', '9y9bXinK6dY1BFQeZhBGax4vumceJatgQtYfz6xyHsqJ', '3P7asxJErLt4H3d4SSenqKkDCSK2Li8iK5qceDD7axrj', 'Bfn1gzr6vvuUNVsVa3NyKF8f7Cz5SnewA6ux7d5oWWPL', 'jbxpxT6kzbvYyiRRNB6FVUyvxKNPLSah6LeMZN8rhAp', 'EDPQLUqNMSWvUpnxzsv1PLkMz9LSYUpp1cCThqmMa15s', '13wF8FdedqzQwX2RF8G9a77av5e8APKiuFPpVvPVw8t', 'AxQZgUrsemdjbDRtGpv5qCd7PEkojbD9qvaVTs5XtwAL', '9qzAs6AVuCSwS6myCsdyCqJG3vWmrPJBAX2oJqEXDUyC', 'DP4ZJJiJRfG4DU1rnGkcZzdY3ZGViwQ4qcgM8KWZbV4r', 'DYMdsUPWr3GWTcZ3JVsbJZ5rpwjm8rx2MpzL3QngDWWC', 'CxXiGU3MhurevMdEQegdGhrHYcsFD62yq9NCiNDve8o9', 'Fv5JvuGYBouGKJkCDBjxc8XHJ5487yjcDPq22F5a52nu', '6QNXRyQpYS1kh39WGfehwL5vMAe9C9UEcwNJbkqSwsr8', '5iNbq86w2im3tLW99YupgJboXkNWbeEMo2WbFb3VMecJ', '2NkvgL6g8pWaRHcYNjEBk25G15jLXEtiJxUV4M21WqEH', '9xBEgEJPwCsj9HahA28m2F94sb8UcJ5UukEaKf2K9zvb', 'AtKR6RXqxHcYFjazT1rCLrEmVosvNv6dTTrtsCRMfa67', '9N43gkYtyJGuEZi3AZcr9vkapgwyudwaffzprA2xFiuZ', '3zRTcWLS3HgWWZNfzV4oGkgwpkuWzmrovCbHCqT9gHaD', '2v4wAu4LTw826fY9rUd6bHec2f3ggQsJ8VjWeV8LgmsH', 'AdQtCvteyp31yqMfrnWQE5H8qJK3Gopu8PsXNpvygueD', '5GR8FuuNMPnSXVUhAcU7SHuxMF6bEBH2qNkR1B1AijNR', '6gsdn3y8Fv94453CCQ6bPgEJKBEvWfQt4X9ZbmfLwSj1', '6NJtpQELr2JJru64aVsiwHgm55MWVeYEHNbeWvAYYrgF', 'mofYyDc1mC7QCNQtUHm9dkYtZ4NoJMy7eFogRLBeQ5m', 'EbyoDx6rVgvN6rSvKbvfyYtRkAVDCadrLBCLWhFpXLZW', 'UJDbgfqcifM7Z4ZCh7o6ZiUQUX5zHGd3pcrmVXreAgY', '7EXQRZnFdK2pG16UDH596HTo4kPrS5PphpfSL26EYfcy', 'iptYazFXJcDWQQWKN1SRSw5JTP8UjK4YzXg2RoYaETJ', '2mPJYySoiGW7A5HRwXgLQeJ3Wy1bNPrcoRE5DGNQsVi1', '4bTXWN3ssvqtADkzqjRpmpKjwe9hWakvuA67FcLAWKhd', 'A4bdbNyGMJTLY8q3RmvNSC4A3pUPuHQRvJWQ2mUqe76R', '5ouqRD7q8u2pTZaFwZgJw2LoS1WvDusiYi5XGYaJ7QYA', '8LiDnwSTeGv4PFYC2JZ2f1wZ9HPrbBVWvm6wYMH2ggow', '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc']
9 ['e63HtptGnGLbKifWdck6A2d8Jwo3Wvqpw2125AZX19L', '3soAawbWgbgTxFtK61FdxNgLcPNQ9XMai2xhzAbVjiAs', 'B99j5deUMbaMJXW6jFz4Jt8fQshLtD2RvgvFJv1E5o1v', '2vSTexMcq7SNhTU7HqsL4zBoRRC5NF2e3ec5yVCSHuXh', 'YbJ83wNZSbhwkooLcgh8BTuiERxpwKG1PqUcRLmBLHi', 'AEQzVexTyULgp2SwMVtnkvqVjeoTpzrPkfrPLVfUVtjt', 'AKbLamktexeLEEcEgkjsQujfi1KVvzwkhy1h4NtoNWuY', '5biVdWvryJePm4mL1ZigNdKBbVCafPuCxR7GzmRVG5Hs', 'GrPN2F7PVE5Y9bDjYEvqv1T73ZBiXJ9M15tNPDFVguTs', 'H7xTx4Qjd2jEtiuBgZkTd2wT82hEk8SVYbGSxdFwBbhK', 'EYZ3AwntJiV85Tm5Dtasck4hz9zvQPVPbyp1j4bF9TLz', 'Hgtk163wMBp7QsZHQRb2arfrKCAcHon7fBmaNcVznJy2', '2iCJVnSCay13PtfDj2BVkjNsvyHhbxan9QMC5tk54HdB', 'mogQZhGAkDrqdN7vhiB49g9zpW5AhyhM6CBK6wTfezk', '7xPqSv2TiWMvFzqhtUPdmizCgX9bivPHnwK7B9AZEBjU', '3ASRmKQphko3cj5Vzux8L9XFVX4SS5zKKAN4D9pbUsQK', 'BoGs6Gxvayo6xbugkPii7RVrYXqzrxB4RCe3Yn7jfMju', '9UT7mLBQWn6kpf3vGNTR4xA58epXx4jnDL4GcKgLhTWj', 'BfKXFWTPNBHwAsvH5Jpc6t7FUiEpJSK8zTejqq2ckhpK', 'BxEjaMwi7prFPVqSDAZygXkWqy3av16J85NAeDQSAQke', '2VYkeddEhJ1V74WyqSP66DrFmWN6kBjKa22DUM9WhdpG', 'FWTs3k8rSPxbDP7ExkUoeqquPJf5mCnSdpM6ERduTfXa', 'CNVS2G9v55cUzti8m9yB6a1P9HG2tJNG2jKDZ8X4meVG', '83NXJEnF8UVS8GLYTC2EkCySwy42exkuaiKBZ3WFWb2p', '8AgANL13xSYgbVVMkxPHm2ASbcAoEFNzUU5EuYgTqRXE', '4AXgt5qmgCNGqCJoLiqMetWWt1gDC258F66UtAhsRGA4', 'JDaN719Uo12fo3UpfKAgrS65ijfEN8g2QZWforJ9oUhD', 'PSsaJ4Gw3PJvFrqjxQjidhqyFDFFG9TSrZLjWEZXte6', '5biVdWvryJePm4mL1ZigNdKBbVCafPuCxR7GzmRVG5Hs', '4SFEKFD6j65ELUA8dyb7u9T5NV9UB5V6VfrqKPM7E2mJ', '5pKHKvMsY21zAahzSLwobFTDibG62zaQJ8tv2oWkriGu', '4eEFnE8cuwMYXW2YAqvyxZKLgmumbHSYwWZZ1dqRZJXB', 'Aw1eqxVDRqZPVdA7QYEn1crGs36Z8gGDNiWZpvLbePDE', 'FvCsDMrwQdLPvPX5UHAkXJ4eQqNGjp2xstKtWS45zDvN', '6GeW3MKw2wBARzApFmnTTwqBZaYwqgAjftBMQnimELKv', '2aTCseFFK3jZ1YJtYA4fRSnnuroZzVTqFUpoeZLKR9nH', 'CYby5ceeaoMcSHWDdtbz8CV8bWchBazErQVspUoLnXQe', '2Xn9Csv6gpawMU5RJUVwXCZX1Ngn6s7j7z7Wu2pQDeJY', 'GRgfZ2vtpFNH9h77tb5HZxHAthwJ9iqXLMdQRRWgACM2', 'ATNwbwApM65r59UaXWYksjtaVdftcqwfFXAZEBhxtUCi', '9TtTVa62Nne66raxrzHJNRdmWuMge7eXtwvSvARD1JaM', 'AVQTQXD1bYYknZKf66YsHEuSUuTBG7iSmwKdzxzFN5gv', '5w49uLjgua3iDvciSTpG1TMuWTYpvsrKD1EEPiSiqFCm', 'Ao1YbdFfKBRiEbmB6Vs5LLB61PkHUsfbcaiebqNDLjKX', 'B99j5deUMbaMJXW6jFz4Jt8fQshLtD2RvgvFJv1E5o1v', '2vSTexMcq7SNhTU7HqsL4zBoRRC5NF2e3ec5yVCSHuXh', 'YbJ83wNZSbhwkooLcgh8BTuiERxpwKG1PqUcRLmBLHi', '52BiiX9JyBdn9zEanXiyDvkFJW4xNUYvDSGiWQExoT2b', '5V8JcVa1XUEDXmnHU52fvDKBhwVDNv7mR79UDT5niEQ2', 'H7xTx4Qjd2jEtiuBgZkTd2wT82hEk8SVYbGSxdFwBbhK', 'CsyUa8ormbYeaPnW6xRg2EWQUWko27m7fKeYuT6ehTcR', 'mDtooTT7LgcoH4yimiPRARdtr4C6tRfhDuhWwKkDkSp', '5jruodeVipsFme74BbW6EU4c1QDrDM6jPH1aVSmyvuBh', 'AUHQRVjsuiNZSqdJVQzsF3MwjHijtdZZKHwCs3yKSVCu', '4zjzMdoexQ4JrqmxkCEHANuibBSTE2tnPXcJcmpxX1X', 'CeUCENuWkUYJu4a9CQsRfWxgrpXJYfCnJVzgwRBbR2Ts', '2FoADkb1R3pFYSUfdnFLGRVJkPmYFUvdjxejJXefRq8d', '9t19qHuECmHmVm5hSbedSYj1QHxGBJcV7bzEBcj5J6q4', 'HX1yscCLqdy5GmDppHPFK5rsvNv1LwwfMPjyJaBa4jcR', '2tjta4gc97sHyYtTh7G2beMsJmmspbh6Cq8hib9CAmpq', '4a5x3PqKoqAYS2NaNsE2AQSDVWafXDMRrsuCXTLdtJca', 'ADBJbVhTj5eYegqXC3bLbQjeiVM3KFEGFhP9WiJkmnJi', 'T2i8SaZ7b795AS68yKsG9sSdJhwisKjF2VncMNtbRLx', '4rpw7MybEtVg48s5YhCFAVbSjHRRoeUPjw9bQMn54Wje', 'BWXsz6BfGvicY3yBzYt31vazuHDxfnYvtrczh3AazUza', '5WABaSFtgKDtFrqEULe5ypMHPWDsMnKaZCTzQrTZZ5gr', '7NK7cdrgY8teGWfsBx3EWsTPBwcW3VcGeV8d2mJSKoro', 'FkLSCh73fxi8mfB6bBdibAA9FMwj425X2oSESkht44NE', '4SFEKFD6j65ELUA8dyb7u9T5NV9UB5V6VfrqKPM7E2mJ', '5pKHKvMsY21zAahzSLwobFTDibG62zaQJ8tv2oWkriGu', '7hhZRngbE41utfAX1t3o1JqPWZuQYFc1HHT2uiQEWQT7', 'FvCsDMrwQdLPvPX5UHAkXJ4eQqNGjp2xstKtWS45zDvN', '6GeW3MKw2wBARzApFmnTTwqBZaYwqgAjftBMQnimELKv', '3gKxdSHnh9uWfnaPRtgDVcuTWp3JGpskrcxKsGDZFCUQ', '7qXLLxAWNi4BH7E9z1qexsHS621NGWR8fETxSGLLqxxx', 'DAYQYHFen9KK8L8ahwVzqRPqbah4jr56gmFBdXBrLezR', 'HLZvKA4wBXFVXREzGRenNjXzAjiBkYqPHadVGnZ5yrqz', '7VZPUb1pPrVTdhYF2u6SiTsLLFKvSwkeZ1ZzwH1UMYK8', '3jeiZC4xZu1Y85yKC9VQuZPd6uv1qnt5fMTYeMtis8dv', '5EcYiTtxYxFAzPf2kqN1cYWgDTrSPUUbKyaYvEPBo2wo', 'BBqqPKbpmtavmsVZg4STmdraX3VYhVJ5XcU2krVC9vPw', 'H4grdN2KvfXpcr54fpXtEUHMSx3pY2avbgv5QpTsNWQT', 'GQuZEodcskZY8fqsjiBFyGftxxnLxtwMFQ6uHeycQnpZ', '9F4DhB1oxDGs7V2LZQogJQQGYQMsinGJoL8dvBm6dozP', '8AQyZNMJT3AtqzTeMkVoGnnhpCPbTqy6EVkmBo8HbBH7', '7wPyNZERwf3cghbDMiB5NyAYNDtnVnJJn4wZS8hZCLKX', 'Fnsytky5ABfp3CKXdvehEk1wsSg9cAkEwvCCHiUzEaME', '7qXLLxAWNi4BH7E9z1qexsHS621NGWR8fETxSGLLqxxx', '3JRHmLaEAEW9MDirQ2H6s8S4dpbv222X5NGDPoucut6K', 'ATApZPaWKQ78cuwwq5srUpphi8ARkPwyzBr53CvdGYZE', 'BteivVSy3xWmpZMChbqs7UUcy5MxFiGs19tvJfuaVMSM', 'HjjbF72FaknwyfgMcPVqDMc8oLxTLSYuousGZLqCtYJG', '63z2SuLznTBCzb6RPy5zUkkmgkyzEdbpGfuUcT3vHTt3', 'A8bwqdw3yWVqGksiXZhKPjrdQfb2pCedEsRzVmxEzSxB', 'AuqZm96iHD8Z9daQcpfYsF7Jg1F46WHiXhRLx2ks8S83', '5Vth5LjbZfPirVcfeCTv2nznJvoD457KswBh6Fu9BUnJ', 'JCX7yC8Jy3JbBZGhYxUK42s27zPb9wrB4SAc5Chb4EjJ', '47HxWn9z9HioX6NwfAorqbzDyLisqjZpsFTMufHEi643', '6GeW3MKw2wBARzApFmnTTwqBZaYwqgAjftBMQnimELKv', 'Fnsytky5ABfp3CKXdvehEk1wsSg9cAkEwvCCHiUzEaME', '7qXLLxAWNi4BH7E9z1qexsHS621NGWR8fETxSGLLqxxx', 'm38FNAZz22EPUrcu7nZsMKqXh6njDjyJHeCzZkfXYY7', 'GEm3nNvKYVKFnnjGyaUZznHfRacAgP3ri4cNvg6nc7KX', '4HKDgL9w4FNXETeJEMkgSN4FDDi84NDHrT4UrZMVy6fx', 'G7ScLsNBiTnfXzxwcUg56WLVQRXV6bbjxpYqvWzRgM8T', '3eBrAB8aawMK5xz5NxHkcF2iKXPHorv1pPcg23Jbv2dr', '45YxLnFQYyRQZg83V5w3au3ycR6D6VxF3prsyXjJKwz1', '3uEAdg78QFzMZpj9YbMyz28xDU9HGgSyRqR66teS7WQb', 'EVCVD3265cQeJPZSUk3ir8cHSe7bZGxXEHCxvGFM7Nrm', '7LAHdA3CMugC79fPvigPzSsr6BRNjH7pQnLQLGzgKNL6', '8RV6QRZMiGfT2Zu15BARLKHAGhvtrqoXSr8Aa8zsFAfn', 'HZJxjPoPBfoYXWLgefuqpYGEVowpP3DdKMpo4b12zLx', 'F3TRjJjqjv4UcXjWpNqCJWePiUF8sFFPBmiMMyDqbCuR', 'BhbktrKqFamcYswz1TafyNHoog1ARLbk1YJYLTck2H9E', '5UdH61rpcYA373TH1ZysuiZGjExYCdhwLjg7PeZ3Bgzt', '8kvbnKHdQHjy4A9msL6nEVCgv33Z1aByWd69QSpUPbBc', '6aNvTWbEY3gVGSPjXwc4UPeAkVn85dmhF5EAn3KQrxDt', 'FEaQi65Rh8AWEVjpY9dtdFbjqKDPkiQS8KjpWsmzUxMd', '23QU2i5vShiSJatTAmtQtq4YcKqBjSqMoFpvrMPPtZm2', 'EHT7SpEcYRoAjKQ8DHeFm9oPCnTeRjHjHxFPbCfu8rdP', 'Eoy1QLEqoQgmQCGiqQDiXiE3RGMKAjSx8hTHMcoJ87Eo', '71hLh5u2vk9xtSATZMjP5vhgtHtyxoDxjBAqtgeQtULo', '5ihG423P5HJ9BpiXm3jQrp26CcD8J46YpKKwVMdN9Xxx', 'Et6Q421Aa3ANntiReTt1cWbKheXZH1z9Enrcs52YD3nB', '5Kpgqwp84afAUL5DF7LjtVPWAvK7QdbkomWdAHZFp18N', '9JE5nbmX4qSGiC2u19ZBGxTvkvR1mur1PmAD6VE4HoBH', 'J8BGyR2zHe49Xo8UcGXwSUz6Zs6Ao6CLVqLQ6ECZ36Yi', 'HuiNaP3wNCLGJ7R6FXRRbncGgTYkybsnaWpej1Cz4akb', '9yM35DoJ3TW3vfzogEXupCYNtJjVHuQ2Po6DoUZNYeBm', 'Bqdr3tFJ7CfPqgSNV2EM1ik2QYnuimRXmGZAQqKHuyaF', 'BhbktrKqFamcYswz1TafyNHoog1ARLbk1YJYLTck2H9E', 'Ak8xVoMqJKZx1JBN2od42gvCqeVprdL8a6ry8WtUwp4r', 'A4mWLaK41W7KtxkAfaNpPPgqga5b4h9Z38TxjeMSkKTr', 'GoJSvFsTi4xAENBAdqpp7qGM7xtuSGKi3LABr5EbNcYR', '7wFB2SGBwjJfrRvnmVNe3G52dy8atWFyqXRvJxwUXovY', 'BXqKkyfwJtCWvg9p1doLDfUwiX9kTaTYxCRie9hgZDGy', 'DYNfuub2VhrHjVLxddzdgxQ9k2DYzqBVoPDARKEMVpzR', 'iVTuf3ni5cUG5qdp8T4SeixJ2XJMKsFMBX763AxM21V', 'Fr6dwWDU6fZA9WixDrYANBSyH2iTb8XokuoaV8iYWW2m', 'FSvfKn9nX8MpZgXkrfo9Ud5o3Xm7c8UUecGve8e5wvC3', '86nPPyKXxjMTqeEAhVMDWzPDovuMqZjxLi8b68Nm8i8T', 'BmJLMvDipCqaewKMWkkEhoEf3Rtrn7odTULUNKi84iXj', 'JcdRjnjg4mLxppH3nuKTompQ6TKwVPHm6ge5dFyT3DE', '3ubCAyHpQ5nGEGof49JfL1GbSQEpwgpxFsoboV6rapNQ', 'AeamfFaCJa2eWtUtWRgVfZTXF3xXUqZYrz7wtEYP5L9x', 'HD1BW2Jt4w99mBmBTMps8B2WRDnx7tUbirv7YTajXD4d', '5ERDarTk5RB79EWxeWF4dK7pRaiXqM9c9SB3MKckmzR1', '8sQDo3BRCPtmKf9XuEBie28zCxstNBHPpYbFGt22DG3j', 'CVycfVUX4tw4M2ArcnKJZEA2feAasJFQUBumD2aUhmvn', '6dnRUek3KcRjJssG38xmZnxapmNWkXbKfMu68bMD4ctF', 'Ayi6MmLqFmFmpjLic87ps3xxVq36fKw3G827Yck2oJM8', 'Ha3ruoJXeBaBesn642MyJRCnTroi5Hx9bzpnfivYxdVJ', '8u4iWTjJnbK8EKbMVx3qzPmNFzvu8mBAoQnttoyj1CRy', '9V3fpAJUBL1EKwjvcAQBGeXcvfydgUi2jVzbaLFzHsb3', 'GK3UfwRPUEGdLSq9igTvR86xU2YFgxMw7h7PSHuEimVi', 'AmoyDGE84cSBrJ9erByf59bS2NraHm7i1paqVXJSnpnv', 'Uxx2HmfZ7RLjfedcxyvFiJYcs4RzkbisPE1dztqT5Cn', 'EpG6VLyAajkHua3iu3xDbRUnYVzeGQC1NRK9XMhmSyE', '7K56MivxNmwdSQEDSt8REfJmBjGSMykAxFjgRchFiLc3', '9mDR9426iSX7epocZvzPQUGH99uE5mEQrkYrm7qv12i7', '57MHkkVaMyxWHb8KTc5WJBfhASaq4SeVfMsVxtLAbG3A', '8fe25ZQdmgftUoEKiYJxj2orWNqtiipepGeQCqya5tLn', '9vvtooXE6CrBT6Q1j9y4adRQkSykdP6RuWiQPjUTowdT', '8A3wpEYQR9kUrZofxLYBBJDvqx45sJAF8Utdvbj3FjRE', '9ZwEHL2jMcqucxjbAdn2oZxq3LW3qtgcShv7wAnyvwaU', 'AHbdKE8YKPoD2yeyh9jvN5QrMbpxCp2SYLuoN9NNNTWA', '7MPQZQ13tzhTToV3azKwxSHjzTrqtFV43o2hQZreAhZn', 'EnCpEoLiRVdZkwW9QhQ71FdqEoTVWnCMw1vDWF25F2wo', '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc']
10 ['CtX5jvVspj2iARfiw1N8yZJmBSHzshFHCKr7NU82jsnW', 'AMck8vKmJxqn76n6Szeu1AUxKKogFjjkmi3FZnnLhpbP', '3WeD1dPXd4Pz5FiNdAr4HPpA6BAmoZnbDEJQEqShWcgi', '4onaZ7ZWgg4wojWN5H7riCrXEXhVBJmXNEANKwZeqzDe', 'FoGPYj43AtEeGwnxnu4zoqDngpQvBwuU2VigYKkoK2yp', '3wGJ6MgnfEqJsXUvCjJPptX5zy821qaXjeJ1WV2PiHMd', 'Eb9N4HXwEwRyBwCax34LAkt7SudtD74iU89UAhSukVaj', '28LypfjnjCpKYHRpzSXA5kUbGz5WF7ymG44jsjQb7boH', '2whR8s4bAhBuTDTLy5VRD5w4WUspWGNxKWoxuB7kC4Rr', 'HdMwixykYU2M6C24QUvgH7rRJQn2aLMCtEdBTMe4QGYh', 'ANLwpisqfmpAVc9m4MiL5p63W3ZP392xB9ySY3XmbYvq', 'CidYb4QiCSKvQ3DK211sNrtHhLqQrvGifcs1PNqNTzFN', 'Agi9nz4Hd3NC52BmYkgFwwChhrhxdQh8SnzJi7wcjPfP', 'EveBS4ZQJkQoMvdiJUHmaZfRSWZipeNDDzvg8LjJjmf1', 'DbB1eZtQYmWbyWRa36qZfz928vzQmQ64G9dqrBrUeKgA', 'J7wpviNRs7eN1x1Gis2rDyr9cxzBW81p8QwWSVQYCzp6', 'BJigP1KGvCnGco78pCaGxW92BtE68NqGNwKQg4qPBR3n', 'CTZyT6x13wACYaKcqYPuqyNTKXH6UWWSBkKVoEwgg877', '7zceGFnT3BfHjVyvGSqHfZpDfVsZfWL3r7PAHJZMmRPF', 'MgTT9evQqqoEq6hnYWZaUsMfUko8e5uc5hXWFZMpq6q', '5mQ2ooqyN5o4McUt9YRko2ucEFqenoYpYMifLFHUQ7aG', 'EKhyM1gfewgwmoQFXULS593VdaPcBar8a9LjbauAhij', 'GoJHKCL5LjtFYSxk5hsVE78aeMcLUmg17dNMzRAt51GH', 'DL5DmM6XYX34xb1BVbJQAZGR85Z4Pqf7eZ4AeXpRSjW6', 'B8WdW6cUZTxgkeVLEyKCuDuTLwUYGp7CDiYTmKmMfHmb', '7fmFQ6rbvGN6cFwnky1LaQpCTJ8XAkCG8SwbXyuYU5iL', 'DFKq1Hehjioh9dqUEjrVgKMiWxZjMMMBa8C8ofq1XX6E', '5RwCSfNRJPtDYqiUmxLigfTxUteh4fguTUTgaPhbpBXn', 'Hr9DkpsJgLpyQzYuk4poFFY7uZj6hoMim7wdB5PjbNoB', '13QpePqWT68pKQthaYNzBcRw5j5RvWsHb8qAyFkbewU8', 'AgR7uTu9jHp3aW24f6UKU9m5wHnyLtd5xZuiUkQEmT8a', 'Dea14PHM6xRwxcTsKVKAS1Rvz3zAn1fhELS7jhuNN2tt', 'HLMrqNDQB4K81MQWkLqQq5TZAVnsAxyySLLawKkZE5yp', 'DFLGuMkV4kKjCmXetC533BJKtre5fTC4doXPDGwKttf1', 'Gw3DbLRjT86BAgVyP6uQwRNSnzj4vkwGVEizGkxYUNo9', '6WedwXazVNqgwRbHJyZGXw9G9z1XrZWp1hXefc4Ctcr5', 'EveBS4ZQJkQoMvdiJUHmaZfRSWZipeNDDzvg8LjJjmf1', '8KoqktzyVFwcVtvTmcspbPqQ1McDXevkTkZtibRq63cb', 'EiqDaUs2FnZZCh6S9ZbrvHcJPUzrzBHPf8qBM7C1BgB', 'HWiUFkdgu53gmxnCp1kipz8HqkJHP6ME8Mxm4oqWNscd', 'ApJjgXNUju8dpfynKKvrqeiVtsGY1QLGrmDZbw8XTdgp', '9kQyDPZJjE3qbvxvVrnDoGteWvmjAuMdVDZiYBZSZ3JV', '3rfgWLQWNkms3CK2kQwkcuhYwbih8Re2iACmWsLkvAAQ', 'CvBDJuwPEBJ1pobL4WMF4x9fyAbsKrjDvLMJ2QhK1aWE', 'FjZyTphDXVENddoY7vCsZp4ZF36rKgMyL3RQAzquwKZY', '6hyJXuS3BhKN54aiWkjBSo98aQdoWfrNvRHURGU6GoPX', 'Gcak7EayCx4StsT52UhLzJzfVBx1nuuteqxNZEJWKmwR', '9wMp9uskCFm3WiP6rRaGKSrdoxLvUKfKMu8PDiHxhw5s', 'C6N8yx1GqECWCudn8gxHY4ox8g7mEqS6SLJbjKNVjtsS', '5iFXLrwU3ABpRVYuDp3Db1iP6rQH1d9Qpw63ptYhs7oX', 'CF4Jn3vvKw3U2rLVzib84emZBwjWWUrMzDsDP7CoE7jJ', '7QPRSjDnkvh5mHkwZvkQevTesKMvq3FiHBz4iMyrQQGG', 'CdG51KNpHTbac34mM7qFreeqoan329WoiXJ8jdUiNdKM', 'm7qUKu2AoEBCNjvJfVt4okBfTAFy2ShjSEdzXCYjUrU', '6M4RDpACDdr2prWDuPgApcWkAKFp6vxYWNaSdioVrkNA', '7ygawjiQ1BztjzP9QMMtX4DXfMtYe59fjvMsJKVhyLdp', 'DbB1eZtQYmWbyWRa36qZfz928vzQmQ64G9dqrBrUeKgA', 'J7wpviNRs7eN1x1Gis2rDyr9cxzBW81p8QwWSVQYCzp6', '7zceGFnT3BfHjVyvGSqHfZpDfVsZfWL3r7PAHJZMmRPF', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', 'EhP4mGpPHiLaAoKz7HSzwm65sF972emgmYZEHsRFeTsA', '4tjWaeM8aXdbcqrwD2jzSHwy9NkD9TVkBKuH6c2momB1', '91ywVkqzLXo8xrCtdnjKWc8asnk14TPHpi643DcNdnTg', '8oNL11Z1KXVwXfXeKhx7FrUuCoXFtJDZJPUY9xbzoNjC', 'CgVesjzjij25cbgxXHdKuT8M9epdNB6v7fQSyGeF9VNY', 'BJigP1KGvCnGco78pCaGxW92BtE68NqGNwKQg4qPBR3n', 'CTZyT6x13wACYaKcqYPuqyNTKXH6UWWSBkKVoEwgg877', 'MgTT9evQqqoEq6hnYWZaUsMfUko8e5uc5hXWFZMpq6q', 'BbVcUJPJn6L2CswyKrex6NbdTDcYasFtyJbQESzJhmvs', 'CLMWnqo9xpjtWg6viDLxXDhKLQ7un1Tth4289HQHnsoG', 'DkBFM7moJgtYAXdhXadjw8YmNGjPBHquxzkAQaHUaF9A', '3YWtjAyscP58wmSWYwubpsUr1rNgekfqtf61qmAvdvqL', '4WpZkSmiw5mwHXkMsH2gpFdH6zYke4X8Rvbx5Ygi9w1N', '9UpdKJ15tUEC6dvcKohUSv63LfdLHGjA3NRNExi8tLRz', '62PekWPnju47HY7gPdx1H5HTuSCX7Cf6yiub31Awdpk4', '5mQ2ooqyN5o4McUt9YRko2ucEFqenoYpYMifLFHUQ7aG', 'F2eriUDvWwhuYn2wtBnp3oNgAEjHMsgR447Atsabh2A4', '6zMWLT1f2JB1X5dQpYYD63doPwyLR14veEAB7dymbLZb', 'GxbCjKFvAtVnV86cGZmzuwfFTawBJjqLZuZ96UheLCsB', '49TYF88mwgba7CowwfqVYbTudpZoKNe15jPaH693oXbJ', 'HEmvLttFUXztyHQH9g3PufzSY5tS2dA83uvUXhj672py', '9XCrFY7PSTopXw5V81Y5REUgdf2GjGi7b6BShAFMhesN', '8ctZ83oZ1qk7j37P4255krSKNhpMXnuefv6qPNChvbsX', 'CKW6uRyC34dYhgTrYQaJWSeL7Mq8Lz74MyuPvEEbjUGE', 'EKYnA9mhtLWjPBvByR4xaPdAEp9aAWX6NbdMyLUr7rbx', 'DB3vtZwq5kPUwtbgGzKdRbfZiVbudXvZofCeCezdjKNX', 'CtX5jvVspj2iARfiw1N8yZJmBSHzshFHCKr7NU82jsnW', 'FWx4Agtqf1tAvho5LpLctZqb2o66Vku87eaNwvgH2rTM', 'FoGPYj43AtEeGwnxnu4zoqDngpQvBwuU2VigYKkoK2yp', '3wGJ6MgnfEqJsXUvCjJPptX5zy821qaXjeJ1WV2PiHMd', 'Eb9N4HXwEwRyBwCax34LAkt7SudtD74iU89UAhSukVaj', '28LypfjnjCpKYHRpzSXA5kUbGz5WF7ymG44jsjQb7boH', '2whR8s4bAhBuTDTLy5VRD5w4WUspWGNxKWoxuB7kC4Rr', 'HdMwixykYU2M6C24QUvgH7rRJQn2aLMCtEdBTMe4QGYh', 'EunTEz7P7AuNL7zFxSV7q68sn66FDy9icYsGUSRz41Cn', 'ANLwpisqfmpAVc9m4MiL5p63W3ZP392xB9ySY3XmbYvq', 'EVN3XtZfMhbejV9eJPaAC1KBZru8ec5yVF2TnPkme1WP', 'CTZyT6x13wACYaKcqYPuqyNTKXH6UWWSBkKVoEwgg877', '7zceGFnT3BfHjVyvGSqHfZpDfVsZfWL3r7PAHJZMmRPF', 'MgTT9evQqqoEq6hnYWZaUsMfUko8e5uc5hXWFZMpq6q', '5mQ2ooqyN5o4McUt9YRko2ucEFqenoYpYMifLFHUQ7aG', '5egripSgJnuNZwmDqpAsNxya6LqxpAEtcuSPS9qdcwr8', '34dDNpjGkDDmWnPnTCx32zwbDwsbUPUtWtaQf9F3JxoN', 'GoJHKCL5LjtFYSxk5hsVE78aeMcLUmg17dNMzRAt51GH', 'BEq6sSF7FWBuQQo915xEKwCBfi3kFd58JQuHM4qsKFZz', 'DZxHgYwmECpHeKMqPZsm3Q2rh6dpqwqrSvazjKnfgZRm', '5RwCSfNRJPtDYqiUmxLigfTxUteh4fguTUTgaPhbpBXn', 'Hr9DkpsJgLpyQzYuk4poFFY7uZj6hoMim7wdB5PjbNoB', 'FHrCgbr8tWopkM3FxdKdH5rfp3r4P6rbxDWi7naPPWVY', 'mAqp7MYEN2JsJtQ4RvgJSPbS9sM9zcY5M4oEymEDSr9', '9EFgbbeCUGMo6Gyb5ufkLp2GE49Zo8skZqVKwkE2bJFi', 'AgR7uTu9jHp3aW24f6UKU9m5wHnyLtd5xZuiUkQEmT8a', 'Dea14PHM6xRwxcTsKVKAS1Rvz3zAn1fhELS7jhuNN2tt', '7GPBVsjnW1LXawdeVU61bcWGofvnnKPy8pG8Bj2C8nKC', '6haubKb72ZWngsJi1u2j4f46RsSyaRG9jkfg4PV2yfws', '4ihMauM7xhWEJQ5grJNwBWoMkpqmf2sVPHEebsLC2r4T', '4v41Cj7Cz2UZZP9a6NAANQcKpQNkfSpY1zJjx2V3aTq9', '8KoqktzyVFwcVtvTmcspbPqQ1McDXevkTkZtibRq63cb', 'D4jbdaPEm4PrGUwoGdyd7UA3rGo2SLS4NZdKHhafHvbv', '3XUaM4L3nhb6D5nVt2cxgWWTNdgrqbN2HetX97sq9Psb', '2QTVS6PQes37DZeV97EpFDiGTXARSKiJALqYgAbVZiRu', '2GHAZbdSMrycdQHFjhqoYxDHRLigBZDwnfchPGz4bup7', 'GkdbFaBMaEZd1YwtLuuBkL8S7wz2t91dKxKLQuEvMDdE', 'C7rgvavqkXok15kKutzSH85nsDTgMbAySP51EtdWow9P', 'FMLemb5xvMFKKoLMsfMUgHDsd8qUdZssWKbYS7vPWjig', '8d9ykKoQ4qjU3zr1E6H4hPwH54Pj5bZMHRcs1xnyxM4U', '5egripSgJnuNZwmDqpAsNxya6LqxpAEtcuSPS9qdcwr8', '4fWawA8xozUu3dxv2wFxKq5MgLAiJzW9NDskqXHQPmbr', '745hxBsv92E2QMYzp7ugAgMDmbhyzgumhZ5JFY7nrD79', '2bLJSJA3YsNMRw1et3BHevyQNAJNyLKYB4HhAZpfv9MX', 'CfHkYy4bpRpvdxrewhuSPBnnhfhxnR4YfdGZhhqpsu6a', 'FRjUqtDzb3ctDKDJEiAYuV9avmxogy3rprG4ohV4oA7Z', '43z11s6Xzcje2EMzcHvDQ9AC1EuSnoV2NdwhvYEVYpu9', 'BEEiqaPTeqMmHAFJ5ECSbHnb37oE2HDHDs9EzM7pquXd', 'CBCgLtzJbkQW2mi8r1WCn4hJpr5nRm1nCqkusTGkbjSH', 'HsPc5WxRwjbdqppc7XBoDAm4QqWgzjAs9DsFSHU9jf3n', '7zceGFnT3BfHjVyvGSqHfZpDfVsZfWL3r7PAHJZMmRPF', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', 'EhP4mGpPHiLaAoKz7HSzwm65sF972emgmYZEHsRFeTsA', '4tjWaeM8aXdbcqrwD2jzSHwy9NkD9TVkBKuH6c2momB1', 'CeGKta9xm5fyQgEp9Ab61oohjk5un2KRF8qfqib4ocuG', '91ywVkqzLXo8xrCtdnjKWc8asnk14TPHpi643DcNdnTg', 'CTZyT6x13wACYaKcqYPuqyNTKXH6UWWSBkKVoEwgg877', 'MgTT9evQqqoEq6hnYWZaUsMfUko8e5uc5hXWFZMpq6q', 'BbVcUJPJn6L2CswyKrex6NbdTDcYasFtyJbQESzJhmvs', 'CLMWnqo9xpjtWg6viDLxXDhKLQ7un1Tth4289HQHnsoG', 'DkBFM7moJgtYAXdhXadjw8YmNGjPBHquxzkAQaHUaF9A', '6vH7w3pBrfSQwoMTfyAe1WhVXAPC1SCJDmXGor13FiRx', 'DR97cTwkQV61Uid1JLWqio66UFR5KuSUwwh3Hq9z6nrD', '7Fvee1D3ydW9qApc9TtYeHLUXEiSxEwTmpN1k4crXxnn', 'DLLLmjmUj4aYiZmR6hrgaUM2ZXqqiAg8TCL7Eeh9weyM', 'F2eriUDvWwhuYn2wtBnp3oNgAEjHMsgR447Atsabh2A4', 'GtZZaw72nwZwWe3cA8zBxCjrbxLrWNb2X5811hedwwvv', 'CKW6uRyC34dYhgTrYQaJWSeL7Mq8Lz74MyuPvEEbjUGE', '8yDDi128CzKjSw2iPn3yWfeLd5wrPSZm8gBEN4ndwix3', 'EunTEz7P7AuNL7zFxSV7q68sn66FDy9icYsGUSRz41Cn', '4onaZ7ZWgg4wojWN5H7riCrXEXhVBJmXNEANKwZeqzDe', 'FoGPYj43AtEeGwnxnu4zoqDngpQvBwuU2VigYKkoK2yp', '3wGJ6MgnfEqJsXUvCjJPptX5zy821qaXjeJ1WV2PiHMd', '2whR8s4bAhBuTDTLy5VRD5w4WUspWGNxKWoxuB7kC4Rr', 'HdMwixykYU2M6C24QUvgH7rRJQn2aLMCtEdBTMe4QGYh', 'J7bJgrWKfDh83RvyDZaogguCGYfajzaVNKBn2LYTarQX', 'Fw7CebJgjxjqMHrFyyJ548tAfGXWdb9MnXuxZxCGLbh1', 'Ef95eSm1vCgvJPA2AAcFhZrAEmsqhPm7BxoaUbsSqQH6', '2kjre4m44M1CzpVZdHGpyGK1vU4Cq2C52qCAJuZZEiUD', '2vXUgViwCEybZuvZuGH9bjZpJVbiDNwqZnYve2tZ3R5R', 'CidYb4QiCSKvQ3DK211sNrtHhLqQrvGifcs1PNqNTzFN', 'FEafcgrtbBS6bXpnZM9yuGyys4auThgf7LB3fkiq1Qxw', 'EPjXjcg81r1QVELd6qAa7AeHwAm4i6nrugRnR2wfmgNH', 'DbB1eZtQYmWbyWRa36qZfz928vzQmQ64G9dqrBrUeKgA', 'J7wpviNRs7eN1x1Gis2rDyr9cxzBW81p8QwWSVQYCzp6', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', '3YWtjAyscP58wmSWYwubpsUr1rNgekfqtf61qmAvdvqL', '9UpdKJ15tUEC6dvcKohUSv63LfdLHGjA3NRNExi8tLRz', 'DR97cTwkQV61Uid1JLWqio66UFR5KuSUwwh3Hq9z6nrD', '7Fvee1D3ydW9qApc9TtYeHLUXEiSxEwTmpN1k4crXxnn', '3J1zvQdDJnZ68aGFjxuJxpUTDUFjWSy5JZqJT1z12XzL', '5uRoFbB9aqVv5rcPL93RNy7SosEoSzDxdXPqwBCrfHuF', '9oDHNr1jm2w9VUzZAp6bsvynRJVdL5TugjGPkg2Z88AV', 'FRjUqtDzb3ctDKDJEiAYuV9avmxogy3rprG4ohV4oA7Z', 'GQzff4MrxztxVAJwc3y5Ryj4TJhRgThYinBuhuUzG9iQ', '6mJEqpSyz6EzEyErroBRrWeMcv4sLUVYfBTCvujG8s3s', 'ByvdUWyKFnrzMExadRWk7VNTw55ofxsFtG3MFz2Doh6F', 'QXxNW4nDadvZvjZSbk7nd4qFGdg7tpqadsbFaL9K8tG', 'CKwoqtSvEiiNGsZUQ4DKfifJWzcR3wtNuztwayzWWUMJ', '7SbHAG9P6Eo8Evu2ocfnvbLZptxpNKmb4NXEJqMHL4ca', '8AiFxdkRLds27qVEWg9t46RdDGpzAvshA5RC57starE4', 'B4ntE8NWR8bLRZWPj9qfUv2KN8FtWwoQgDfbm93qmzjx', 'Fvr5K2fp4hBDK8eDYhtWS2az3taqydpUNXFtBhV9DS7N', '91ywVkqzLXo8xrCtdnjKWc8asnk14TPHpi643DcNdnTg', '8oNL11Z1KXVwXfXeKhx7FrUuCoXFtJDZJPUY9xbzoNjC', '6jSnVRP25bnDcXP1C5YfNvX6cBdDUYmnkZbEgaRXFbXJ', '7iF4Y1ZCqYn8VxRr1yCAtLnWZj96sctr3rKysDNYvWZ4', 'DQicn2cs1BC9nhnXZjBGfrfERYPw9WdCsYfKnU4QUKhH', '9GzndswNUDzDeo3SeuCzRN3EBwucogGv5E3NVCQ6yxZu', 'H3sTLiBBkTieijPsEs5BEBmC7STffGbLU8vnRW5KPRoJ', 'BbVcUJPJn6L2CswyKrex6NbdTDcYasFtyJbQESzJhmvs', 'CLMWnqo9xpjtWg6viDLxXDhKLQ7un1Tth4289HQHnsoG', '3YWtjAyscP58wmSWYwubpsUr1rNgekfqtf61qmAvdvqL', '9UpdKJ15tUEC6dvcKohUSv63LfdLHGjA3NRNExi8tLRz', 'DR97cTwkQV61Uid1JLWqio66UFR5KuSUwwh3Hq9z6nrD', '7Fvee1D3ydW9qApc9TtYeHLUXEiSxEwTmpN1k4crXxnn', '3J1zvQdDJnZ68aGFjxuJxpUTDUFjWSy5JZqJT1z12XzL', 'GrUnQrqjKXdQBP2naoxKD4vLgzKtwFm57Deyuib1iE7Z', '26B2sZGH43w9FE1XFS1DmqjYYcNwbhjnFHVPk3CHgwwT', 'F2eriUDvWwhuYn2wtBnp3oNgAEjHMsgR447Atsabh2A4', 'HEmvLttFUXztyHQH9g3PufzSY5tS2dA83uvUXhj672py', '8yDDi128CzKjSw2iPn3yWfeLd5wrPSZm8gBEN4ndwix3', 'EKYnA9mhtLWjPBvByR4xaPdAEp9aAWX6NbdMyLUr7rbx', 'NKwwDZJwf8bjuE66fRGj2txPK8rg7KdPX2zTQi9p65V', '9QjeGWUqJU9oiPEwAbwTv6WNDX9WRP9AphwNRsdP3MBV', '6BXXhf7boVmLCsJrLw2PhZeSUAnGc9EVvAPhk76e9851', 'Gn4L11s75Ezxvk6k8LNBmZbQoggMtNQdtLvHdmNkUecC', '8rgLXu4aKti7MYEcCxLYMo5QtFmf9Wek3TDvouTotLeG', 'ES8fnNSwKYxkXK9zcgtsgVkjKT5AtCQUp2UzXBTtuFZD', '4onaZ7ZWgg4wojWN5H7riCrXEXhVBJmXNEANKwZeqzDe', 'DH4JMrEquBKpUBe8zJMoyKWkojovRb5TGXetufhrvw5Y', 'GQg8P155LYeCxhrfzLMRBfhDa5bhZ77JonUeCuP4TKBt', 'G79MeXntkLoPCph5PcXoUEd1cMUsJzhZPCwu7dTig2N', 'YL71PpRUHSLqwQxJxoPubQYu2387poCwP6tXkLRBu6D', '8AwZEL4hfCaAB6z4TD1K57km1hMGLaAmZrhCuHXjZbgm', '8rgLXu4aKti7MYEcCxLYMo5QtFmf9Wek3TDvouTotLeG', 'CidYb4QiCSKvQ3DK211sNrtHhLqQrvGifcs1PNqNTzFN', '4L6meBjT3b3xMBXfU8qYWF9XDUtxY7v6zzg7vTmaBoDg', 'G79MeXntkLoPCph5PcXoUEd1cMUsJzhZPCwu7dTig2N', '3YWtjAyscP58wmSWYwubpsUr1rNgekfqtf61qmAvdvqL', '7Fvee1D3ydW9qApc9TtYeHLUXEiSxEwTmpN1k4crXxnn', '4Aqu6rcthMnomHVZiZaGfqxY5oYGBFMUkbpctufQq7w9', 'F2eriUDvWwhuYn2wtBnp3oNgAEjHMsgR447Atsabh2A4', '26B2sZGH43w9FE1XFS1DmqjYYcNwbhjnFHVPk3CHgwwT', 'FruEt9Sa8oYM64nBmQwKwA1UykZrz1V2zRsKG7k4Fb3n', 'Ck8N6WhE645rKqvNKicYyTrB8WcqtQSdLbiWmR8nEgUT', '5cvqwZDaUFAkVmmMh7Q7Fw1yjW28fv3wZR5TugBduPgH', '7GPBVsjnW1LXawdeVU61bcWGofvnnKPy8pG8Bj2C8nKC', 'GPLFLCUKcZGaYjW8pQhPpFf6oNEL9K7aGfonGwF9pxTF', 'Ex4khH8pUHJdH5RMXus6qrsm5qdukifPL8gdQG8Xmqdv', 'AprERwWyUDKtxzNEeL7ZnKtiaeKsmYQQrAoQDY1iBnJj', 'AE2bhphcvbE1ewE6GDakj4M9fMNh4r6vrYnjjyEb9CqW', '8d9ykKoQ4qjU3zr1E6H4hPwH54Pj5bZMHRcs1xnyxM4U', '6Bx653Uin3P9WT2p7BqgCF7353Ra2ZrgsM3ubZHvpYis', '2bLJSJA3YsNMRw1et3BHevyQNAJNyLKYB4HhAZpfv9MX', 'wLQHSLVSjUKAwZqKrN3KacSjt98ox45maLG8Cc9p4KA', '6FXdSqebE25Kvsa39my5kfDzGbVKgLfbTyY5rzMcyjpY', 'GCbUCXq3LMSAim3HgTigrHbVkr1VpBGAJGUFPwJuhCkg', 'Dvm9eKpN79qpmZSeB3Na1bhCF4rseYmitZa2MJWUymVz', 'CqLzS3MNQP82tp3AkCXmX9tYytDPxXnsW3b1HPbrsaRx', '2Qw8ndQSycQxjssiyXK6fjqHxEFTggZsFwXhPtavu1k9', 'EWSSL3EtHqTxZTpwSn67WnDWiG8ZQEXQkUDCbjmnETto', 'Dfg3RRzBy2f3XowxXS3HvHAGYFUgKQMfNaz3zyNaCU1i', 'H9csnmUnq7SJXG3Fvh6dsruwdJUTghsW7UgHeb2yGPAN', '7Q7DoXv54NHcPNSTSpc4PCPAsJDWUtyvmPbZnsMQuAvn', '2CSwuG73zQXYXUi8GybYhA6xgNbLzKmhdA3Wp8KNbPuu', '4HYeA8vXVtanuLBFyuvNWBgB2Y58iut9nLt1Qr1RMxuH', 'D9XuJe9pVMkZsNXxjwjgFjEpHhydrnz5rMM24gJhGowN', '9itXxyRknL468KzHzj51VVPYhaYDuoCTVGaHYjUXkExP', '2D6Q48pLDp2S9ww8GajGR6gVQFETRi2dG1s8GMphNFNV', 'GSvqPtic1bFgFJmoKnjUGM4JGE8N8Rg4kkSQUip6hUkv', 'ARALoUNzedzGFDRNSj1xbSQRsKehPPh5YzNRRXEUt28', 'HCpbHHQCE6GwY4YQg6zquuZuVyTdLLCuJBFnNWcC91GB', '3YWtjAyscP58wmSWYwubpsUr1rNgekfqtf61qmAvdvqL', '7Fvee1D3ydW9qApc9TtYeHLUXEiSxEwTmpN1k4crXxnn', '4Aqu6rcthMnomHVZiZaGfqxY5oYGBFMUkbpctufQq7w9', '26B2sZGH43w9FE1XFS1DmqjYYcNwbhjnFHVPk3CHgwwT', 'FruEt9Sa8oYM64nBmQwKwA1UykZrz1V2zRsKG7k4Fb3n', 'Ck8N6WhE645rKqvNKicYyTrB8WcqtQSdLbiWmR8nEgUT', 'HZcFkpF2b4mX4DhPWCZGUhXQbtciitbmR5weVkBT2Pmo', '64rfW7UDVjUJ563SaxkrYXFkFQe3mKUXApekTcqrL5vo', 'GaWnVDfQ85EM3o3NZc7C7wrfoJN9G7c8QVsA7sYnDRy3', '8xPz9BeUfmX5inH1rGtAfrdQ8JV6XsGt8rdr9t8eWqRB', '8rgLXu4aKti7MYEcCxLYMo5QtFmf9Wek3TDvouTotLeG', '2wmo7xurn32vrRUSCtwR8B8d35WkmUgXZH4nnj4J5gEg', '4ExjQbH3cetocYcHkqZoKQqJw1n1Y7FqRm8A9Cn6UQ6E', 'CzErmm7DWJZ8Wp1PiSGhNHnr6UbgPe4wxyTv29eAACi4', 'CtX5jvVspj2iARfiw1N8yZJmBSHzshFHCKr7NU82jsnW', 'AMGUsRswYiw6HXwYNpxS6xz6cbW1zphXTA2MP4y3aWnH', '6cKqxRf749RdTbm487kHty38uQXbUihmQfBHkhUgtrEL', 'A7ag1vkyixmSs5HwodByXpNuoXxbFwo846iLugpRmFvb', 'G6WPvtp3kDWZ8njvuh4jfFsZNqHyEgQq4FpSG5q9D41F', '8rgLXu4aKti7MYEcCxLYMo5QtFmf9Wek3TDvouTotLeG', 'Hr2CjJd3YXvXoG8xmMeL82YQPFFXaUaK8QEFNJz1z95r', 'AhnGag7zxvkyBtMbYoPqbc1qFCXLam5jX4wTLVoYZwne', 'HNRnk8DGZq5t26A1jXLRo8FmKpdiQa59iQRxvqsxkBpY', 'nvbGJvTunuZ68SL1rddArXrAVR4DJ5aJzfuw36nvBgF', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', 'CRmGtyA5QTUozWtMCf2dpeSAJWPdgxq24UucWHvn7YeS', 'J57dAALYsPX91x8hF3gfLxa1qisWFRtu4Ujefh8dpuQC', '6YbQgSi9563RYiUyCijsxKyxjRGpm914gCcKBZMAPMwS', '5CoCYnHDbbZPrF2uBmJ8wFFXgMyzhsNwNgdZmkxCnHhv', 'BA5vpBrKMVjUKAoHizRkMaULz7mCGSfcbfQyxc3YZvm7', 'HNRnk8DGZq5t26A1jXLRo8FmKpdiQa59iQRxvqsxkBpY', 'FA87YPbKJ312PnU4ATTi91fMHaX2VuBBwqzq74cF5VoC', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', '3J1zvQdDJnZ68aGFjxuJxpUTDUFjWSy5JZqJT1z12XzL', '8oNL11Z1KXVwXfXeKhx7FrUuCoXFtJDZJPUY9xbzoNjC', 'HJedE4JdEZe388aeb7AivHQrkn2cAFifGd7jme2uLnsJ', 'DQicn2cs1BC9nhnXZjBGfrfERYPw9WdCsYfKnU4QUKhH', 'CU519kDMJJgpHWVpEZpb72aCSYmsnRf5gnB3kUKK7Dvm', 'HeyXHXEQdbKZHTUkk3k9aVs6MK4t35MYqnMRJBozRRGv', 'Dea14PHM6xRwxcTsKVKAS1Rvz3zAn1fhELS7jhuNN2tt', 'HWiUFkdgu53gmxnCp1kipz8HqkJHP6ME8Mxm4oqWNscd', 'FRjUqtDzb3ctDKDJEiAYuV9avmxogy3rprG4ohV4oA7Z', 'Cei1wBHukyMbq6xFfNT9UpJWFDstuoPixjQTVU6YTpWw', 'FZL8GToNcV8k6wWF4j46uW4RaQHrGZb4DafpsUeK8qjD', 'A6rXASKxX5SP6aArpXJDNadVMU67wChTiXUe7VAzHpAV', '3pYpoMZ36tGfNYBBidKmrVHR6wa8SRvAJBH9JWDZFsr5', '3z2ZJn9PBKu7LmLodhaQhW8JqxAVEALqH3U8c7qRK5pZ', 'AVwNPuG3diMD6vXuptKnnMQR6SyzJaiqm4dHbat7Szgm', '288ohixVtbW66ByPsu5NmJweYfZVZirC3fNb7tRyjUrA', '5g93oyTHE7aD52ptSusjBZFAosNbUXpxJ6eHNagTDbop', '8oNL11Z1KXVwXfXeKhx7FrUuCoXFtJDZJPUY9xbzoNjC', 'DQicn2cs1BC9nhnXZjBGfrfERYPw9WdCsYfKnU4QUKhH', '6Jn9DtsAj8n14UTXzn8Nk1Yk9EozixpLo6rAP7RUaumP', '57q9szYoGThW5FVapcJG2LQkHnekwdgrS6XJT89gJyvS', 'HAuFjqvxc8QL6HxPa1zSy1MxpjsnxkUyQD82iYpD7pvo', '4skqGdJ4uv8VnpDmrcNwRzhaY74aJsigHNX8yWqtJQ29', '4P7i9Jbua5RdBtv5Fx2ZMmkTUGv7WzMJ13x2n1DHG35i', 'D2R7Ph6m1xm6wgQhKwxnzPpeV7pr1RbQ1kMP3jvk2rqN', 'ECSuzaLBWMm3TpkdRaMvaGo1dbqgd2PgK98r9zqd5vyv', '3J1zvQdDJnZ68aGFjxuJxpUTDUFjWSy5JZqJT1z12XzL', 'HJedE4JdEZe388aeb7AivHQrkn2cAFifGd7jme2uLnsJ', 'CU519kDMJJgpHWVpEZpb72aCSYmsnRf5gnB3kUKK7Dvm', 'Ck8N6WhE645rKqvNKicYyTrB8WcqtQSdLbiWmR8nEgUT', 'HeyXHXEQdbKZHTUkk3k9aVs6MK4t35MYqnMRJBozRRGv', '5WVj9duxKKMJ8qA81scpsCSnBzQbkU7ponMQK6TVJh8X', 'GXHiGc3xPvnpgw5N3dVoq8qsi8bjX3ZFPJmJTs1tUCiB', 'CYNoxWB7trkej7U7wN9hrrEvRn6WRZb4uJMe8urNBf6y', 'F2WfBiJkezmtGt3bXKTz2o5pUkPB71e2a7DUP5v9Rma5', 'NKwwDZJwf8bjuE66fRGj2txPK8rg7KdPX2zTQi9p65V', '8rgLXu4aKti7MYEcCxLYMo5QtFmf9Wek3TDvouTotLeG', 'HWYPzd25rsrmSPH2r6CnQvXSQefhPiXwM6froMDqUW2y', 'EdbYcwZnKFdn2iqhvR3AnPSjhwSBYTLVgX9JENBPinBV', '4YkSrFrKBSMGPvhwwRETAdqwKVh1yGLW4syU2DjWRWcK', '6cKqxRf749RdTbm487kHty38uQXbUihmQfBHkhUgtrEL', 'G7cQbzYzon64B65U5QURkWGYMYRrtHBk6DWmb2P8KgvP', '9ahyXP2xAEt9dodQ62oTTNs9kA9tWzq3JzVELML8a6qX', 'GVR6NbmNNakZCEboVMUHQ5Ne1sQDPuN665g9cC24kNZC', '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc']

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________GNg..7JV_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________eXc..Ysz__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________7Qd..8M5
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________8uX..E8i__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________CkR..hrS__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________7Qd..8M5________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \
                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________8oG..1Ti__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Bun..t95__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________7EV..PRk__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________6xz..EMF__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________GjS..cwD__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _________________________________________________8En..b7o
                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /
                                                                                                                                            ___________________________________________________________________________________________________________________________________________7D3..cho__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________GvP..uy6__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________7JM..iUh__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________6FL..YP1__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________826..BaB__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________AGn..gYS__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________5Zm..s7k__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________Ek4..ZSo__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________BTH..JBT__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________5JP..HHP__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________8En..b7o_______________________________________
                                                                                                                                           /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                          \
                                                                    ___________________________________________________________________4VL..TSf__________________________________________________________________                                                                                                                                                   ___________________________________________________________________EK8..1pN__________________________________________________________________                                                                                                                                                   ___________________________________________________________________CpT..s9i__________________________________________________________________                                                                                                                                                   ___________________________________________________________________5tK..4Tn__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Gf3..9mE__________________________________________________________________                                                                                                                                                   ___________________________________________________________________CH6..Fmk__________________________________________________________________                                                                                                                                                   ___________________________________________________________________DCo..JHx__________________________________________________________________                                                                                                                                                   ___________________________________________________________________6PJ..8PC__________________________________________________________________                                                                                                                                                   ___________________________________________________________________4te..XsC__________________________________________________________________                                                                                                                                                   ___________________________________________________________________CKP..8do__________________________________________________________________                                                                                                                                                   ___________________________________________________________________6hB..YBi__________________________________________________________________                                                                                                                                                   ___________________________________________________________________J6i..E8N__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Fd1..Ccf__________________________________________________________________                                                                                                                                                   ___________________________________________________________________ArF..Npe__________________________________________________________________                                                                                                                                                   ___________________________________________________________________6Uj..YKH__________________________________________________________________                                                                                                                                                   ___________________________________________________________________8Ln..bCq__________________________________________________________________                                                                                                                                                   ___________________________________________________________________417..HKZ__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Db1..EnC__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Abh..j8g__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Bia..MAr__________________________________________________________________                                                                                                                                                   ___________________________________________________________________4jC..Csg__________________________________________________________________                                                                                                               ____2VD..oTc
                                                                   /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                             /
                                _______________________________5m3..YzC______________________________                                                                           _______________________________2Gb..ZP8______________________________                                                                           _______________________________EPF..iNN______________________________                                                                           _______________________________DAK..Ch2______________________________                                                                           _______________________________3aS..hyU______________________________                                                                           _______________________________7v5..Ljx______________________________                                                                           _______________________________Ac5..aRL______________________________                                                                           _______________________________Awt..d3q______________________________                                                                           _______________________________GqX..wXD______________________________                                                                           _______________________________3ng..ZZf______________________________                                                                           _______________________________8UC..Xya______________________________                                                                           _______________________________iat..hQH______________________________                                                                           _______________________________6Dc..Lzu______________________________                                                                           _______________________________G5p..JCW______________________________                                                                           _______________________________EK4..MrP______________________________                                                                           _______________________________Byx..81Z______________________________                                                                           _______________________________DQE..7JH______________________________                                                                           _______________________________Apu..qat______________________________                                                                           _______________________________3CK..26K______________________________                                                                           _______________________________CN8..yLK______________________________                                                                           _______________________________Fpq..GFm______________________________                                                                           _______________________________34Z..3Gf______________________________                                                                           _______________________________5ia..Ten______________________________                                                                           _______________________________92Z..GFY______________________________                                                                           _______________________________Gm4..qXz______________________________                                                                           _______________________________Fpg..jSu______________________________                                                                           _______________________________AnF..FZ9______________________________                                                                           _______________________________Bzu..v4N______________________________                                                                           _______________________________3xC..apC______________________________                                                                           _______________________________EMz..Xj3______________________________                                                                           _______________________________CSD..hnL______________________________                                                                           _______________________________6N5..u8v______________________________                                                                           _______________________________GRc..WDH______________________________                                                                           _______________________________5YY..qC1______________________________                                                                           _______________________________CVv..T8k______________________________                                                                           _______________________________3F3..R7w______________________________                                                                           _______________________________GRz..fzW______________________________                                                                           _______________________________3xU..rwd______________________________                                                                           _______________________________FDE..wY5______________________________                                                                           _______________________________Ddw..rRk______________________________                                                                           _______________________________EsC..JAG______________________________                                                                           _______________________________D1Y..uLP______________________________                                                                  ____2VD..oTc
                               /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                /
              _____________FNo..xZi____________                                       _____________8Rd..8DA____________                                       _____________3JV..QtU____________                                       _____________CVX..Zjk____________                                       _____________268..zdm____________                                       _____________EkT..zEj____________                                       _____________5XM..7oy____________                                       _____________Bmj..LLv____________                                       _____________7vg..vHC____________                                       _____________3T9..hUc____________                                       _____________DBS..qWP____________                                       _____________3ob..RhB____________                                       _____________BSp..Dwb____________                                       _____________26o..kbA____________                                       _____________Fte..qMJ____________                                       _____________JCq..iX6____________                                       _____________EQu..W93____________                                       _____________EEG..rYY____________                                       _____________HZ7..BVS____________                                       _____________GMM..4Xd____________                                       _____________5CX..Xi5____________                                       _____________Qj4..ShP____________                                       _____________8Rd..8DA____________                                       _____________FSE..DTH____________                                       _____________DJA..bxw____________                                       _____________DcQ..x3k____________                                       _____________5Fp..WLN____________                                       _____________Ez7..Xoa____________                                       _____________BM6..91A____________                                       _____________54r..9At____________                                       _____________8MF..VGt____________                                       _____________HD1..V3t____________                                       _____________vjG..uAn____________                                       _____________3n3..hqN____________                                       _____________A3A..JUd____________                                       _____________HbY..Up9____________                                       _____________Cqh..Zj8____________                                       _____________BYR..1Fy____________                                       _____________GjZ..cVj____________                                       _____________Avq..JyW____________                                       _____________6YA..z6Q____________                                       _____________52A..aAc____________                                       _____________FDn..sRd____________                                       _____________DGo..z5m____________                                       _____________CSa..ep4____________                                       _____________JDR..Bnf____________                                       _____________E9G..8of____________                                       _____________8fG..2St____________                                       _____________DZq..62F____________                                       _____________6QJ..Bvv____________                                       _____________9y9..sqJ____________                                       _____________3P7..xrj____________                                       _____________Bfn..WPL____________                                       _____________jbx..hAp____________                                       _____________EDP..15s____________                                       _____________13w..w8t____________                                       _____________AxQ..wAL____________                                       _____________9qz..UyC____________                                       _____________DP4..V4r____________                                       _____________DYM..WWC____________                                       _____________CxX..8o9____________                                       _____________Fv5..2nu____________                                       _____________6QN..sr8____________                                       _____________5iN..ecJ____________                                       _____________2Nk..qEH____________                                       _____________9xB..zvb____________                                       _____________AtK..a67____________                                       _____________9N4..iuZ____________                                       _____________3zR..HaD____________                                       _____________2v4..msH____________                                       _____________AdQ..ueD____________                                       _____________5GR..jNR____________                                       _____________6gs..Sj1____________                                       _____________6NJ..rgF____________                                       _____________mof..Q5m____________                                       _____________Eby..LZW____________                                       _____________UJD..AgY____________                                       _____________7EX..fcy____________                                       _____________ipt..ETJ____________                                       _____________2mP..Vi1____________                                       _____________4bT..Khd____________                                       _____________A4b..76R____________                                       _____________5ou..QYA____________                                       _____________8Li..gow____________                                       ____2VD..oTc
             /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /
     ____e63..19L___                     ____3so..iAs___                     ____B99..o1v___                     ____2vS..uXh___                     ____YbJ..LHi___                     ____AEQ..tjt___                     ____AKb..WuY___                     ____5bi..5Hs___                     ____GrP..uTs___                     ____H7x..bhK___                     ____EYZ..TLz___                     ____Hgt..Jy2___                     ____2iC..HdB___                     ____mog..ezk___                     ____7xP..BjU___                     ____3AS..sQK___                     ____BoG..Mju___                     ____9UT..TWj___                     ____BfK..hpK___                     ____BxE..Qke___                     ____2VY..dpG___                     ____FWT..fXa___                     ____CNV..eVG___                     ____83N..b2p___                     ____8Ag..RXE___                     ____4AX..GA4___                     ____JDa..UhD___                     ____PSs..te6___                     ____5bi..5Hs___                     ____4SF..2mJ___                     ____5pK..iGu___                     ____4eE..JXB___                     ____Aw1..PDE___                     ____FvC..DvN___                     ____6Ge..LKv___                     ____2aT..9nH___                     ____CYb..XQe___                     ____2Xn..eJY___                     ____GRg..CM2___                     ____ATN..UCi___                     ____9Tt..JaM___                     ____AVQ..5gv___                     ____5w4..FCm___                     ____Ao1..jKX___                     ____B99..o1v___                     ____2vS..uXh___                     ____YbJ..LHi___                     ____52B..T2b___                     ____5V8..EQ2___                     ____H7x..bhK___                     ____Csy..TcR___                     ____mDt..kSp___                     ____5jr..uBh___                     ____AUH..VCu___                     ____4zj..X1X___                     ____CeU..2Ts___                     ____2Fo..q8d___                     ____9t1..6q4___                     ____HX1..jcR___                     ____2tj..mpq___                     ____4a5..Jca___                     ____ADB..nJi___                     ____T2i..RLx___                     ____4rp..Wje___                     ____BWX..Uza___                     ____5WA..5gr___                     ____7NK..oro___                     ____FkL..4NE___                     ____4SF..2mJ___                     ____5pK..iGu___                     ____7hh..QT7___                     ____FvC..DvN___                     ____6Ge..LKv___                     ____3gK..CUQ___                     ____7qX..xxx___                     ____DAY..ezR___                     ____HLZ..rqz___                     ____7VZ..YK8___                     ____3je..8dv___                     ____5Ec..2wo___                     ____BBq..vPw___                     ____H4g..WQT___                     ____GQu..npZ___                     ____9F4..ozP___                     ____8AQ..BH7___                     ____7wP..LKX___                     ____Fns..aME___                     ____7qX..xxx___                     ____3JR..t6K___                     ____ATA..YZE___                     ____Bte..MSM___                     ____Hjj..YJG___                     ____63z..Tt3___                     ____A8b..SxB___                     ____Auq..S83___                     ____5Vt..UnJ___                     ____JCX..EjJ___                     ____47H..643___                     ____6Ge..LKv___                     ____Fns..aME___                     ____7qX..xxx___                     ____m38..YY7___                     ____GEm..7KX___                     ____4HK..6fx___                     ____G7S..M8T___                     ____3eB..2dr___                     ____45Y..wz1___                     ____3uE..WQb___                     ____EVC..Nrm___                     ____7LA..NL6___                     ____8RV..Afn___                     ____HZJ..zLx___                     ____F3T..CuR___                     ____Bhb..H9E___                     ____5Ud..gzt___                     ____8kv..bBc___                     ____6aN..xDt___                     ____FEa..xMd___                     ____23Q..Zm2___                     ____EHT..rdP___                     ____Eoy..7Eo___                     ____71h..ULo___                     ____5ih..Xxx___                     ____Et6..3nB___                     ____5Kp..18N___                     ____9JE..oBH___                     ____J8B..6Yi___                     ____Hui..akb___                     ____9yM..eBm___                     ____Bqd..yaF___                     ____Bhb..H9E___                     ____Ak8..p4r___                     ____A4m..KTr___                     ____GoJ..cYR___                     ____7wF..ovY___                     ____BXq..DGy___                     ____DYN..pzR___                     ____iVT..21V___                     ____Fr6..W2m___                     ____FSv..vC3___                     ____86n..i8T___                     ____BmJ..iXj___                     ____Jcd..3DE___                     ____3ub..pNQ___                     ____Aea..L9x___                     ____HD1..D4d___                     ____5ER..zR1___                     ____8sQ..G3j___                     ____CVy..mvn___                     ____6dn..ctF___                     ____Ayi..JM8___                     ____Ha3..dVJ___                     ____8u4..CRy___                     ____9V3..sb3___                     ____GK3..mVi___                     ____Amo..pnv___                     ____Uxx..5Cn___                     ____EpG..SyE___                     ____7K5..Lc3___                     ____9mD..2i7___                     ____57M..G3A___                     ____8fe..tLn___                     ____9vv..wdT___                     ____8A3..jRE___                     ____9Zw..waU___                     ____AHb..TWA___                     ____7MP..hZn___                     ____EnC..2wo___                     ____2VD..oTc
    /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /
CtX..snW          AMc..pbP          3We..cgi          4on..zDe          FoG..2yp          3wG..HMd          Eb9..Vaj          28L..boH          2wh..4Rr          HdM..GYh          ANL..Yvq          Cid..zFN          Agi..PfP          Eve..mf1          DbB..KgA          J7w..zp6          BJi..R3n          CTZ..877          7zc..RPF          MgT..q6q          5mQ..7aG          EKh..hij          GoJ..1GH          DL5..jW6          B8W..Hmb          7fm..5iL          DFK..X6E          5Rw..BXn          Hr9..NoB          13Q..wU8          AgR..T8a          Dea..2tt          HLM..5yp          DFL..tf1          Gw3..No9          6We..cr5          Eve..mf1          8Ko..3cb          Eiq..BgB          HWi..scd          ApJ..dgp          9kQ..3JV          3rf..AAQ          CvB..aWE          FjZ..KZY          6hy..oPX          Gca..mwR          9wM..w5s          C6N..tsS          5iF..7oX          CF4..7jJ          7QP..QGG          CdG..dKM          m7q..UrU          6M4..kNA          7yg..Ldp          DbB..KgA          J7w..zp6          7zc..RPF          5g9..bop          EhP..TsA          4tj..mB1          91y..nTg          8oN..NjC          CgV..VNY          BJi..R3n          CTZ..877          MgT..q6q          BbV..mvs          CLM..soG          DkB..F9A          3YW..vqL          4Wp..w1N          9Up..LRz          62P..pk4          5mQ..7aG          F2e..2A4          6zM..LZb          Gxb..CsB          49T..XbJ          HEm..2py          9XC..esN          8ct..bsX          CKW..UGE          EKY..rbx          DB3..KNX          CtX..snW          FWx..rTM          FoG..2yp          3wG..HMd          Eb9..Vaj          28L..boH          2wh..4Rr          HdM..GYh          Eun..1Cn          ANL..Yvq          EVN..1WP          CTZ..877          7zc..RPF          MgT..q6q          5mQ..7aG          5eg..wr8          34d..xoN          GoJ..1GH          BEq..FZz          DZx..ZRm          5Rw..BXn          Hr9..NoB          FHr..WVY          mAq..Sr9          9EF..JFi          AgR..T8a          Dea..2tt          7GP..nKC          6ha..fws          4ih..r4T          4v4..Tq9          8Ko..3cb          D4j..vbv          3XU..Psb          2QT..iRu          2GH..up7          Gkd..DdE          C7r..w9P          FML..jig          8d9..M4U          5eg..wr8          4fW..mbr          745..D79          2bL..9MX          CfH..u6a          FRj..A7Z          43z..pu9          BEE..uXd          CBC..jSH          HsP..f3n          7zc..RPF          5g9..bop          EhP..TsA          4tj..mB1          CeG..cuG          91y..nTg          CTZ..877          MgT..q6q          BbV..mvs          CLM..soG          DkB..F9A          6vH..iRx          DR9..nrD          7Fv..xnn          DLL..eyM          F2e..2A4          GtZ..wvv          CKW..UGE          8yD..ix3          Eun..1Cn          4on..zDe          FoG..2yp          3wG..HMd          2wh..4Rr          HdM..GYh          J7b..rQX          Fw7..bh1          Ef9..QH6          2kj..iUD          2vX..R5R          Cid..zFN          FEa..Qxw          EPj..gNH          DbB..KgA          J7w..zp6          5g9..bop          3YW..vqL          9Up..LRz          DR9..nrD          7Fv..xnn          3J1..XzL          5uR..HuF          9oD..8AV          FRj..A7Z          GQz..9iQ          6mJ..s3s          Byv..h6F          QXx..8tG          CKw..UMJ          7Sb..4ca          8Ai..rE4          B4n..zjx          Fvr..S7N          91y..nTg          8oN..NjC          6jS..bXJ          7iF..WZ4          DQi..KhH          9Gz..xZu          H3s..RoJ          BbV..mvs          CLM..soG          3YW..vqL          9Up..LRz          DR9..nrD          7Fv..xnn          3J1..XzL          GrU..E7Z          26B..wwT          F2e..2A4          HEm..2py          8yD..ix3          EKY..rbx          NKw..65V          9Qj..MBV          6BX..851          Gn4..ecC          8rg..LeG          ES8..FZD          4on..zDe          DH4..w5Y          GQg..KBt          G79..g2N          YL7..u6D          8Aw..bgm          8rg..LeG          Cid..zFN          4L6..oDg          G79..g2N          3YW..vqL          7Fv..xnn          4Aq..7w9          F2e..2A4          26B..wwT          Fru..b3n          Ck8..gUT          5cv..PgH          7GP..nKC          GPL..xTF          Ex4..qdv          Apr..nJj          AE2..CqW          8d9..M4U          6Bx..Yis          2bL..9MX          wLQ..4KA          6FX..jpY          GCb..Ckg          Dvm..mVz          CqL..aRx          2Qw..1k9          EWS..Tto          Dfg..U1i          H9c..PAN          7Q7..Avn          2CS..Puu          4HY..xuH          D9X..owN          9it..ExP          2D6..FNV          GSv..Ukv          ARA..t28          HCp..1GB          3YW..vqL          7Fv..xnn          4Aq..7w9          26B..wwT          Fru..b3n          Ck8..gUT          HZc..Pmo          64r..5vo          GaW..Ry3          8xP..qRB          8rg..LeG          2wm..gEg          4Ex..Q6E          CzE..Ci4          CtX..snW          AMG..WnH          6cK..rEL          A7a..Fvb          G6W..41F          8rg..LeG          Hr2..95r          Ahn..wne          HNR..BpY          nvb..BgF          5g9..bop          CRm..YeS          J57..uQC          6Yb..MwS          5Co..Hhv          BA5..vm7          HNR..BpY          FA8..VoC          5g9..bop          3J1..XzL          8oN..NjC          HJe..nsJ          DQi..KhH          CU5..Dvm          Hey..RGv          Dea..2tt          HWi..scd          FRj..A7Z          Cei..pWw          FZL..qjD          A6r..pAV          3pY..sr5          3z2..5pZ          AVw..zgm          288..UrA          5g9..bop          8oN..NjC          DQi..KhH          6Jn..umP          57q..yvS          HAu..pvo          4sk..Q29          4P7..35i          D2R..rqN          ECS..vyv          3J1..XzL          HJe..nsJ          CU5..Dvm          Ck8..gUT          Hey..RGv          5WV..h8X          GXH..CiB          CYN..f6y          F2W..ma5          NKw..65V          8rg..LeG          HWY..W2y          Edb..nBV          4Yk..WcK          6cK..rEL          G7c..gvP          9ah..6qX          GVR..NZC          2VD..oTc

Check the root hash stored on chain

reply = nodeApi.rootHash(session, data_collection, articles_table).get()
data = reply["data"]
display(data)

chainRootHash = data["rootHash"]
print("\nMatching:", rootHash == chainRootHash) # data hashes are salted. The salt needs to match what's configured on the network to have a match
{'signature': '3zQLpiZfxMkr7RbVbu1LwywrGb5uFgNEKSMQHEqnUhuHhY53oM9Sfow6wF4XyzWjprRjX4bSS2iYfnZMVTtFtjyw',
 'rootHash': 'GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV',
 'timestamp': '1691601135574'}



Matching: True

Verify root hash signature

signingKey = nodeApi.sigKey().get()["data"]
print("Node Public Key:", signingKey)
Node Public Key: GfHq2tTVk9z4eXgyXVRvnn4hnpsfgFCfen9n1KoqnLp9ANhnmj9BsdJvv9Gg
toSign = rootHash + " " + ts
#print(rootHash)
check = nodeApi.verifySignature(rootHashSignature, toSign)
print("Check signature from merkleTree() call:", check)

toSign = data["rootHash"] + " " + data["timestamp"]
check = nodeApi.verifySignature(data["signature"], toSign)
print("Check signature from blockchain:", check)

# Note, verifySignature isn't unique to Weavechain, it's EdDSA public key cryptography and the verification is done locally
Check signature from merkleTree() call: True
Check signature from blockchain: True

Create a new session

WEAVE_CONFIG = "config/demo_ailineage_researcher.config"
nodeApiResearcher, sessionResearcher = connect_weave_api(WEAVE_CONFIG)
{"res":"ok","data":"pong 1691601135704"}

Get some tokens for testing

reply = nodeApiResearcher.compute(sessionResearcher, "gcr.io/weavechain/faucet_once", COMPUTE_DEFAULT).get()
display(reply)
{'res': 'ok',
 'target': {'operationType': 'COMPUTE',
  'organization': 'weavedemo',
  'account': 'researcher'},
 'data': {'console': '{"res":"ok","data":"pong 1691601136442"}\nDone.\n',
  'fees': '{"USDC":-10000}',
  'computeHash': 'HQ6z4kheRFZsZ1ne9FmpuFVX8vkY8v4V29yeDTzs25kE',
  'paramsHash': 'GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn',
  'WEAVE_API_KEY': 'c4a65d3625ab441296c7492b53611a8f0827a41d78e52746',
  'taskId': '251de82065fc47b0980c5fca8f655374',
  'consoleSignature': '2sdJDwcSKjsvpMDET27DDW4QqvQ6qKcAMMutULWwXhevzFg88PFUWvcFjFPdWAHp8rnbBS8nrSmSYJ58ghe3PV9X'}}

Check researcher balance

account = sessionResearcher.publicKey
reply = nodeApiResearcher.balance(sessionResearcher, account, "", token).get()
print("Custodial wallet", account, float(reply["data"]) / pow(10, decimals) if "data" in reply else 0)
Custodial wallet weavenGcGQRs4tLvgKAGBMDb9ZjhRd8VeBiQ9r8kX5sJwVMBt 10000.0

Train a model on the data

In this payments sample the researcher will pay 400 USDC and each contributor to the dataset will receive 1 USDC per article

reply = nodeApiResearcher.compute(sessionResearcher, "gcr.io/weavechain/train_model_dummy", COMPUTE_DEFAULT).get()
display(reply)
{'res': 'ok',
 'target': {'operationType': 'COMPUTE',
  'organization': 'weavedemo',
  'account': 'researcher'},
 'data': {'inputHash': 'HPyYW1p6Ze5LwH33dUy7t16YWjBKusosUBaqVdjgC7bF',
  'console': '{"res":"ok","data":"pong 1691601143564"}\nDone.\n',
  'rootHashes': '"{vault={medium_posts=GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV}}"',
  'fees': '{"USDC":400}',
  'writesSignature': '4qy1wDsMnSmzgkcy7K88emGNVbVkvh6GnKoSLtVs8FZfnNRJcdmk4VDbACUp7rHFXDJDQfE4rfrktxwzFVBhq3oJ',
  'outputHash': '36UaD8YjacqVUxbbCoAssrkruugmmAWjC7sQLvKEJcNC',
  'outputSignature': 'LJTyKJH5Sa9J1V5JyX8QgU5FRWJqpdeN4EmnsokxyvqxmaML7fjWRi1X3Bo3GehUSty2aK54zZRjhimpYuU9mcz',
  'computeHash': 'A7QbDaGoRziyxW2d8QCn4pPZQGY92RVcHRPnxeUdEkCx',
  'WEAVE_API_KEY': 'be325a4cabee43ed9c79b7bdfa9e576e5d48abf92eb06f65',
  'output': '{count=337}',
  'input': '[{"hash":"hw/qXIEEVvZonVH0Eqi/WUguCgGpqQfqYFJXjLzaL5k=","scope":"vault","table":"medium_posts"}]',
  'writesHash': '6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN',
  'paramsHash': 'GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn',
  'writes': '[]',
  'outputSignatureTs': '555XwrvzWGPmZnJmF8KFXyBTa3Us9Co7jiQbZFrbRNmiMz6jKCisVnmPxyRnV79E3v6B5zC8LYuYR7zUD3vZkKzz',
  'taskId': '1f79a579e9a948528bf2ffe53c8d84fa',
  'consoleSignature': '3WQatMFKUKkvM5mZ7gs5d34vvV36axBgSBPioWT8vBNRubAdKCRnMkifmMkCG7EkhP5qwBvGpCs28KpXkdCJxj5q',
  'ts': '1691601147577'}}

Model lineage

task_reply = reply["data"]

print("Compute Task Hash:", task_reply["computeHash"])
print("Input Hash:", task_reply["inputHash"])
print("Root Hashes:", task_reply.get("rootHashes"))
print("Output Hash:", task_reply["outputHash"])
print("Output Signature:", task_reply["outputSignatureTs"])

signature = task_reply["outputSignature"]
match = nodeApi.verifyLineageSignature(signature, task_reply.get("inputHash"), task_reply.get("computeHash"), task_reply.get("paramsHash"), task_reply["output"])
print("\nSignature Match:", match)
Compute Task Hash: A7QbDaGoRziyxW2d8QCn4pPZQGY92RVcHRPnxeUdEkCx
Input Hash: HPyYW1p6Ze5LwH33dUy7t16YWjBKusosUBaqVdjgC7bF
Root Hashes: "{vault={medium_posts=GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV}}"
Output Hash: 36UaD8YjacqVUxbbCoAssrkruugmmAWjC7sQLvKEJcNC
Output Signature: 555XwrvzWGPmZnJmF8KFXyBTa3Us9Co7jiQbZFrbRNmiMz6jKCisVnmPxyRnV79E3v6B5zC8LYuYR7zUD3vZkKzz

Signature Match: True

Check the researcher balance

account = sessionResearcher.publicKey
reply = nodeApiResearcher.balance(sessionResearcher, account, "", token).get()
print("Custodial wallet:", account, float(reply["data"]) / pow(10, decimals) if "data" in reply else 0)
Custodial wallet: weavenGcGQRs4tLvgKAGBMDb9ZjhRd8VeBiQ9r8kX5sJwVMBt 9600.0

Check the balance for few of the authors

for i in range(5):
    account = df.iloc[i]["pubkey"]
    reply = nodeApi.balance(session, account, "", token).get()
    #print(reply)
    print("Custodial wallet", account, float(reply["data"]) / pow(10, decimals) if "data" in reply else 0)
Custodial wallet weaveyHb6WF1WBk5ZMQpMm1eG9uugi4MXnSgoAetTARcR9izE 4.0
Custodial wallet weavebvDnoef2cPLbRtqqH5uA2M1t6Svdz1C3d8zx43481W3z 3.0
Custodial wallet weavejZRDVDvctwquT1eQGM38v1tHubtPryRxq6K6rniVhkFq 1.0
Custodial wallet weaveiWV2dK7p3AHhBkwMBjPqpM6vVM78D62HdUUBYxmMzdKb 3.0
Custodial wallet weavez2Lr5qDk5LC3zPUxFakrxyRJUNb1LQ9QzEDHRG2Gm8ix 4.0

Verify inclusion

With SHA-256 hash

Compute the hash of one of the articles

row = [ sample_article ]
recordHash = nodeApi.hashRecord(row, salt)
print(recordHash)
2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc

Check the hash presence and validate the Merkle Tree

reply = nodeApi.verifyMerkleHash(session, tree, recordHash).get()
print(reply["data"])
true

Or get a Merkle Proof for the record hash and verify it

reply = nodeApi.merkleProof(session, data_collection, articles_table, recordHash).get()
#print(reply)
data = reply["data"]
display(data)

hashes = [ h.split(",") for h in data["proof"].split(";") ]
display(hashes)

proofSignature = data["signature"]
toSign = data["proof"] + " " + data["timestamp"] # the node signed the proof and the timestamp
check = nodeApi.verifySignature(proofSignature, toSign)
print(check)
{'signature': '3UxXK4pv34y49y24Mz4U9KCUREfw8sa8b3hEgpj24n2H2ggxiDp5VYfXn8tX7Lg7pBp9beV5PuQYL91kBsv7HgmM',
 'rootHash': 'GNgTXXfKtbH9ZwkKVwxTML7gd91FZLY6gnaM5Kr397JV',
 'proof': '4jCJGXd5SfZWQaB1EoxcLGTtYwWLKL9Z4RvUvCvSdCsg,2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc;GjS8hiFKJMBbGERrnFdx7qHjvgBzuvE93mXzd9anbcwD,8EnykTr6mqRZyiDnC2NznsZnHmugYU4MxEqYPDdu2b7o;eXchZzqyGmuUf5inuchRjwkKX543MHi8YJUSZg4xYsz,7QdfPwEZcCSNym8Tmm5MaN4imUPSe4eCroeHnRp4t8M5',
 'timestamp': '1691601151380'}



[['4jCJGXd5SfZWQaB1EoxcLGTtYwWLKL9Z4RvUvCvSdCsg',
  '2VDBUvpuQsZsxK79GFH1c3dujLG8GbwxGo2Xjxd3HoTc'],
 ['GjS8hiFKJMBbGERrnFdx7qHjvgBzuvE93mXzd9anbcwD',
  '8EnykTr6mqRZyiDnC2NznsZnHmugYU4MxEqYPDdu2b7o'],
 ['eXchZzqyGmuUf5inuchRjwkKX543MHi8YJUSZg4xYsz',
  '7QdfPwEZcCSNym8Tmm5MaN4imUPSe4eCroeHnRp4t8M5']]


True

With LSH + SHA-256

Check merkle tree of LSH hashes

salt = "salt1234" # Same salt used for records hashes, this can be improved to have different salts for *each distinct writer*
digest = "LSH(10)+SHA-256"

filter = Filter(None, None, None, None, [ "text" ])
reply = nodeApi.merkleTree(session, data_collection, articles_table, filter, salt, digest, READ_DEFAULT_NO_CHAIN).get()
tree = reply["data"]["tree"]
rootHash = reply["data"]["rootHash"]
ts = reply["data"]["timestamp"]
rootHashSignature = reply["data"]["signature"]

print("Generated at", ts)
print("Root Hash", rootHash)
print("Signature", rootHashSignature)
print("")
showtree(tree)
Generated at 1691601157023
Root Hash 5DnyzKSBmxcsVD32V5bE6AUxuNtAAx8mrcsPFK9EbVn8
Signature 5hN4D7vJuHUtYm62WcqaQBHduVnPZ2P7DKAsiWxXCX3wWSokLJcrGQibqz4N1yM9EjdF3YAQY7uoW2Bj3FeHe6kn

1 ['5DnyzKSBmxcsVD32V5bE6AUxuNtAAx8mrcsPFK9EbVn8']
2 ['8tXAuHYtu6mkA9QGTMpXjXdzeKjYKEEPUYn3GuMhcvk9', '4ZSiXeC5uoJiJPLf2T8cgvZACruUYhExbJhDB2pNjC5p']
3 ['EL3GfDjJQQqpFPgpgsyTxob72EkuZ3Ghhpu6m2bXGT6v', '38cjBvSUFjv5KHKPQLrnsqVfzWBtp5RCY9TaNLy8Gwdv', '4ZSiXeC5uoJiJPLf2T8cgvZACruUYhExbJhDB2pNjC5p']
4 ['4yULNsbmvt1u6bKvSvoRbH7DopXKMojm7GvoJ3UrtitK', 'Cx4HjHHehQ5m1ihwkh953UEvRvMFjQYsWShD4WFZrcpu', '8dveuxRKcKrpN1JpiHyiY8U47ndmhTAKJuKKih4KAHVX', '37WLFxzvwcfZoYAFZgvSCfxY1aeHmXhdnnnBmVDgo57o', 'H6c5BYzru6r7Uuay4NrffADTN78qPPQ7YeXj7RJ16TPD', 'DGrVuXYdcvNBvjZiQHh2NKemFjYyKfbtHQthTHMWMwZe']
5 ['7mLjHdYTpvRLo7yUrZnk9ex9pTkGfH5MRmnXeWkkJjsK', 'CiUQWt4X5SeQT7s7UVY3BWcZ8qvZ49ENkuXiSoKcm3r8', 'DGXfe1jerX79pp3XbkQbBuZhsnRRGZfNUrRsPxkizsUL', '9skdsALnq3Tu59ieY2pTUns28EicUSWaXkzrhYzF8bdN', '215rv4b6h6qLPfCwTvXw2Ua9ZhiAzge3tmwgLGZCuPtY', 'CAprMrzbNcRHpD85sJeFtH7qUG5ctMAaVjtqkTq8xrJD', '7cEPBG4zGSRZNco1bN5H39uu294kxXtrdq24ntfLvYk5', 'CJ4GuTDqcfKdXF8GE38rk6T1yb6A7aFH7yHv4bDwfuUK', 'J1Hg87BCzZT7TqvnVV8F2bjg2VmjUkSfcyLz41a5civN', '4jjTfXeXx3SSnPGtTWyGhb55nBd4CSgaTKAq72bvB74N', 'DGrVuXYdcvNBvjZiQHh2NKemFjYyKfbtHQthTHMWMwZe']
6 ['CND4exZZbJpUS37P6eVZauvZfZ76DbuLGuaUYmGvxpFF', '4CRd3YRxri9wfPKUUW5UDMT7xvtAERS2Cf7ufJmyztJ1', '3PG8wSPpwxqpWU71Fqx6Bb4GgxZRE3NKU8QniU6SL6Zy', '6Xpr93DypuyEikiyR6w2zKb8WFXUZk5edVFrVxFvH4Mm', 'Azo6R39Pf7HLzdr369yM9rg4Tmu28fLCJDQyktsZBjZ1', '5c1VV866TGxQ9NhvUR2PsUfFiGr4995QMHn6T7xVs8MF', 'HmSHTCE4mUBRNLxQjQpqG4BWMSvW2dTMCbxbCngy7wLv', 'FRxFferiA6zaeQy7LYcDnZWK6BmkMRSwgjYsfr5JMw4M', 'G1UKKQRVBXZu7ru7KT5GPEN4nGsAxZGseeHBXGYhGrW7', 'FFHZZ9LoM3nfzirRp5G4dN4U6rsH2dZqMqxxTLtQvLJy', 'GG6ESrvibgcnukgxirQ6NNusaZ85RdyQneCQwAGc2kWy', 'ECvo3LB6xDdiMhwL9ntZE3gytwQ3f3BfH7GyNUwFwtkL', 'CXVcm4HHeE6GMgCxpaVbhHqUxFV6Z5FWMkJUQov5sRzi', '6qyDjVHYZfFwyDP6XRkY3WzobN5eZUgsSs6N1hf94aKC', 'GreJaBHkC4Q3g9hxW14oZYF5ZvEYHPQKnv1xbDSoD8QE', '8ou7AXQUU19KXGYKnAv7DeNYnYVZ4h3CQms6Cr85eNLW', '5BxmXrjnzZNGUs4bdqCjYe1xJ4vCSbTPYimKiX1UkuzT', '5F1XmeB2ctvEmKE8tQEH956gNcgAzvFmv6TxD1MmdDkp', '9xE58CxcjJsKHTbWexm7B6pN9au4r1QKGep1Ui37Adkq', 'CkrbWb7WQDyEciBxKJRs9GL3btjHH3LhH2F929hZ3syR', '2GF5o2kbjto9qhrV3rDoPAycLF4b2kQ9hGXTBE8DqnCM', '65zuMnox82FoazB1N4reAyPfTQE7ChAMHzS8NG4Rm37D']
7 ['3g2GfWGaBwZuUdy8K1ogwB3ojJb3ErHKPQpXUvSYgQRQ', 'Bj4dbeBbcV1DuQuw8fNHGvdJKaFvsHpSvGsA81h8rFK7', 'BCBhPthi3nQhq8YXx51XkWizcuRx3xSDqey6wYHnFws3', '3fXH8VYh8p3RvCNtJ9tXu58sAjCeBPkamKQtpS19Uq7g', '6pf3yhckErMU7gLD1tf4XMb3LLAdPPtfbATCdiF5zVWz', 'GRTVbxN8vrRUp8crt4uiijQdEbAWEYGykQzntHNPes4d', '5XF7YcHE2DrRtGtsyHdgkwAaocbo1xcyJfortLubha9q', '3E6Z6aP3nyco3R8q4e71b4C7PXq7Zvxsh9X4yZzGa5p8', 'F7YpKjyVwK3Nv47d4NK5BZRJ5LkyKmpYdQuyTHzjWp6V', 'CfHCmSDkmEEvdj542r5CBii3CanaN5xfRHaf2dX1qxKo', 'EN2cmRkVsyrUF4PGRWKoV79ohMbgdgRBcxFFDDcsBjEB', '2gqgi3CWfzfUQLXsfABBYRNVZaUgmfubfw1XoQbYKrqB', 'Hh7T9Kfu61cXZCztkvn5wYn33UHn2oYDYciheDYz92Mo', '2SfgwUETkXRXebkFPeZ8jwf22MnCUYWsccNCQ5uoxctW', 'BRZzYsFqWY154qoS95okLR5ejqeyZRXYtkLumT2qkwQg', 'CGkx4kRnZZKRRFo8BnXmaFUh9VXM1fnFDFdoSZ2yBhZQ', 'J27zCiYdeejVzToAsnvf92xtUR7eU3srVpcsqHVhRNFd', 'GMGJ5rzNBLqStu84XXTqLt7c6ZSMYzNEuKtppm5sW8Q6', '8YHiBeEDYXeWcCZXXgdpQ2QEVtH9anrzxji5w2sBxRii', '5sEMmkzJwggWuni6vHFNhHUXaMa7GH7xHF5MQK1ZA3CK', 'DtKccqfXT3s5SNYLixzS6RkCfX1py9nmYAWEWZ57aDPw', '6JEEGmNSyBgsR3r5Gmy1wrNJ5imNqSnsHurybbdm8KHt', 'GiSDi6Rw8U4k5aKXAkNbW7S5yZKYacXCaAX7PX2RUzn1', '6PT4kHSzM9ywsoBEoLyoqatkSYu8cBZMm2QQZsQAHpcG', 'H4ftP3b5EddnA62xHq8S4tKyjswq6Qbwk6UXiW8LoNqP', '2SKC2t9PVgMhhq9pc9ZdzEMoGqKfcVkVXZFxT2mKXKf7', 'CMAmDTPGjxw5zB8DE7WYQqUGNckBPXaujhC8NCRowmjy', 'CdjnycyLfzWqyowP33ybcfxa7rZfCqjmKvjLVvsCJ6g2', '2uodcynQ51innctsffTDC1M4hyadChxogTYpN4qwtweQ', '2LEpHmP8w6jGAvtQxTscLvR9UfMAES2AxKaFGrhR8iym', '4BNpohqKLJPBFrKErS9WDRVittjZQp8fp2o2BtPzJmmK', '7Dj8jMXrJrhCTMZh75sszNExqNpoB9GMq5zrwpU3tG1h', 'FLNo4i8fHo98oTuFH5r7kXhHgWwf8uZAx55NeT3iKXu4', '7L5Yf8cCAPqh9wu6D4BsSS3myNe5THALv5weBZBXPBpx', 'G7ZtKYotoXxZ1CiPCj2xjE68bfC7oxeKDQVg4At2S2mk', 'BCe9RpBbZ9F1q8NKKSZz5KgT1e5EBNXhLjpxKiutToaK', 'ADtbXGs8Vz8xjYpMtC9wwt7HYDTtkHr3PwzaPoKtMv7e', '8TVGMTBi4YCg2SJ68KiaYizZf18kVAc19RBKytkbTVfS', 'C6R3RnmmzqAEv5o4iHsRE9MdULhgF6QnRMjDAupdK7yv', 'EBWbhzgNKNUi9DUBD9UTEPdNqZuS3vU1SSdaDqA6b2L', '2fvM8PhxUq4SUmAJkMaFdtFX5y8WymhVDtnyLmeLtZzM', 'JBnfr4QPNDeyZEVX9am38SGcJB9ykZ3XgmXcDEhMkzPo', '65zuMnox82FoazB1N4reAyPfTQE7ChAMHzS8NG4Rm37D']
8 ['7TpCcubzqWskGDDrGKYzuqDDJHBboEFJLcv3DajxSQ3t', 'B7Y1n4VYKcGDtrgyQ2JwnWBR7tyjh6gbPm4Q5hVZ3eKe', 'AVog3iVnibDXLSsqKoZygnJxgkPP3QM8DDQTzba3NTwC', 'CfTfzt5paaHBBefhxrQwmR7DsbTuLYTfvWT9dBcVkq7W', 'FEAhcgxigPaZpDVKbKGKsPwkHPgdQKbpZEJWvpsxiWf9', 'HEXYhoDRYjH3FocmwQ8ncKBt4TkvZsvQWyeGP31ppQBo', 'pezu8Dx4XHiCvJW87ccuBk4xYCcgECuL54sVABaGvYm', '7vPyjEcwDn4DJjbFBipzxhVS5shGoMFdVCKzxpGSZ8ft', '4VdMEH4h33GyWobNoHUS6xdLt6DM7chx8n3UrE8ZyS3m', '2NfnAMhMTVk2EduJATeWTq7FrTQiJjdq7GzAn5AZqRcM', '4Vcyaxt7WZZx9Qzvkq4HZAUUPjkjmrmZRzGZ5o8zAVrK', 'CQRpnL4otPB9qWNKMiPhAvL9DL8xmBeveVQUg2QZ68ef', '7XTXP9s3psgpvANG5hbNPRMrMaw6djLiFcJozYktrMUC', 'DhYBc1C99kNGGn1rrAh6dnf2JoVyuRnL6dgoxDm8GDYU', 'CuEofjziVMpwzJPPtUBvZkjVcPo45Qwck6QcAKTfdtqm', '62h89uBNC3UvNYwagKLjgLuuzeUcakaqvw7zuqLmTQiX', '7QrXkTA2ZzkmeD7pJDqZeN4Gy6qT9tnDKxpRYnSeZqDk', 'FScqSrg9oYqZro72vao7ycPBTn3GesAsgx92BwgiTYSC', '22C5VZFp9JVZyLTeA5k4ZrXRYF6QtgFDG9MZ1aviv4F9', '6jV1kS7af1tFQ6HncUaVBLaqt6L3ygY3j1XMBoB49KDM', 'ApF8VdymwfxYgPvefpBCDNJkFUo8rVqsPGAAtbZjbWkh', 'ESPuAX4o9LfHeBuXaVBwrfnhCT65JXWGEP9vdKjT27bf', 'B7Y1n4VYKcGDtrgyQ2JwnWBR7tyjh6gbPm4Q5hVZ3eKe', '29dkzkC1PnvTv3uSLvoWhFivdHQAeyC9yv1jPuowuZQa', 'JE3M5SAvmJXhi1U2ppKDNLjCz76cmvtPrgmzTdGpSkKb', 'GTYWvs1YUsuJgRrKmFXCtqWnxVw4aAVq8fffGcWgrV1j', '9he48AyMfAuksqymVYbXusNSmohk39iB13DgtNCPKgdc', '34Cdue5kThi8s7QwUnGXS5fzBwvijgEGmKAYDySaQ2jx', 'BizedqknzTvY1nzcR8a2nR2Q7LNTvXvGbMWUGmCaTjcp', 'AaS2zJAQMsmnBqwsdAXZZonp2m7WqN2v9UrZSvXWFMPk', 'Ae1VTE9V2NfxF2SmhN1TaLQ5yUAH16RSQJ6an7r3dsij', '4DeZCyGZpqRnUH5Es37TWwDQo5xcWzCW1KKyq1KqGxp9', '594MMdbaSXESu2zFZFPYhT4GBawe2MShFkmWjmh9sdCU', 'VMkYvqRuX3YuXvMCnvjxTcYats4sjKhtNFj5NWQFCZx', 'DhspwYSJb1imPkzwJ6Bhma8kh1zQPqMtBJbFSdQnPSLV', 'mkDvvbvTv1xXvBa3sqKgAmzpBA5GrYDy6cJTJSVjCKG', 'BLJhw9Wp2fZp2sJZF85AKszYCnBchfYWmhsMZMTbXX14', 'VacSeWLy51YXvZ2z5po22aghYWzg77wqTLJMwaGP2M5', '5T4RerCzGB7xAycnH2Q6UfnbRyMiM6umWuVGQPWV2STr', '9mXRWWWKhLY3rzfXgfociMArNm9tbgXx3WLzJ3twxfaE', '2AdFiraDTenvqTPzoLbKigKPddUYvYwiEi9vx548qER3', '6jdqqDWrNE4FZw6sVaBYM6vXtXe4qSTcnGNygpCCAXya', '7kck81fvEhqXfjN72xcaGwhg2mCzR3BEmeJxhwP5VBFW', '4C8u5RU3B1YMwG61SDK4ML7TXECyM7TDa2UrjSUzLRRc', '56W6R6c4rvz36arZgahe9GL4d6JC2J4UcQygDq2fNGvf', '7Ktsvk2vj4K62XDoABx174sortLhECZMEJMnfE47DtGw', '8apsm5Y6eXRv5xTcLLMVkjxCq4HFqnW9AJHKTrnjUGr6', 'EGjPMXx8urd2UEzuNw4ysfGHipL4owmYYUHQKymZpMr4', 'FKQKQ8h4Yq6cJAbCiTbRxMcYQM2kHcw7dihs64zfiUYW', '6S81Jdar6wiCCj6DinsRn9UUEFGP8V3f3Dggo6H7Z8km', 'FWUvq1DaXRHkV395nG58xv4LLdxmn8u9vJ7TtMu5eyPW', '9H8tBpk82DGJoMGqjkUUkRu3Co1arfPpKuGhQiT41uq6', 'EeUAFT3GrNk8a3xkwZFzt3SABwdgg4qGFiMUgzxweoyX', 'BkyENsjLuaMJugkhbJ7cBBqsA8315nzJ4CVL7gTnrPu8', 'ABbbZbkHsyQs78y32zL2fsv2b2DarmB8hxw4JcoAmeMF', 'ChykxhqWnriimg3futJkoLvzsxeZU16VqXHXXcgEXwww', 'GkjrwbFnhUtnVvjw7vskUU99ZjZPU2CQoyq67qNvZZmJ', '8MzsuGYiqUa8veaXx22H36JFLMN6jKn6yw7nTqbxa7g6', 'AHRLhD47cW4mLJzoBKMvt8iUg4KxRt7vVSqEhGxrdE65', '8Y5VELLR6FVToRZFDutBk8Er4bgPB3T6KfnovgjYr979', 'FpkiFDBR1SZLVMjPEDMPUVWVbUNrCEE4dVuafeft1gwu', 'H3nL3Dgv9yw8csTrSefVgkh47imn2niuBB4Lwu2QEPNw', 'CrQimzZSsBnA9k3JXnJ1RSav8qPeDFyc8UJ1HPsa2kXJ', 'BGVKr4CRjRqeHZTJeMwmML5fMDhrxz3JCZjNNGncGv4Y', '41rFakgQCRAXroc8D81WjFgEFMFdtizLkV7g7gdjRnaP', '4rXEfTTLBEMMGwTdeTZ6yRxDcGrzgaesGi6maGYPFsWv', 'AaQPKu3UPtcVfqKScuKymB9jpxheENPE4SNSNLsotHtN', '6cdy1zWLoVT63M546FfHD6Yz5weBEUV33qtEgbaNEKSz', '2zVF2piy1HUNDucnLdsqEDfa2TpWPi9Gb4WHdjhvzyFw', 'CtsSTH2xBqrHTSTm1DFQX8xz1qBj95dXK6dU4v6j1ddH', 'FDthbgvTpFJDJ4kEAnZcSgQUJrDUh3GfDNNQVm87KXCx', 'DAZYazTdDYjouMTMiKUv9FhbVqUexMQjih4wksWBpzX8', '83gEie3ZT1GNJr1c9aUBnst6pS53HmVfjwdD2DHJ8oKz', '6bwVt5CQa7P8vKiLC4eLBC1wBwgfHcWd5xEHu2i2Mp86', 'HVRSo2Bfqdc9vQJUwVSAcSAoe9Bmn9T9A6QrQDQYH2sT', 'HixE4qFRcd4RMKEdcDcLn2Mh6emrzaS379GpGjH9jFRa', '8JRNovT4ZZquEThmZPP5CyN42cdi8RWaANQcyQ2V9CmE', '8oEBEvxXPoRNEnDQEYPkostqjLCPNQP9wT8c5Nom8uWz', 'G3Z1XHa2KJSwkPwxULSbjrnuyc75M6ge6Vb85nVZiEe1', 'AZYQtZDfzTZFZ6KfT78sAt8xmatfiwZowhZKz6kiYu53', '8aRMf3XQsCGFQBw39NBfp3QmVfQcH6hddcinebsSML4P', '339JqRehJQLo2xBDuWSx2TvNMpcLFJoDnS97piEVMUQN', '7vWnemmJz41b1JzBeCFNzMxkLSt6enSKKUWuq18kSrL3', 'FGCVeJ8bJL38EaFv6j98KQDfWeFZEUyLH93fShjFAZDR', '65zuMnox82FoazB1N4reAyPfTQE7ChAMHzS8NG4Rm37D']
9 ['H7SVTWDYUukpHtBKdzLupysc2Jhg2wAcyL8wWaGgvRjg', '696wtSJRePQJga7zpAwma29GbS5CjjdRRaSDk8cuQzHN', '2cQytS6gDR2YRNv7zuvosTkcp2riEZVk7ux5gbsbJiY2', 'G5CRGmfEFsS7ZGxk1q1Czaz42wKjA7a1ksWT4tYJe5KD', 'uvZt2s2W9gTGgVbM8PWrS8frULPCRrDx1kGjbEXn5db', '7bMN95JWEKQmJzzhHi5Ubcydk6eTHtbX3R1NjeoAJnfv', 'CqHuVwt5o1VSzxNaqPJ3qUAyiTLfrS7qHqqgTYppziSB', '545L3WLhCM8ipm75TJiheDzLVs6TeKWuH5ZTtd35KY7G', '3oNNnxeX89qtJbbFH5t4UWht2pDmaZeoRqhYE3gGmC7j', '4qGfjvdUwugqNS9dch8RaWVr3QSmFdzYX7zgtUaKPrsT', '4b2R6b9MRzgg66g2g4uDWvs8urs7Pf2othZCxQY3VbGo', '56uAMaJsxS5d5rowomBnR34dxdGgMBB1mQLvz1oaf76o', '9Tr5ZyJQniwTabG6kARQBKB69gSZRn881P3yGHCnfcVZ', 'H1RtH9umbrsgwoyMZe8FA6J8UiY3FGrHkQxfwcMSE79W', 'DVF9cf2hyyhfrHsqRMbRAfryRcr2fsZ9Vmttp6GrgL1m', '6ahWAemEBEQewaKnT6pxCoCcyVRGKMFpHwV2jvncXV4h', '72pqFsXCWd7pMjjTg3YgAoiunGJaqZzaqxrrVpyZRUuo', 'ChvNqmSULa3ZqvH292YUDC1x4aJtUWwQnLYajtk7hSPU', '6E3Jy7q2ToPUCsiJZJFEpB1C1sSVBu4dE76qtJJ4A47N', '3TZ7oESfmYgZoD8r3DvLJBHudLNuaLSw5Qu9CcpndSDt', '4BL5LKPEZSkHcJ3vkKUqywWCN5b6XVVRxQHVpuYRNwhL', '6KGMTGKmreRukyEe1pXwZEqhKdXT8Te9pBcFyYvds5H3', '2ah68AzDuAp7sjEkeE3YPLSX6xYaeukhJ9QtrkdmfLyy', 'HGVh8RDfNDw5Jrk8LBox2HAkyoP2EwWEVeNavAiAoCXq', 'Gs2yT5XpSz53herNNkhYTMyJHDbH7KgHPXYnmyG3bUCv', 'ErhcAfsEQmn84TUFAizp6LPRJwscKLRai853E28eLcsR', 'yqYbaZ4vpi52qhtypJMkmsxW6RSXKbP2vfw9HL7RoDQ', 'GZ2eTHraJEvXPq973SshRacb6HNAzBeAKoJPG6i8K5h', '545L3WLhCM8ipm75TJiheDzLVs6TeKWuH5ZTtd35KY7G', '2cKd1dAwDTDrhtMpXZrpF9b3wskvYnkWyDMpeLriG6PK', '48K4upph7sxFf6WPFSufA4ewYTq5FTmg9ca4NgELPvT6', '24AZFmzoZyopJMSfiazeGLqdhfr4Ln1qpVVSFve5v2zR', '7biFP8s7dfdCgdKHTAae88qdZCdoks7ot7haWgB2Kqgv', '4FQEf25SuKkyLQV7BeeSs9JNsAUtymcKAcgQ7GTARJrW', '85xyBkHY8fjCdxr4f1ZGztHkcuTXoXLYJeZYiVah2vt8', '8VskhAzPWoptfyZvBsnxUUPuR7azkyDRiVZmPETtzhna', 'HiQifjHZvcXHXtq95QwLcrQ3ipBGv5hX27wVHU9k9jr3', 'BCcg4R3SoQyWcyP7y8HGAk2U2DBvRUawT2FDW7JfEURY', 'APJmE1om5g9K71Ub5wDkLB8SZ9t7rPZhgq3YcMs1F8pg', 'B1rvYQkhZEgWamSP8hV95mxntFoqU8viG2TWfhtjB9NQ', '2htpNZYnn3XqmLguJXLwSddstSUVFacbegczcPG1GeP3', '9EHfReiSDucWAYGcy1ezktjuibERZFQrNDjZgAjJ8mDD', '2XULJEmoaaBALBAzJGR28hn4RYodekq73jRBUbX3affG', '52VYh2awgjgR7iBsirgNdWW2haXUrFpdPsRfxjLDskDA', '2cQytS6gDR2YRNv7zuvosTkcp2riEZVk7ux5gbsbJiY2', 'G5CRGmfEFsS7ZGxk1q1Czaz42wKjA7a1ksWT4tYJe5KD', 'uvZt2s2W9gTGgVbM8PWrS8frULPCRrDx1kGjbEXn5db', 'CUU9wUYG2KBQ53CFPHg8KwmSqSs7DJ3Q9jZ7KS8wUpUw', '39jUhgWDx2AKgKYhiponfTfgnN6pYp29uRcEDZZSdXca', '4qGfjvdUwugqNS9dch8RaWVr3QSmFdzYX7zgtUaKPrsT', '3RBfTZyWTwvyA5ws1hs2Y76jCuUGeipuLe99uKKYymH4', 'BBPXeJZdkeVuaTV27JpiXQqA6Z1Mzwmh2q4SPq66PXmt', 'GxJ898ei36BESj8RbncRs58VCsBR5KbzXDvZTWbZXiRn', 'CowW7aVe2ftLe2AreAgNx1zz6NahtL2Mpxu4AWJYq4rY', 'DytQJUasoq7pXLbWJifBKG2UYLFHus9yHqQzWumSfxuQ', '9wxaJcF9YRpkbBZ2ZbMkpWcYjsoPDwhDXpbHxskAW9gk', '7n9nn22BvdyCpQDwc2edF4FWNgBj47TCQPMvVvsyoQEF', '2CDrBm4inc9RaSkQbt3CYXFBTmzk7axuCThXq2w3rx73', '99i491Da16ToszUmXUTjdRCHKeRL5TtrRnZicVh2WFbQ', 'CMk6N9X7YqUqkuMHnzJfUjXWuTm12e5CaXcuordoxzvW', 'GkCAMtXxnae39vAZ22J7wR1A9e9YoH6NRkK7cYDLSnNs', 'exraesNFKyJpjaEqEUYAQZV9FuNGB3BaHRoRXACELE7', '7hgDy9iYNFWe3gCrQsQQen8ApzetbRom5VqUDoCy12xA', '9CnkQe9i3UnyugqQAb8pfTvumwyboYz65vMPT1xEVKns', 'Er6CGYZ3rqMKf7tgMUmCFa7LNqK5J67UBmLbjxGrw9ov', 'MWHi6uLAB6ykTqMPe7FwkaCBRy39wE2wDfHrwKxtGBQ', '3keMQ5HHLtdXHzDvR5mTcEcpZiS3QxcdtZrhWmf76swa', '9BNofyxxMQ9YxLEMPjaeuWBHWsHfN7nC6vjZCq39fZbq', '2cKd1dAwDTDrhtMpXZrpF9b3wskvYnkWyDMpeLriG6PK', '48K4upph7sxFf6WPFSufA4ewYTq5FTmg9ca4NgELPvT6', '2dQT5ukGcWneTna5DfkgBW8aPsapBdN1jbZkt4Buw3ZB', '4FQEf25SuKkyLQV7BeeSs9JNsAUtymcKAcgQ7GTARJrW', '85xyBkHY8fjCdxr4f1ZGztHkcuTXoXLYJeZYiVah2vt8', 'C1urqczVRoQKjgYZFqv9arYsyRbJpxoCjhv6kgETM3DQ', 'EVyN9hCmoUg8FQrV7V7XvjhS9uqVmTd95tnooZWrsAJR', 'EwYU1S3QtQHJsLKsJQMH5dGRW9JafgEkx4fFr8MVwJ4A', 'F7mcMxnHKSyG8Ka3K6i8ruxpcjrRarCgwmjbCLwnruvU', 'Bd3MRR5vbhDGqu5YYWVkaxV6jCLrsD5dfoZTkBVDTuPi', 'wbdB1yFvne6RpZNGE51TqUwLcX7FPUCaoWn83qoSngc', 'CBFmnv2mupnf3wipTfoHs5nJyhKiFGog4HckyVW4V89a', '4MGMJp8dDyvmRYnbTVdHHC5v6huLhfXRr5kjCZLtpLzv', 'CjJ9tnu3TFDnUcuN3krHWSSkNCipW8PgFZoZLMhuYXMP', 'GWAgyviqMDVt3p8cigo4VS1JgqbtLCfbT1g3v8zFyGPw', 'CW4ad4gMbXByPPjTovMicqaup3Q6XX8BTviJ31FD7i4Z', 'EPUJeToht7dtCQ2VQDVAo4umXbVgq2odpuEkozQpMQAa', 'HajpbSe3ZCqmHx6ursBhkSSMecqUu85o4qDvyUZWDHUm', '2crGpRUYFP1jVLFXvjegFJ3aWPzBznJtcUpRMGtdhagS', 'EVyN9hCmoUg8FQrV7V7XvjhS9uqVmTd95tnooZWrsAJR', '4g9hWBuW4S41P7HPbjs7CwiA1WUxK4pkyX2UtQsWVHor', 'FfGZiE11Cp4114hPGQDA3en6GzYQ8E22DP6Gion16UB2', 'wg5G87HFLtG5wKX8aPPfm1DhrfwqRzvxw27NpbjrMC6', 'EhoYnRraq3b2X3ny8YqgvAWYzg5wj2eJKFdMgeSdyeW6', 'CM6PPsSe9rQDY1Ym32mU2LjWxY9AGeT5AAzCoCsG4ora', 'ABtywC4qMfAknQGhkVDdqTnNu1t7zVeY3PSLKiVttM5S', 'xJn1PpjogWgDRGY4Gr25fVZT89mpeW27RLsirjdtviW', '3HrVQyek1zqB3NhUgkiNpVK5UnwGhgDaWQDoUgdapKt2', '39EneUMe6Af9nxYQQhYZhCv5WkQfkiGmFiX37KeyQkQ3', 'EiDGsjAPULGFtHS2FFPMednPRw7kFUZzEZDECbsZxqeE', '85xyBkHY8fjCdxr4f1ZGztHkcuTXoXLYJeZYiVah2vt8', '2crGpRUYFP1jVLFXvjegFJ3aWPzBznJtcUpRMGtdhagS', 'EVyN9hCmoUg8FQrV7V7XvjhS9uqVmTd95tnooZWrsAJR', 'HisYyFzSqmxN83KwJ8L2ZKZLuiSKXfQw5pVg5WvTbHSX', '8fSEU2B5enVMKYYhA51FFVS8NLK4H9hWDRXbexMqTNW6', '4CfB1U34XrSLgJjhafWUEhPbtesGajEN5yQhPuyth2cx', '12W6PVUZyNWqy9yPn3HjeScgnYqiJQB5XY3vmSbDdKMK', '2j6Pv3GctMTDyiTHLeR85GCZBnjXnRJRGKDy8jxMckTk', 'GWJSUoZGuMAHZBpEhhdRz9uxTM61SwWwdpwHWNjaLghm', 'Fx6jwMCtfnYYj4j9UxEvtvg3ceMA5wFhFkyXrzfHbzy5', '9CKa5B7BuYaWDszp9B2fwvwFbRzucPWcDCSfTYdqmukt', 'EJqZPqkEGgCTmaej3LjoYRWCgA7kHnLEHHxw8RCV4onz', 'DQH2GuiZXYrgATQQZFsTnRUaTLDtykFBBsCKLRQwCXk9', 'GnniPaU87qqdfUEEktW28uJZmqRdPqq4T3Qbg3xJ9AQT', 'AXHPGK4ZKqAx4XhxEPWCE1xw225i6oimdyJZc3HSdcRf', '58hBQPJqjLQ5qJnJqjjiWE2Pm8LTrVhJjBfCKE3ZVYTM', '58hChDh7AVTxGmnTXKrqhuHBXUkBUNGF68uwEHvjfz3C', 'GALTA6ZUE67QNRvdqYSMeu3wVTFxaYHPoa3VCTBxdhD4', '5FYVgr4a5WVsFd7Z3hBtoNBzJeoh57tBqSwkNhfSvquw', 'DSMZXtEMm5zcvxHRg6K1wufH2e2PDUYb32XYaLqChDMW', '4MPqLbrqSKWZn1xaQ6xv4qryuLbgq6SBu45CuHnaBebh', 'DwnEg8tEL9XG1ZDYuamb8BryRFkQHggWhqXwBknwk8Kz', 'EXaGFKPKavYZp1iibUn66yw9icnBTANqdwPEFcfz8JfN', '9o5L7MsTDJsra1RCH7N6yyTLBhusfNryC73j4mHXXcej', '4pMQ8aCWgU5cLhyosMCvoqND7fZjxqqES4ZbxizcKjSy', '4GezMAEKhMzGrW4VtgHPmpzoApu7ZVBgHfubpmfuAixQ', '23rFFegKPxcq2QAZGP5uXW4sVVRoPM3AitT4Tt7veEMH', '7z3YSe4qbBzBzuG6ACkncvLqcnkjFmzNBLumq389ZHYA', '8tMpSTi2Abnpwu27hDY5d8zmtEZoTAM3Xus58NQMMJMB', 'BJDj9KFYo5eUbrrrQGpjboEPf45RfDRZY7vuEZ6hPkdP', 'BAcrJWHrifNPpUB2mppXVByS9fraH6kfZC8REfqjQqZm', 'CyeQy7eJVpSXso7ofdhGxMguQTjFamPjtbvcsjzJ92q', '58hBQPJqjLQ5qJnJqjjiWE2Pm8LTrVhJjBfCKE3ZVYTM', '6u6zFNo1kFaJqzC6RBputkZQLnw1ZC8Ao5uK8N1doHXv', 'DGMED2QZr4hjWRsVRe4AW8j7e1YhBXtK7xHWYmFz3KFX', 'Fs1WDEJ2R7hrFaGyrgp54vqLknzxt4NzkSKRq8GejmpF', '97Rx2gv3pKacwPR4AkGEzxQ2CCRCWcPpczScLm4objNL', 'BTuJGEWegxyDA4Jb2QW3Wqmoc86PTQoLyyfYkazD8BJf', 'GG7YeoXxLDdF3XDHaXtwCUUAnW3d96pEatQySFrkEE6s', 'GarJwAdQxFUFWYSeJKu6nTnKsLEw5xXEzDGpcRK6P3ni', '6ys67Fcapm9gKDapa9tD3jcycMsuKzfVVbttRBF6aJRy', 'HgAb71wAEYyQxPv92kZ27pvdaguHMhARgXk8Z5guZmD6', '2zTU1nZ7NZWEH2FYV3wfNuuutrLcieDyvNCTBr77iA5q', '43E5UJW3gLDbnpr62LSRvMWtJYWAqYLwDFTGAUJH276a', '6PhAgop4SoQ2r4j5DF5jQ6JBoYoUCzhadgfQynLCmFyz', '7misxpFLVQoUJnG8hm5pg5uj9WY5soQ4YRjqWQSTiMe3', '2vRpWyrssmKohguTaWpXJb6Hh3fA1HENwXCJiMDcinL7', '67JKJKzXfcxBuHggachqbtRriMYLLKtq7DheCvHb6koG', '7r8xHFGS7KNGHVSXqkavXoLUoQDYywMbseXbxf2fiAkL', '5jzx4sveSspKKwwG5tSC15PEb7TBx7pjryrU9hiTF8zo', '5ed4utEtp8m1RBwyP4g2fbc5N8ecJdiyNZ5Fu9cHVRJ8', '3QhAX8bwiAzafyxtTc5UocAkePn9xQvXCWo4XN7d2kGD', '9jbAyRXJpLkFCf3MCMJT5a6x7YhFGeWeFH369SjJyBxH', 'A5KnbY3hEHEmnkG19wLBi1zbR3fCkcSnaXNhtydmBwYp', 'H2x4mEx8Yba98eGWzHMhcDZ9tGxjRN98M3LKVfx6zPo', 'Ajfiaa5Kb1phTshYLScD9aFmmd3bCZLPZVpEasRXqnnU', '5P9MnxnfFJQnqHSUBLnMdEPkcDtiADHQQfZXJCL9PvyS', '5VywifDnpTHYMVUHjpPqV5Ht4mS53iVXkqMn1AcCxfUP', '69osWdwJoAwLbuEJ838hSjARdsYDHcg2Uukbd8UyvwF3', '8u54H5yEaMSno647eifKs5hTc37Mmzz46gYvmBmyBPzD', 'ELZyTcVxqj8B2K7aXSBYJba6UwnU85Cyb9aNucFJJ7wA', '6NnTQFbZTcVwhNvfX7mdHhQQDuxJSU7YLSEj6ozUcL2o', 'B3aU2Awcn95hZPWj7AsNZCZ8kk4BNqMa5r37AjSyRnYd', 'EVksp51D2wzJgq7W3jtHrfDgetJ1dcwSwHTyUtf9x8aG', '8DaZ6k6H4NJWofjXmt8kaBpkJjjdr5YoRv1ZxvPFSZwK', 'CtM5dDKwsRVTvi1wZaV5gWMUATnX1tuuGp2DaJ4PXAi5', 'AXZPaKxJqkPgPLKx5n12HNtWw1vpiKP38crtQQZfXhKK', 'H4pkAUncR5AFHeSbJ55SUWeLUdLxebJ7N7PKXhxSvmNT', '4jMXgKJHZFLw8XzUiDKa6rboWBBzhbNWSjuLEWV1bvNT', 'BDhfG3ZxemJcLe5PjbHHj7MNsvHWXh5eUdaFKDUiBvAw', '65zuMnox82FoazB1N4reAyPfTQE7ChAMHzS8NG4Rm37D']
10 ['5kYEqKVqfrcFJp2iWzeXxsCSkHCqw7Q4whu6GrRz3uzT', 'Ggf3f2ktDwNLd7FNee9gd69Y66PSapLGAFnkjP2Ygjef', 'DZjrP1TsiZiWkZGLD9VrxFce45fpveCnAEyJwmkAjisT', 'CDWWYPz5ia3T2LvFbSACefyzpojGadbUe83sXcymsQNJ', '7weGjcd2dyHtxpmTUG2AGLeY3JZXd3hdLNQgS9pBcnM6', 'Gujac3ihn6DTeSKV57Bf4v33XGYd6VZ1D2x7N2FCnfUm', 'GnEAfeSvACmZ3YAoWyFrqRtLiaBB6z3n4KK6sYUv7KD7', 'A4BDf2TPFuvP7hz4wiq52DygdRRLkB3pu5htt41XzQLM', 'FHf1SCuxaWhhvK5jNWz4ZU2GM2pWQYJdT2tkmzMdqdiA', 'BmmyJGuqmZV5y9ZcXgK2GkbgweaeZAeR43596ZDMP66M', 'ChrrnRxQhzr9yzDWqsqRwwUxRbzutZDPcyoiTkfShqrJ', 'EyCW9Vu1XPtTmMES5WcwspWRP16GMDb8vYpR1JNHQvpm', 'EZDG32TbJpG1ivXmPVHAyi3ZLjds1k75K3joGaY1AXZF', '4L6ZcDfKibBGpjArLYVy9WrAk4hAuLBk6F4qvd4nSMyJ', 'EinK3jmumoZBziZtBCyMuSXn994YPd4F2bJ9BYoHdsBQ', 'CMkRjBPvKv1Xt3FxYJHRBHwpRJ6SxNv64EJNvdmRzNSq', 'CLwQQRt9tMMij843C4UttzfaieuSVtQZsmrZFnhsqU6o', 'GnJfxCVngfEuwRVLrTgb2FsiA5yjWMsQHEKeuG27csHt', 'DCvvSXYCfrvvyV5VSQSmFNntiXoUAjmwRvgfY41C1Eif', 'H6ZsLzwqkCFuB4fMTLHPPhfV2Zo59Sqv6gTaGwg7App3', '4eyFbr4PzXotACP6BbBYSy9bnCjsjxfY3PcZY4aXBvuD', 'EkGdQnBN9woCeTF8ig6gkFE4sEBvaPrEGJkGBKMnWWTG', '73A2ArhkHsr6MjnP7YyF4m6Js7FduyX8etfWrDRxpjDd', 'DoQnLNMYnSLgW5DhJtiqq38h52bcSiLLC8auAguSbuhb', 'AnnD9UcTCujjXCSUKHbRjMfwKJM8CTVGK9ZHXUudLDYa', '9KQAausvMzZ5673HzZbqYGJk6fHHEjReQkc1bv3gHeSn', '5fjXTCXGr4G3GPHi16MiC6ZEXt8DTd4fyRpsACPVwNo3', 'GiNUPpkdGaR6fd8opRrERLYXsMHMEdevMnxQHfxHdFii', '9PW8KY6Qc4dWD7RwSyZhCtsEj39cs2WMMoVBoL8sZgHW', 'BNNsPkcnZXcM7SsoQaaJ4HZFnWLoWFZKAbf56FiX15SH', '3ZYfkJTBevY5mqWvoLoBP6LdMPu4nPE7tveG5LvCtz7o', '5ETN9qpGcoCTcaGKWpPnR3pYTE8ScgvLaPVbZ6Fpxbop', 'FUkdB9EnAuKT1RV6HrdMhUb4NWiMz4YH5uUZtDth5zNa', 'CTBMvQpM4qePGN1etFTpDiwbRYCtQhMfwP8JiBYSV9um', 'GP61Ht2ukk96N9q7mzJxjjrhnivjjBGoHF4YDuhPhzgP', '2xEiZYB7GqdMNKJzx4aBBUpBoZfap7Gt1vF4iRV5PGhL', '4L6ZcDfKibBGpjArLYVy9WrAk4hAuLBk6F4qvd4nSMyJ', 'eCnPZpfXgA59iDVV76BkDycGeWezmYrZ7JXXH275v6K', '6t4qjK4LYVdgw59NYRSRKGd4T4uvNYLC5VMpUXY3z86k', 'EsZayZVcuA5BmwkpPVghF6TwASbmf72vG4PwidEf3qx1', 'ESR1UCxtmSD1X6eebg33ikGtDjLvdN8UwH3q8h9BNHCY', '89vq2NpsqnVrbZnfLRNSHV2a48no9npcWmmSNA3C3Kcf', 'C3yB7EK1XCX1pgZwqQZjqQRQ8Kj5xfiYWs1kFJaRgSci', 'H78Ci4EKiP7uumY8yP54kgAWjHTRvbmb2f4WehH5Jsf8', '6i5iUSSaszNkbZ3z3JpyhgQ1vMQsNA5kn4fXyFUS53XH', '2itJHLfpWmwyz1MpdX71yNX8eZgHazG1643RuXjeSY2n', '7s1m2YYuxfwxZm4KN8Nnzdds4HnF9FFL47bo71ukikqd', '2DEpChGEiYnxrdGJU4n21XesJs1Q9VU4Q8QDTrLxLnUJ', 'CL4GtX1dr5WkxHAcD9PqgzXCgFuncib2TxUoTU2L4XVB', '6VreXm8TJUB1dDNZqW9zwo19GSy83QuCRvDXwAuMts6M', 'Fe8EaTUQGhJgUFiJmghUGtTpzbHqe6sNgiMAX4GSTVHy', '7dqYcsZveVfkyTjqFHoafPQoG9qRdH1Z1MQRn9HwZteW', 'Hk77grob4Wk4MHFCYG86wzEdjtLxa5AyqssYxKj5woww', 'BwoGuchkRWtNcfEfJNkMi676pziXjfqhZBtQrBqcfc8q', 'GnWDJS6Gyr94gdv9KKX8WJUmDpDmxj1P45HzxEoL3HQm', 'E5DhX8pxdUNC4xKWKuS2WtmWn1L7WBwryo9HQ2TA8quv', 'EinK3jmumoZBziZtBCyMuSXn994YPd4F2bJ9BYoHdsBQ', 'CMkRjBPvKv1Xt3FxYJHRBHwpRJ6SxNv64EJNvdmRzNSq', 'DCvvSXYCfrvvyV5VSQSmFNntiXoUAjmwRvgfY41C1Eif', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', '5nTGNWfzKdYyqmwyRSVyoSNgq5WNqi2zKa1WKBi3ubXs', '7Z6dRBi31kFnqiHMMMb8QQxtsrY9oN5dZyXo6xwTrC1k', '7U45qMKRfE4DEbzre65FSd3dudmneq1h44LxpMoTLFsq', 'H8EhNbSV9W6pkrh4EGyA8rE5xwjVpsHLKHQBdXuLPKA3', 'F94q1ERB6tHyL2Cvt6E8TCf3KNcCzQbPmtL3XUhddpTc', 'CLwQQRt9tMMij843C4UttzfaieuSVtQZsmrZFnhsqU6o', 'GnJfxCVngfEuwRVLrTgb2FsiA5yjWMsQHEKeuG27csHt', 'H6ZsLzwqkCFuB4fMTLHPPhfV2Zo59Sqv6gTaGwg7App3', '6GsSP3p3JxTNKZ8dHtbYw6MyKrebR13FL2dZjRSkniam', '7Z46mpB84suuqRPQFxU8cfrSamGmcUMSrA8eAwA15qXy', '2krqz8X6aW1dYzTBS9cH2Q6yQAzFNGvt4Z56Ybk6VW1H', '9QmdjiF5hDpgKeGvfUoufUx3yw8dQXhKz1ksn6Yh38f', 'EyjVC26qqHvj94SJknDmhtkBv6bbz9ZqY6yCe515WCbe', 'Dp9hRD9iS9popeJEumEs284kv8eiTMWaMDgDxKkwPZvp', 'AYqoSivhfqe3JXh8a19izzU9i4HypdyCcKdLpkwQqgS6', '4eyFbr4PzXotACP6BbBYSy9bnCjsjxfY3PcZY4aXBvuD', 'BYCRjUQvQQstWc3BC5mjNFT6KzypPrDWSt4QD7xaL9yN', 'JDeT7Jf1oB4hUgHZdFP7bJFPQkHEaV11BmTCMyAHCA9D', '2c5G5hxgAgdPbJbNL2RiQti2Q69r6YusNcnLsWJDBQ52', '9RXaY1Po6an53iLgwQnwMtcTjQp1e14mxpYa6mbtdjrM', '6HKyEy6w2dswGkmBn645MCnypeECgznFMANC5pHRSLDQ', 'G96fBbYZL9cZ9nqSrtzcqCQJbSiiXD2ekBt9E2A7YjTD', 'EFWr3DxAU16jnVfUTAn23YbBkNz3jVFmQp41YbVFRye9', 'AP5UxfLkXwksaGJcZLEWAoJUqQ84CT5HdvYP3QY9RsMX', 'FRcA5WAgwXbiUAjfiaSeyCZovnAicq4yDeLn5SsGwfuv', 'HAEqC9JGaEMG3Bxy6Wcya8Baz6e86hhaYX7z49XjmoZX', '5kYEqKVqfrcFJp2iWzeXxsCSkHCqw7Q4whu6GrRz3uzT', 'CcomifE7J2uJBysEgqXx6NYm2c3zHcr6UQpR8d84XZ9R', '7weGjcd2dyHtxpmTUG2AGLeY3JZXd3hdLNQgS9pBcnM6', 'Gujac3ihn6DTeSKV57Bf4v33XGYd6VZ1D2x7N2FCnfUm', 'GnEAfeSvACmZ3YAoWyFrqRtLiaBB6z3n4KK6sYUv7KD7', 'A4BDf2TPFuvP7hz4wiq52DygdRRLkB3pu5htt41XzQLM', 'FHf1SCuxaWhhvK5jNWz4ZU2GM2pWQYJdT2tkmzMdqdiA', 'BmmyJGuqmZV5y9ZcXgK2GkbgweaeZAeR43596ZDMP66M', '5mDjrMv8djEFUiJ4TWGgh58yf56yCuVrkVXP6wXwaU6Y', 'ChrrnRxQhzr9yzDWqsqRwwUxRbzutZDPcyoiTkfShqrJ', '7rUa5kTnNzQMWCQ4aYoMEWrxVSoFJxLjmUzjgMuUPATX', 'GnJfxCVngfEuwRVLrTgb2FsiA5yjWMsQHEKeuG27csHt', 'DCvvSXYCfrvvyV5VSQSmFNntiXoUAjmwRvgfY41C1Eif', 'H6ZsLzwqkCFuB4fMTLHPPhfV2Zo59Sqv6gTaGwg7App3', '4eyFbr4PzXotACP6BbBYSy9bnCjsjxfY3PcZY4aXBvuD', 'CJrZyCEz1JZZoHXoq5YFdDCB9JHxkGHhZX6uy7ZqPdbm', 'J8AWSezEmBgHYrYs9HyUQ8nYpVBB999Anj8MYjM9WjfX', '73A2ArhkHsr6MjnP7YyF4m6Js7FduyX8etfWrDRxpjDd', 'GpJCXHUfk2g5fXSaHHJiu6S1AfvPBrCKxyis5b2g2Nsw', 'B2m56YmFruAzBpr5Ry98ibAtHUvxNBpeNuQr7tHsR5Dx', 'GiNUPpkdGaR6fd8opRrERLYXsMHMEdevMnxQHfxHdFii', '9PW8KY6Qc4dWD7RwSyZhCtsEj39cs2WMMoVBoL8sZgHW', '97EbTPz4omvmHGkfzZjifqfQT7SF3CY5pJMMd8QDq1HN', 'FXhehPq4FK4u4AjfdMt6AepZKn5HAJK44rsGsKffkU2X', 'HT2YgG2QzcUvrpTkW2jtYvBd5kKr2GRyeSiXF97SAhza', '3ZYfkJTBevY5mqWvoLoBP6LdMPu4nPE7tveG5LvCtz7o', '5ETN9qpGcoCTcaGKWpPnR3pYTE8ScgvLaPVbZ6Fpxbop', 'GfcUagd4Toab3pDWxMUyE9T9dHH2fMSL5FtBkiN5ZhL3', '9Hf9LNbpanJy5vRowSbwyeThEvmDdEJMmpT4qxuKrriV', 'rNZUp3BiiwZmXg2FgxSYWiSbsK85nVMtcfjUZWnziAb', '5vhEEg8Tz1bT8mfvmFeSVHCYsgSRJneYxbkJFEAnWXAk', 'eCnPZpfXgA59iDVV76BkDycGeWezmYrZ7JXXH275v6K', '5c1dysFnJFqJpFUtWs4Kjr663xRDi8sNUTqkcGdNcczA', '9taZqsRnXtQYZBYg7m8Zy89PDxJvFMeykhNdhv1xcYWi', 'AfCA3cBD4vhkqfRVwb6ZvcaFtSHmgtfuM6QUXCnb53KV', '9zQsjb9FxJ5tofsZYoX7rteBYu9bsXas1LNGQ2583zCP', '6ehd7N7aGg3PxfhGazw6Do53bJnwZPTCLYQruvbeLUrH', '8mMMiD2jijpCgNNCcEExXWm8UHR6HdVAKXYz48UpnFRQ', 'CttvgEpZ6s4wa6DTgZmT5coK27P8uoYz38seyaoKJvvo', '8P6MSapsiinU5nZun4sXt2s12mbgRhHe4pEUx4iQvhz2', 'CJrZyCEz1JZZoHXoq5YFdDCB9JHxkGHhZX6uy7ZqPdbm', '4BJvqqXR85Xmu9a1wHfekvNd7yvGyKaiA15Lr6WKos2s', '3jDTR95fpAa1SZ1kDjETr45iy3iaXhfdgcX95XVha4Gu', 'FpTCRWMtxmjvowPiAhkfWU9AD2u6yfdueHW9KNeDBAfX', 'ERMzpCgKTfT9zYyyTi5YSXw9419mT4J2CXXwdN4b1mkP', 'AjZrobCLSQqjbwbeGjBX8Jgksf3CyoieQpEwZYHnHMj4', 'CY9vDKmMfTfRXc2SgbcduBguoeXR4dbz986omkvTPpRW', '98TGStt5aSML5A37MDkwifQRqUibt3E8wkKgadnqjdXK', '7k2DuatzTMX3tQdm9fJGenPqe49KD8Dh3h83TTwt7bkY', 'A4VcgfhnXSNkgBC2RegiXaUWRyy7VgnGXNV3f3kpg4Mo', 'DCvvSXYCfrvvyV5VSQSmFNntiXoUAjmwRvgfY41C1Eif', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', '5nTGNWfzKdYyqmwyRSVyoSNgq5WNqi2zKa1WKBi3ubXs', '7Z6dRBi31kFnqiHMMMb8QQxtsrY9oN5dZyXo6xwTrC1k', '79kTSYvLn5QjcdbX5mk26pHeXEurr5Df5HSEfronv9kF', '7U45qMKRfE4DEbzre65FSd3dudmneq1h44LxpMoTLFsq', 'GnJfxCVngfEuwRVLrTgb2FsiA5yjWMsQHEKeuG27csHt', 'H6ZsLzwqkCFuB4fMTLHPPhfV2Zo59Sqv6gTaGwg7App3', '6GsSP3p3JxTNKZ8dHtbYw6MyKrebR13FL2dZjRSkniam', '7Z46mpB84suuqRPQFxU8cfrSamGmcUMSrA8eAwA15qXy', '2krqz8X6aW1dYzTBS9cH2Q6yQAzFNGvt4Z56Ybk6VW1H', 'AkkmwV6UBrG9MxqxCrRQUd2b5FytCd4zfo72BZCEvxQg', 'G2GaCdtRp4EoVuMRpGYpkp9LGHnWVqtay5wZTiJ4sVmA', 'DFtmMUb7KuiEQnEDkZaVuCaGVpgo9hCqrR5viTLEQ58E', '9W4A1ncr5Pe8fKEyZUcreF7cLPKHUxBKVpsLgds5cQ1L', 'BYCRjUQvQQstWc3BC5mjNFT6KzypPrDWSt4QD7xaL9yN', 'AAZMAPAJw6JCmMm3CLWgnuiAW5HiDE7LkoFSy924CZa5', 'AP5UxfLkXwksaGJcZLEWAoJUqQ84CT5HdvYP3QY9RsMX', '9ufMHVfuhn66GAYbAYu77hjwbczfaWXDYLdQsLS5w9oH', '5mDjrMv8djEFUiJ4TWGgh58yf56yCuVrkVXP6wXwaU6Y', 'CDWWYPz5ia3T2LvFbSACefyzpojGadbUe83sXcymsQNJ', '7weGjcd2dyHtxpmTUG2AGLeY3JZXd3hdLNQgS9pBcnM6', 'Gujac3ihn6DTeSKV57Bf4v33XGYd6VZ1D2x7N2FCnfUm', 'FHf1SCuxaWhhvK5jNWz4ZU2GM2pWQYJdT2tkmzMdqdiA', 'BmmyJGuqmZV5y9ZcXgK2GkbgweaeZAeR43596ZDMP66M', 'Db7cQh5M5qdfwCA6nSf5ssJPpGoaZcUX2onZ9ymFfP6S', 'GpeJNbxbmE5VaQGk9ucqKvonzgLyc2uuVRCXuRUGQ52V', 'H6dkZhAe5p1XkzQsk4MM2JjZvvPwWY2GpRFwAv5j1MMU', '7S6mFtCR6khFachHKxi84xvoZZPHGbQf15ny9i3gVDm', 'GVST932cD69DvNM7D5QUFxfTcxjyR4VT35AnNdyHnTrz', 'EyCW9Vu1XPtTmMES5WcwspWRP16GMDb8vYpR1JNHQvpm', '79jDZ8o742Yp3gs4nK1yRE1SqGU9MAMSZrS3Fd16c7FJ', '9eZanbdj9RCYF4U1wqqBYVNWeF1RKjXB62LkYnCizWjL', 'EinK3jmumoZBziZtBCyMuSXn994YPd4F2bJ9BYoHdsBQ', 'CMkRjBPvKv1Xt3FxYJHRBHwpRJ6SxNv64EJNvdmRzNSq', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', '9QmdjiF5hDpgKeGvfUoufUx3yw8dQXhKz1ksn6Yh38f', 'Dp9hRD9iS9popeJEumEs284kv8eiTMWaMDgDxKkwPZvp', 'G2GaCdtRp4EoVuMRpGYpkp9LGHnWVqtay5wZTiJ4sVmA', 'DFtmMUb7KuiEQnEDkZaVuCaGVpgo9hCqrR5viTLEQ58E', 'Hs4UCJdQcXJQmwyTMWow5ytMvEQhu9ZXDZ17TF8Xtw5E', 'B2gm9yzBL5XK6Gaz4yY7VzbWbpqwQT8EBg4zKSjty3EG', '6z5UpfSvf7UrJDVEK3FtvM2SjMFQkoxSWtH4ZKKPRjrW', 'AjZrobCLSQqjbwbeGjBX8Jgksf3CyoieQpEwZYHnHMj4', 'FuD1JmdXomsxkBS4pmzXDgrTfoM9XXpt9GU7Zm9xM55K', 'CjymTMX1xsJUwHF6D2xvNTdJAfSGk5eSXuejgt8wKoVs', 'C3Lq1xJWCv1ymTD9bWcb4dAppRPmQZdmTTVwiCrVvBEB', 'M4kXUCxvwqpLpi6bUahkkUGYzX6eaAXMZ77cgFukNiH', '7mVoWB9aJXUqHKPwgDZDx63UrnDmRFvW5n2te6C9HXPP', '95hjLqiZajwgq1GCfjGHzvtE5gKumoHx6e22W1J4fthK', 'WUbP34jFSw8C58C7jCLjA4QZkd8YL6wiB11vGGaSzMF', 'D1CgVKYdxQiHoHs73bbY9Z4GK4183Vi9QAbEG1UiGBC4', 'FX5KX3NFnP4huqXLEdZDkzQa44b9FgrNGc3PvdT3E1AD', '7U45qMKRfE4DEbzre65FSd3dudmneq1h44LxpMoTLFsq', 'H8EhNbSV9W6pkrh4EGyA8rE5xwjVpsHLKHQBdXuLPKA3', '4UEpZFHX5wvxXpfWxcyqGZt6TWzHiHv56ci6HDJcfyyG', '9iveazmjBHasDCyWjv3VGHxoFCTVm2hMucfRqBmNwVEh', '69yJGrMMHjLKGgY4sNkPVG6WYkRavstQtH9P2sro3djF', 'BkfCwCS1dopwqLEjj5eKPhNLS73XvS1VAzmNDXLEFJFb', 'BkJDMRMwZ5zfsF5i2Ugt4FXyDRjKb5xqvUXQy4pjB2zL', '6GsSP3p3JxTNKZ8dHtbYw6MyKrebR13FL2dZjRSkniam', '7Z46mpB84suuqRPQFxU8cfrSamGmcUMSrA8eAwA15qXy', '9QmdjiF5hDpgKeGvfUoufUx3yw8dQXhKz1ksn6Yh38f', 'Dp9hRD9iS9popeJEumEs284kv8eiTMWaMDgDxKkwPZvp', 'G2GaCdtRp4EoVuMRpGYpkp9LGHnWVqtay5wZTiJ4sVmA', 'DFtmMUb7KuiEQnEDkZaVuCaGVpgo9hCqrR5viTLEQ58E', 'Hs4UCJdQcXJQmwyTMWow5ytMvEQhu9ZXDZ17TF8Xtw5E', 'WLBzAEWikmF8Tfc7MqNGjdwkVtqD9vLCuwXrQfZ9JX1', '47ifF538fR1hRUpHau3cGW6LKKvM92RrYSumoWzz8CEZ', 'BYCRjUQvQQstWc3BC5mjNFT6KzypPrDWSt4QD7xaL9yN', '6HKyEy6w2dswGkmBn645MCnypeECgznFMANC5pHRSLDQ', '9ufMHVfuhn66GAYbAYu77hjwbczfaWXDYLdQsLS5w9oH', 'FRcA5WAgwXbiUAjfiaSeyCZovnAicq4yDeLn5SsGwfuv', '6SMUWEn7TuK3PVsrfk4rcgSJE7FMuX16wBQQfn6avim', '51DW6Ei8Ei3jcjupmm4yznainGFWxs4pMauZFYGj8fHo', '588F61xSTcVMRAareK4LQBgxgSNdYYZre5w1S5oy383n', '9N9v6phq1qzpbSv2UR19NDyvqvCQQAMwwp9617xMKwAR', '6gAqRAqdgc69dWVkopNZH2mEpgidZZWp9og54KVUkZJJ', 'CxXGmST5mBanaKGKJ2e8juer4eb1Bv3TjhNeJUr7UD8G', 'CDWWYPz5ia3T2LvFbSACefyzpojGadbUe83sXcymsQNJ', '75KkPs4CHTpTr7zpX4bRgCuPmhhBHdJaCBmoYfyaqWsL', 'AqHMu4ssdKYvG9Uo9KaUbK8xnGjZm8FY7nNSErXWGtRL', '5pE1qaUJLicwWPbYsZF8LdEKEQ7hnj4mNMoKQY8TA9D6', '3aTBHcoBDZ8Bq1Hg3c6xyVHkzpx92YzT17SzGiX3KHaV', 'EYn9uQ2m57jtU9ZcGsBXdzz7bxkYKQLgSFVe3XvB21vM', '6gAqRAqdgc69dWVkopNZH2mEpgidZZWp9og54KVUkZJJ', 'EyCW9Vu1XPtTmMES5WcwspWRP16GMDb8vYpR1JNHQvpm', '8HYsH95dLyHrPxDZauqokV94TMpGvZReKKhe9FYASQd6', '5pE1qaUJLicwWPbYsZF8LdEKEQ7hnj4mNMoKQY8TA9D6', '9QmdjiF5hDpgKeGvfUoufUx3yw8dQXhKz1ksn6Yh38f', 'DFtmMUb7KuiEQnEDkZaVuCaGVpgo9hCqrR5viTLEQ58E', '7Kxm61hfejNp9Z7wSyaaxZKeZpsRzBGkoqbZz1fBxQ3n', 'BYCRjUQvQQstWc3BC5mjNFT6KzypPrDWSt4QD7xaL9yN', '47ifF538fR1hRUpHau3cGW6LKKvM92RrYSumoWzz8CEZ', 'FnGsMjtjF8dL4HE8UvHviyieeVmM2KUPeBfL8QtyXkkS', 'AfGiDdHt5AC6DUw9qphrZe6ZAdxUz4sWfmj7P8e9qEmX', 'GYNA9xJkmDd8N5FaKTDVhKvNhB6v2WqtDdk1zTuw96b8', 'GfcUagd4Toab3pDWxMUyE9T9dHH2fMSL5FtBkiN5ZhL3', '5EY3KBsGQHRfGVKe7AFNZp11wdvbweJGfcC4j2LqvRRp', '7RKLgEuNkduvm3eswmZCrwpoysbi6EUxBUp9MxR6i13v', 'DfCbPoZopWE4ih4VwMFCicvqDhCWVVC6P7pcuiwyLsGg', 'AgXBuET6USvd8GEd6snhbBUzS3xuv1bfyHr21D8ENNab', '8P6MSapsiinU5nZun4sXt2s12mbgRhHe4pEUx4iQvhz2', 'EKuZbJiEKzHQBFHk64ULZcntKaJMvA1rJA9na5FAUQM7', 'FpTCRWMtxmjvowPiAhkfWU9AD2u6yfdueHW9KNeDBAfX', 'HJWTbv1TUPfBM8buZc42E7hRKzRniZKEBtnWwCJcEBdR', '9owrYVVBTKhjCUtdpy2JjWCf7Ek3APNAAKBBgiN4ia2b', '3fLzoYNw2BAyH12bxHHF7TCruQqbNZ9G4XSVTr4ijDRt', '497iY7r4WwuHwWSnYKmhf9sVezoPkEqcz68qtGBchnqE', '8CkMXScX8jXpdqji5JbkU8QTaLtTYuNCu1xDeFnTj8hc', 'DzYEXiZnoADvpuhUPACujojCuA5PAVy1ms9bevgchDfV', 'Aq8RSwGiwEx6ohscqNGtxLE3wvZXCZMCFkgPaeJpd4yY', '6FpbYYgg1vmEc5mf22NYsg3EsCnSKRCGLwJmfuDqjF3R', '8SUBCiYmbQk9BjcgyqruWnDFEdXgAjQLy1WdgLzY5Uff', 'HBF4caJffM3YdW9xxM64uBeJQK4evV8KBqgjeWF46y46', 'oBXQq8MdA9wSmc2UoXUgR756RLx3Z6tQoymQ2DhFgWf', '4ypVS4iT1QU4LfA7RikCYzkmMFZ5L67WjoYZXgBA4Mr9', 'En8NBMRfBAt8FD2dDPdhiCH5npziq3mmp2kTszKMCZG', 'GKtMBZnDNTtpRdofJ3DCaL1cbAmDzdkfbKFQPzHuv82N', 'GNQMJun1u9Lv51eWarRGxFZrHCMiYXFAkSjSXR3XzEFA', '5kZto5i6qL2a8Ks23mPEz4GRwWNxnQ73wbSe4j9Lf1ds', 'EFYRTMA9DPANTax78YvWMThKXrLFK28pFX8En8kSfySK', 'J1oqqJme8KB2km1UdMVfsowSgcxGHLjCNss7xsDPSn1K', '9QmdjiF5hDpgKeGvfUoufUx3yw8dQXhKz1ksn6Yh38f', 'DFtmMUb7KuiEQnEDkZaVuCaGVpgo9hCqrR5viTLEQ58E', '7Kxm61hfejNp9Z7wSyaaxZKeZpsRzBGkoqbZz1fBxQ3n', '47ifF538fR1hRUpHau3cGW6LKKvM92RrYSumoWzz8CEZ', 'FnGsMjtjF8dL4HE8UvHviyieeVmM2KUPeBfL8QtyXkkS', 'AfGiDdHt5AC6DUw9qphrZe6ZAdxUz4sWfmj7P8e9qEmX', 'Gcxyrmy5e6NJwVjf2ySUpCaGtuYawD8tkDCSHjQ15UmA', '5Qrz9rBXEfDmHsYqaS4rkTcLBAHVCz1oNfvvhr5DbcgJ', '6W6oXarNB3U9Z6gcxvAERo8Ztw989xBm3nbRas5PbJqn', 'Fa9fjfzhKQ2MrS7CZ5pXViTF4YRC1gudhBxXBhWzxgCq', '6gAqRAqdgc69dWVkopNZH2mEpgidZZWp9og54KVUkZJJ', 'ByQ1Pf1eZih4qUaJA8BJjWiaDwSPbyYjKNG3RN8XFKRP', '6MziYC6iGqQep56C1JwcU8sAYtrjqa8Efv1bs4Pvxhoo', 'C1iJKreHn2PZXgW1jbZCiDtm22ihEX4YouJuCLg7eC31', '5kYEqKVqfrcFJp2iWzeXxsCSkHCqw7Q4whu6GrRz3uzT', '6GVSvWHrDsLWg3Bjz1MUkhHZwu22z9SuLK9P7Md3iDyp', 'GbFP7mVrjBYdtrikrzDmuX4tciCnrmfBASUVyppv4Ea8', '9wvELzsAw197Q2gKP8oKMKCF4ktoLSGnorzUM1mMrkqY', 'CCGkeLALtLsx9BVpjg4B4HhvQCDPeJA8DwkDtkhxBtMM', '6gAqRAqdgc69dWVkopNZH2mEpgidZZWp9og54KVUkZJJ', 'BukKiQcQGXaHHmSpAoocbmeqrw7b6QoeeZb8YMPABhTb', '9eo8zheG7QepXfieAo353YVFPQoNG5KB6kDARXxa8fpv', 'FUJMbpv4GBJcjDNtGD7ab6gMP9BEZt6Vje2b8NUjgxQU', '3HmgrY1YLB5sETk75zFskouuCbssLZks1WGmhcQHMXFQ', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', '1quEnmuwhnSM2hfPQbXcZSXZ8rixzSpff1sVr3yrCob', '5VremuHGxPmTDaeHwbEAx2DsjoVwjYbSs5Zmu5eXWLgP', '9MqtZQ7ZHcNWsEDgPxiGptm77pqfo46JCnwWUHZejMkA', '69835KX9yCPsQVMWWG7Zu1fpTxpxbeTNUZeZB1BNjD7U', '5UgBoSzjjhFWeqE4o6N3XgwphENAP7evvuZ5PFghYNd8', 'FUJMbpv4GBJcjDNtGD7ab6gMP9BEZt6Vje2b8NUjgxQU', 'vCf4mmhmfTBxfSga482prmez7w3h3327DKwpMNaohkH', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', 'Hs4UCJdQcXJQmwyTMWow5ytMvEQhu9ZXDZ17TF8Xtw5E', 'H8EhNbSV9W6pkrh4EGyA8rE5xwjVpsHLKHQBdXuLPKA3', 'xgMSrcXibq4pgqUHPbsMy4VKVLXpteJ1b5Fgg9aywA5', '69yJGrMMHjLKGgY4sNkPVG6WYkRavstQtH9P2sro3djF', '6XwkZXvkP95GXvD66AGcRxvU4dsbPHE2caTUW8TENo1b', '9QvmBDjDVWQtctm3w8cquvpSKxwrcruD5626ycVE7BEo', '5ETN9qpGcoCTcaGKWpPnR3pYTE8ScgvLaPVbZ6Fpxbop', 'EsZayZVcuA5BmwkpPVghF6TwASbmf72vG4PwidEf3qx1', 'AjZrobCLSQqjbwbeGjBX8Jgksf3CyoieQpEwZYHnHMj4', '5qi9ZGQuQ3rLkprQfRUNmUm1AFK5LUorj9mep8Jzcutp', 'CaBVSqjhBqWEvpzRbcsCuZ31xigsv7hxrwwFyVfBfGFq', 'CpSCYYJ7zF66qzNXdgSeNBPZ74JsrPWpvbDUMTc4NsRM', '4eHGCMA8LExhDkMFVmFq8XWPZddkNXkBLo5vmihK6fy5', 'GCnHo7mkzT8fS69S3zy6Tf6M77J2SNmz1m1zTNZjbZdy', 'Efee7Mruc4XU5vGMxJrw6ZgHuAXV8gD7mCueL7neF7su', 'FfuXLjQN3XaE55UamrgxKnzRiQt8LhKtp9goRPDQpVM7', 'B5k2VFdXyLh8bssntUe9gbhQVou2EaMHfptdr8DpnS5w', 'H8EhNbSV9W6pkrh4EGyA8rE5xwjVpsHLKHQBdXuLPKA3', '69yJGrMMHjLKGgY4sNkPVG6WYkRavstQtH9P2sro3djF', 'JCJjksdy8XKsFjjqDeHSh3WnkohVaQ4Tz7Uufnyu9Jj3', 'AbebiA73pL6HF4LoSyKmakj2cSxbnj5ghHCtcUy2E5QA', 'GDATQarHLakGzDUA1GGt3QVB33bSWVtzmchy7KwPXGQL', '3cmdxhMiUHcTqFVNqSuJknkHSKw4Hb7GveTKJFR4SU7f', 'F9n6CGVhpnD2wCTTJNJrB1j1SphcYg2XwpwrfRbqvqo4', 'Fuf9xNxFuRzZviXEPGKHnakLvxALtzXfhzVx1HbTr4Ci', 'J1AVx77hioWweQS5VcYpQ335smqV192DcSByeViZvU5p', 'Hs4UCJdQcXJQmwyTMWow5ytMvEQhu9ZXDZ17TF8Xtw5E', 'xgMSrcXibq4pgqUHPbsMy4VKVLXpteJ1b5Fgg9aywA5', '6XwkZXvkP95GXvD66AGcRxvU4dsbPHE2caTUW8TENo1b', 'AfGiDdHt5AC6DUw9qphrZe6ZAdxUz4sWfmj7P8e9qEmX', '9QvmBDjDVWQtctm3w8cquvpSKxwrcruD5626ycVE7BEo', 'P8EtXYkUbC5yYR7v8apaoCN2g9E73L29VdgHkdgYWTx', '9yC3yTHSUpsPP2Qr21ikcMrPzxDtSt8rmBCGcBtu2fKw', '2kxnQzpdGaxVrpC7eaX3yCCSHS32N8bHEJvj2NbHmWef', 'FdQ3Jqdh5ALxmpv86BPz6pUWaevE7bTnYEgCJQ7EsGiv', '6SMUWEn7TuK3PVsrfk4rcgSJE7FMuX16wBQQfn6avim', '6gAqRAqdgc69dWVkopNZH2mEpgidZZWp9og54KVUkZJJ', 'DyhaC3dasjTk95977st9kvkWBNsumhVYHHbhNF41i235', '8DRFoXNoX6ux4oA59C3dHEPXAyupSCWQaKBB8YG5bC9C', 'A8tcSbBgzknNJt2o7t84BnDmHMHSFEMWw5U3ZNGp4gwh', 'GbFP7mVrjBYdtrikrzDmuX4tciCnrmfBASUVyppv4Ea8', '7PtkpXTHuWGjiKbctd2rgLYYh7xCBPkkoR96u2kCu93o', 'Frb85cLtAQvLs4cBZxtQ1cbostKPExbNtepV5t63NMXV', '3d5JpVXM8j9YDRRQHhB6jDZYttx84qAyNGY2aYvkLwwb', '65zuMnox82FoazB1N4reAyPfTQE7ChAMHzS8NG4Rm37D']

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5Dn..Vn8_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________8tX..vk9__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________4ZS..C5p
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________EL3..T6v__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________38c..wdv__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________4ZS..C5p________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \
                                                                                                                                                                                                                                                                                            ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________4yU..itK__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________Cx4..cpu__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________8dv..HVX__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________37W..57o__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________H6c..TPD__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   _________________________________________________DGr..wZe
                                                                                                                                                                                                                                                                                           /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /
                                                                                                                                            ___________________________________________________________________________________________________________________________________________7mL..jsK__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________CiU..3r8__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________DGX..sUL__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________9sk..bdN__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________215..PtY__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________CAp..rJD__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________7cE..Yk5__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________CJ4..uUK__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________J1H..ivN__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________4jj..74N__________________________________________________________________________________________________________________________________________                                                                                                                                                                                                                                                                                                   ___________________________________________________________________________________________________________________________________________DGr..wZe_______________________________________
                                                                                                                                           /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                 /                                                                                                                                                                                          \
                                                                    ___________________________________________________________________CND..pFF__________________________________________________________________                                                                                                                                                   ___________________________________________________________________4CR..tJ1__________________________________________________________________                                                                                                                                                   ___________________________________________________________________3PG..6Zy__________________________________________________________________                                                                                                                                                   ___________________________________________________________________6Xp..4Mm__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Azo..jZ1__________________________________________________________________                                                                                                                                                   ___________________________________________________________________5c1..8MF__________________________________________________________________                                                                                                                                                   ___________________________________________________________________HmS..wLv__________________________________________________________________                                                                                                                                                   ___________________________________________________________________FRx..w4M__________________________________________________________________                                                                                                                                                   ___________________________________________________________________G1U..rW7__________________________________________________________________                                                                                                                                                   ___________________________________________________________________FFH..LJy__________________________________________________________________                                                                                                                                                   ___________________________________________________________________GG6..kWy__________________________________________________________________                                                                                                                                                   ___________________________________________________________________ECv..tkL__________________________________________________________________                                                                                                                                                   ___________________________________________________________________CXV..Rzi__________________________________________________________________                                                                                                                                                   ___________________________________________________________________6qy..aKC__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Gre..8QE__________________________________________________________________                                                                                                                                                   ___________________________________________________________________8ou..NLW__________________________________________________________________                                                                                                                                                   ___________________________________________________________________5Bx..uzT__________________________________________________________________                                                                                                                                                   ___________________________________________________________________5F1..Dkp__________________________________________________________________                                                                                                                                                   ___________________________________________________________________9xE..dkq__________________________________________________________________                                                                                                                                                   ___________________________________________________________________Ckr..syR__________________________________________________________________                                                                                                                                                   ___________________________________________________________________2GF..nCM__________________________________________________________________                                                                                                               ____65z..37D
                                                                   /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                                                                 /                                                                                                                                             \                                                                                                             /
                                _______________________________3g2..QRQ______________________________                                                                           _______________________________Bj4..FK7______________________________                                                                           _______________________________BCB..ws3______________________________                                                                           _______________________________3fX..q7g______________________________                                                                           _______________________________6pf..VWz______________________________                                                                           _______________________________GRT..s4d______________________________                                                                           _______________________________5XF..a9q______________________________                                                                           _______________________________3E6..5p8______________________________                                                                           _______________________________F7Y..p6V______________________________                                                                           _______________________________CfH..xKo______________________________                                                                           _______________________________EN2..jEB______________________________                                                                           _______________________________2gq..rqB______________________________                                                                           _______________________________Hh7..2Mo______________________________                                                                           _______________________________2Sf..ctW______________________________                                                                           _______________________________BRZ..wQg______________________________                                                                           _______________________________CGk..hZQ______________________________                                                                           _______________________________J27..NFd______________________________                                                                           _______________________________GMG..8Q6______________________________                                                                           _______________________________8YH..Rii______________________________                                                                           _______________________________5sE..3CK______________________________                                                                           _______________________________DtK..DPw______________________________                                                                           _______________________________6JE..KHt______________________________                                                                           _______________________________GiS..zn1______________________________                                                                           _______________________________6PT..pcG______________________________                                                                           _______________________________H4f..NqP______________________________                                                                           _______________________________2SK..Kf7______________________________                                                                           _______________________________CMA..mjy______________________________                                                                           _______________________________Cdj..6g2______________________________                                                                           _______________________________2uo..weQ______________________________                                                                           _______________________________2LE..iym______________________________                                                                           _______________________________4BN..mmK______________________________                                                                           _______________________________7Dj..G1h______________________________                                                                           _______________________________FLN..Xu4______________________________                                                                           _______________________________7L5..Bpx______________________________                                                                           _______________________________G7Z..2mk______________________________                                                                           _______________________________BCe..oaK______________________________                                                                           _______________________________ADt..v7e______________________________                                                                           _______________________________8TV..VfS______________________________                                                                           _______________________________C6R..7yv______________________________                                                                           _______________________________EBW..b2L______________________________                                                                           _______________________________2fv..ZzM______________________________                                                                           _______________________________JBn..zPo______________________________                                                                  ____65z..37D
                               /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                         /                                                                     \                                                                /
              _____________7Tp..Q3t____________                                       _____________B7Y..eKe____________                                       _____________AVo..TwC____________                                       _____________CfT..q7W____________                                       _____________FEA..Wf9____________                                       _____________HEX..QBo____________                                       _____________pez..vYm____________                                       _____________7vP..8ft____________                                       _____________4Vd..S3m____________                                       _____________2Nf..RcM____________                                       _____________4Vc..VrK____________                                       _____________CQR..8ef____________                                       _____________7XT..MUC____________                                       _____________DhY..DYU____________                                       _____________CuE..tqm____________                                       _____________62h..QiX____________                                       _____________7Qr..qDk____________                                       _____________FSc..YSC____________                                       _____________22C..4F9____________                                       _____________6jV..KDM____________                                       _____________ApF..Wkh____________                                       _____________ESP..7bf____________                                       _____________B7Y..eKe____________                                       _____________29d..ZQa____________                                       _____________JE3..kKb____________                                       _____________GTY..V1j____________                                       _____________9he..gdc____________                                       _____________34C..2jx____________                                       _____________Biz..jcp____________                                       _____________AaS..MPk____________                                       _____________Ae1..sij____________                                       _____________4De..xp9____________                                       _____________594..dCU____________                                       _____________VMk..CZx____________                                       _____________Dhs..SLV____________                                       _____________mkD..CKG____________                                       _____________BLJ..X14____________                                       _____________Vac..2M5____________                                       _____________5T4..STr____________                                       _____________9mX..faE____________                                       _____________2Ad..ER3____________                                       _____________6jd..Xya____________                                       _____________7kc..BFW____________                                       _____________4C8..RRc____________                                       _____________56W..Gvf____________                                       _____________7Kt..tGw____________                                       _____________8ap..Gr6____________                                       _____________EGj..Mr4____________                                       _____________FKQ..UYW____________                                       _____________6S8..8km____________                                       _____________FWU..yPW____________                                       _____________9H8..uq6____________                                       _____________EeU..oyX____________                                       _____________Bky..Pu8____________                                       _____________ABb..eMF____________                                       _____________Chy..www____________                                       _____________Gkj..ZmJ____________                                       _____________8Mz..7g6____________                                       _____________AHR..E65____________                                       _____________8Y5..979____________                                       _____________Fpk..gwu____________                                       _____________H3n..PNw____________                                       _____________CrQ..kXJ____________                                       _____________BGV..v4Y____________                                       _____________41r..naP____________                                       _____________4rX..sWv____________                                       _____________AaQ..HtN____________                                       _____________6cd..KSz____________                                       _____________2zV..yFw____________                                       _____________Cts..ddH____________                                       _____________FDt..XCx____________                                       _____________DAZ..zX8____________                                       _____________83g..oKz____________                                       _____________6bw..p86____________                                       _____________HVR..2sT____________                                       _____________Hix..FRa____________                                       _____________8JR..CmE____________                                       _____________8oE..uWz____________                                       _____________G3Z..Ee1____________                                       _____________AZY..u53____________                                       _____________8aR..L4P____________                                       _____________339..UQN____________                                       _____________7vW..rL3____________                                       _____________FGC..ZDR____________                                       ____65z..37D
             /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /                                 \                                     /
     ____H7S..Rjg___                     ____696..zHN___                     ____2cQ..iY2___                     ____G5C..5KD___                     ____uvZ..5db___                     ____7bM..nfv___                     ____CqH..iSB___                     ____545..Y7G___                     ____3oN..C7j___                     ____4qG..rsT___                     ____4b2..bGo___                     ____56u..76o___                     ____9Tr..cVZ___                     ____H1R..79W___                     ____DVF..L1m___                     ____6ah..V4h___                     ____72p..Uuo___                     ____Chv..SPU___                     ____6E3..47N___                     ____3TZ..SDt___                     ____4BL..whL___                     ____6KG..5H3___                     ____2ah..Lyy___                     ____HGV..CXq___                     ____Gs2..UCv___                     ____Erh..csR___                     ____yqY..oDQ___                     ____GZ2..K5h___                     ____545..Y7G___                     ____2cK..6PK___                     ____48K..vT6___                     ____24A..2zR___                     ____7bi..qgv___                     ____4FQ..JrW___                     ____85x..vt8___                     ____8Vs..hna___                     ____HiQ..jr3___                     ____BCc..URY___                     ____APJ..8pg___                     ____B1r..9NQ___                     ____2ht..eP3___                     ____9EH..mDD___                     ____2XU..ffG___                     ____52V..kDA___                     ____2cQ..iY2___                     ____G5C..5KD___                     ____uvZ..5db___                     ____CUU..pUw___                     ____39j..Xca___                     ____4qG..rsT___                     ____3RB..mH4___                     ____BBP..Xmt___                     ____GxJ..iRn___                     ____Cow..4rY___                     ____Dyt..xuQ___                     ____9wx..9gk___                     ____7n9..QEF___                     ____2CD..x73___                     ____99i..FbQ___                     ____CMk..zvW___                     ____GkC..nNs___                     ____exr..LE7___                     ____7hg..2xA___                     ____9Cn..Kns___                     ____Er6..9ov___                     ____MWH..GBQ___                     ____3ke..swa___                     ____9BN..Zbq___                     ____2cK..6PK___                     ____48K..vT6___                     ____2dQ..3ZB___                     ____4FQ..JrW___                     ____85x..vt8___                     ____C1u..3DQ___                     ____EVy..AJR___                     ____EwY..J4A___                     ____F7m..uvU___                     ____Bd3..uPi___                     ____wbd..ngc___                     ____CBF..89a___                     ____4MG..Lzv___                     ____CjJ..XMP___                     ____GWA..GPw___                     ____CW4..i4Z___                     ____EPU..QAa___                     ____Haj..HUm___                     ____2cr..agS___                     ____EVy..AJR___                     ____4g9..Hor___                     ____FfG..UB2___                     ____wg5..MC6___                     ____Eho..eW6___                     ____CM6..ora___                     ____ABt..M5S___                     ____xJn..viW___                     ____3Hr..Kt2___                     ____39E..kQ3___                     ____EiD..qeE___                     ____85x..vt8___                     ____2cr..agS___                     ____EVy..AJR___                     ____His..HSX___                     ____8fS..NW6___                     ____4Cf..2cx___                     ____12W..KMK___                     ____2j6..kTk___                     ____GWJ..ghm___                     ____Fx6..zy5___                     ____9CK..ukt___                     ____EJq..onz___                     ____DQH..Xk9___                     ____Gnn..AQT___                     ____AXH..cRf___                     ____58h..YTM___                     ____58h..z3C___                     ____GAL..hD4___                     ____5FY..quw___                     ____DSM..DMW___                     ____4MP..ebh___                     ____Dwn..8Kz___                     ____EXa..JfN___                     ____9o5..cej___                     ____4pM..jSy___                     ____4Ge..ixQ___                     ____23r..EMH___                     ____7z3..HYA___                     ____8tM..JMB___                     ____BJD..kdP___                     ____BAc..qZm___                     ____Cye..92q___                     ____58h..YTM___                     ____6u6..HXv___                     ____DGM..KFX___                     ____Fs1..mpF___                     ____97R..jNL___                     ____BTu..BJf___                     ____GG7..E6s___                     ____Gar..3ni___                     ____6ys..JRy___                     ____HgA..mD6___                     ____2zT..A5q___                     ____43E..76a___                     ____6Ph..Fyz___                     ____7mi..Me3___                     ____2vR..nL7___                     ____67J..koG___                     ____7r8..AkL___                     ____5jz..8zo___                     ____5ed..RJ8___                     ____3Qh..kGD___                     ____9jb..BxH___                     ____A5K..wYp___                     ____H2x..zPo___                     ____Ajf..nnU___                     ____5P9..vyS___                     ____5Vy..fUP___                     ____69o..wF3___                     ____8u5..PzD___                     ____ELZ..7wA___                     ____6Nn..L2o___                     ____B3a..nYd___                     ____EVk..8aG___                     ____8Da..ZwK___                     ____CtM..Ai5___                     ____AXZ..hKK___                     ____H4p..mNT___                     ____4jM..vNT___                     ____BDh..vAw___                     ____65z..37D
    /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /               \                   /
5kY..uzT          Ggf..jef          DZj..isT          CDW..QNJ          7we..nM6          Guj..fUm          GnE..KD7          A4B..QLM          FHf..diA          Bmm..66M          Chr..qrJ          EyC..vpm          EZD..XZF          4L6..MyJ          Ein..sBQ          CMk..NSq          CLw..U6o          GnJ..sHt          DCv..Eif          H6Z..pp3          4ey..vuD          EkG..WTG          73A..jDd          DoQ..uhb          Ann..DYa          9KQ..eSn          5fj..No3          GiN..Fii          9PW..gHW          BNN..5SH          3ZY..z7o          5ET..bop          FUk..zNa          CTB..9um          GP6..zgP          2xE..GhL          4L6..MyJ          eCn..v6K          6t4..86k          EsZ..qx1          ESR..HCY          89v..Kcf          C3y..Sci          H78..sf8          6i5..3XH          2it..Y2n          7s1..kqd          2DE..nUJ          CL4..XVB          6Vr..s6M          Fe8..VHy          7dq..teW          Hk7..oww          Bwo..c8q          GnW..HQm          E5D..quv          Ein..sBQ          CMk..NSq          DCv..Eif          B5k..S5w          5nT..bXs          7Z6..C1k          7U4..Fsq          H8E..KA3          F94..pTc          CLw..U6o          GnJ..sHt          H6Z..pp3          6Gs..iam          7Z4..qXy          2kr..W1H          9Qm..38f          Eyj..Cbe          Dp9..Zvp          AYq..gS6          4ey..vuD          BYC..9yN          JDe..A9D          2c5..Q52          9RX..jrM          6HK..LDQ          G96..jTD          EFW..ye9          AP5..sMX          FRc..fuv          HAE..oZX          5kY..uzT          Cco..Z9R          7we..nM6          Guj..fUm          GnE..KD7          A4B..QLM          FHf..diA          Bmm..66M          5mD..U6Y          Chr..qrJ          7rU..ATX          GnJ..sHt          DCv..Eif          H6Z..pp3          4ey..vuD          CJr..dbm          J8A..jfX          73A..jDd          GpJ..Nsw          B2m..5Dx          GiN..Fii          9PW..gHW          97E..1HN          FXh..U2X          HT2..hza          3ZY..z7o          5ET..bop          Gfc..hL3          9Hf..riV          rNZ..iAb          5vh..XAk          eCn..v6K          5c1..czA          9ta..YWi          AfC..3KV          9zQ..zCP          6eh..UrH          8mM..FRQ          Ctt..vvo          8P6..hz2          CJr..dbm          4BJ..s2s          3jD..4Gu          FpT..AfX          ERM..mkP          AjZ..Mj4          CY9..pRW          98T..dXK          7k2..bkY          A4V..4Mo          DCv..Eif          B5k..S5w          5nT..bXs          7Z6..C1k          79k..9kF          7U4..Fsq          GnJ..sHt          H6Z..pp3          6Gs..iam          7Z4..qXy          2kr..W1H          Akk..xQg          G2G..VmA          DFt..58E          9W4..Q1L          BYC..9yN          AAZ..Za5          AP5..sMX          9uf..9oH          5mD..U6Y          CDW..QNJ          7we..nM6          Guj..fUm          FHf..diA          Bmm..66M          Db7..P6S          Gpe..52V          H6d..MMU          7S6..VDm          GVS..Trz          EyC..vpm          79j..7FJ          9eZ..WjL          Ein..sBQ          CMk..NSq          B5k..S5w          9Qm..38f          Dp9..Zvp          G2G..VmA          DFt..58E          Hs4..w5E          B2g..3EG          6z5..jrW          AjZ..Mj4          FuD..55K          Cjy..oVs          C3L..BEB          M4k..NiH          7mV..XPP          95h..thK          WUb..zMF          D1C..BC4          FX5..1AD          7U4..Fsq          H8E..KA3          4UE..yyG          9iv..VEh          69y..djF          Bkf..JFb          BkJ..2zL          6Gs..iam          7Z4..qXy          9Qm..38f          Dp9..Zvp          G2G..VmA          DFt..58E          Hs4..w5E          WLB..JX1          47i..CEZ          BYC..9yN          6HK..LDQ          9uf..9oH          FRc..fuv          6SM..vim          51D..fHo          588..83n          9N9..wAR          6gA..ZJJ          CxX..D8G          CDW..QNJ          75K..WsL          AqH..tRL          5pE..9D6          3aT..HaV          EYn..1vM          6gA..ZJJ          EyC..vpm          8HY..Qd6          5pE..9D6          9Qm..38f          DFt..58E          7Kx..Q3n          BYC..9yN          47i..CEZ          FnG..kkS          AfG..EmX          GYN..6b8          Gfc..hL3          5EY..RRp          7RK..13v          DfC..sGg          AgX..Nab          8P6..hz2          EKu..QM7          FpT..AfX          HJW..BdR          9ow..a2b          3fL..DRt          497..nqE          8Ck..8hc          DzY..DfV          Aq8..4yY          6Fp..F3R          8SU..Uff          HBF..y46          oBX..gWf          4yp..Mr9          En8..CZG          GKt..82N          GNQ..EFA          5kZ..1ds          EFY..ySK          J1o..n1K          9Qm..38f          DFt..58E          7Kx..Q3n          47i..CEZ          FnG..kkS          AfG..EmX          Gcx..UmA          5Qr..cgJ          6W6..Jqn          Fa9..gCq          6gA..ZJJ          ByQ..KRP          6Mz..hoo          C1i..C31          5kY..uzT          6GV..Dyp          GbF..Ea8          9wv..kqY          CCG..tMM          6gA..ZJJ          Buk..hTb          9eo..fpv          FUJ..xQU          3Hm..XFQ          B5k..S5w          1qu..Cob          5Vr..LgP          9Mq..MkA          698..D7U          5Ug..Nd8          FUJ..xQU          vCf..hkH          B5k..S5w          Hs4..w5E          H8E..KA3          xgM..wA5          69y..djF          6Xw..o1b          9Qv..BEo          5ET..bop          EsZ..qx1          AjZ..Mj4          5qi..utp          CaB..GFq          CpS..sRM          4eH..fy5          GCn..Zdy          Efe..7su          Ffu..VM7          B5k..S5w          H8E..KA3          69y..djF          JCJ..Jj3          Abe..5QA          GDA..GQL          3cm..U7f          F9n..qo4          Fuf..4Ci          J1A..U5p          Hs4..w5E          xgM..wA5          6Xw..o1b          AfG..EmX          9Qv..BEo          P8E..WTx          9yC..fKw          2kx..Wef          FdQ..Giv          6SM..vim          6gA..ZJJ          Dyh..235          8DR..C9C          A8t..gwh          GbF..Ea8          7Pt..93o          Frb..MXV          3d5..wwb          65z..37D

Compute the hash of one of the articles

#!pip install java-random
import re
import hashlib
from javarandom import Random

class MinHash(object):
    def __init__(self, num_perm=128, seed=42):
        self.num_perm = num_perm
        self.seed = seed
        self.prime = int((1 << 61) - 1)
        self.proj_bits = 60
        self.max_hash = int((1 << 32) - 1)
        
        rng = Random(seed)
        self.perm1 = []
        self.perm2 = []
        self.hashes = []
        for i in range(num_perm):
            self.perm1.append(self._getrnd(rng))
            self.perm2.append(self._getrnd(rng))
            self.hashes.append(self.max_hash)

    def _getrnd(self, rng):
        b = [ 0 ] * int((self.proj_bits + 7) / 8)
        rng.nextBytes(b)
        v = 0
        for t in b:
            v = (v << 8) + (t if t >= 0 else 256 + t)
        return v % self.prime
        
    def update(self, item):
        h = int(hashlib.sha1(item).hexdigest(), 16)
        for i in range(self.num_perm):
            proj = ((self.perm1[i] * h + self.perm2[i]) % self.prime) & self.max_hash
            if proj < self.hashes[i]:
                #print(item, proj)
                self.hashes[i] = proj
                
    def digest(self):
        return self.hashes

print("LSH sample")
    
text1 = "This is a test, checking texts similarity"
h1 = MinHash(10)
for w in re.split("[\\s.,/]+", text1):
    h1.update(w.encode('utf8'))
print("\n" + text1)
print(h1.digest())

text2 = "This is a test, checking paragraphs similarity"
h2 = MinHash(10)
for w in re.split("[\\s.,/]+", text2):
    h2.update(w.encode('utf8'))
print("\n" + text2)
print(h2.digest())

text3 = "Paris is nice in the autumn"
h3 = MinHash(10)
for w in re.split("[\\s.,/]+", text3):
    h3.update(w.encode('utf8'))
print("\n" + text3)
print(h3.digest())
LSH sample

This is a test, checking texts similarity
[34496072, 64928703, 1518827583, 1855999512, 168639963, 449703904, 1025577060, 1762278405, 300275871, 418448513]

This is a test, checking paragraphs similarity
[34496072, 64928703, 1518827583, 1855999512, 168639963, 449703904, 1025577060, 1575904496, 300275871, 418448513]

Paris is nice in the autumn
[64757976, 64928703, 312058313, 500879909, 579335646, 821197043, 93461980, 1212287570, 1585736204, 979023225]

We take one of the articles and replace or Google references with Microsoft

text = sample_article
#print(text)

minhash = MinHash(num_perm=10)
for w in re.split("[\\s.,/]+", text):
    minhash.update(w.encode('utf8'))
print(minhash.digest())

text = sample_article.replace("Google", "Microsoft")

minhash2 = MinHash(num_perm=10)
for w in re.split("[\\s.,/]+", text):
    minhash2.update(w.encode('utf8'))
print(minhash2.digest())

recordHash = "LSH(10):" + json.dumps([ int(x) for x in minhash2.digest()])
print("Exact match: ", text==sample_article)
print("Locality Sensitive Hash match: ", minhash.digest()==minhash2.digest())
[646865, 617261, 1346772, 16793851, 8068838, 4173180, 15452610, 2220349, 18864302, 2868003]
[646865, 617261, 1346772, 16793851, 8068838, 4173180, 15452610, 2220349, 18864302, 2868003]
Exact match:  False
Locality Sensitive Hash match:  True

Check the locality sensitive hash presence and validate the Merkle Tree

reply = nodeApi.verifyMerkleHash(session, tree, recordHash, "LSH(10)+SHA-256").get()
#print(reply)
print(reply["data"])
true

Split Learning

In this sample, we configure 3 local nodes for collaborative training. The reason for doing it locally is to make it easier to understand how the protocol works and to have access to every node in the network to make the whole process more transparent.

Node configuration

  • to have 3 nodes participating in split learning, install the Weavechain nodes if not done already, the easiest way is by starting them as a docker, using the following method:
  curl -O https://public.weavechain.com/file/install_nodes.sh
  chmod a+x install_nodes.sh
  ./install_nodes.sh 3
  • this installer will handle the creation of the directory structure for the 3 nodes. After running the installer, the directory structure will look like this:
.
└── nodes
    ├── weave_node1
    │   ├── config
    │   └── storage
    │       └── files
    ├── weave_node2
    │   ├── config
    │   └── storage
    │       └── files
    └── weave_node3
        ├── config
        └── storage
            └── files
  • to subsequently start/stop the nodes:
  docker stop weave_node1
  docker start weave_node1
  docker stop weave_node2
  docker start weave_node2
  ...
  • install a local jupyter jupyter server to connect to the node (if not done already)
  • run the jupyter installer in the root directory, so that the config directory of the jupyter notebook container is next to the nodes:
.
├── config
└── nodes
    ├── weave_node1
    ...
  • allow running local docker images by running
  docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 0.0.0.0:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
  • to run split learning, we will need to connect to one of the node's API and for that we will use weave_node1, making that node the initiator of the split learning process
  • to do that, we will need to copy the node's config directory to the jupyter notebook's config directory
  • run the following from the parent directory:
cp nodes/weave_node1/config/* ./config/
  • with the config and keys copied into the jupyter container, we can use the API to run split learning

Sample of split learning


In this demo we use 3 nodes for collaborative training using this dataset:

  • we will preprocess and split the data, so each node has its own part
  • since we are using 3 nodes, we will have 3 CSV files
  • we will copy the CSV files into each node's private file storage so they can access it
mkdir nodes/weave_node1/storage/files/private_csv_files
mkdir nodes/weave_node2/storage/files/private_csv_files
mkdir nodes/weave_node3/storage/files/private_csv_files

cp melanoma1.csv nodes/weave_node1/storage/files/private_csv_files/melanoma.csv
cp melanoma2.csv nodes/weave_node2/storage/files/private_csv_files/melanoma.csv
cp melanoma3.csv nodes/weave_node3/storage/files/private_csv_files/melanoma.csv
  • out of the 3 nodes, one will initiate the training and notify the other 2 about it
  • we will access the initiator node from the notebook
  • the other 2 nodes will start their model's training using the data that we copied into their private file storage

Docker images structure

  • split learning executes similarly to a compute task, here is a sample for that: Confidential Compute Sample
  • this means that we will use docker images to execute the training
  • since in the network we have 1 initiator and the others are participants, we will have two docker images:
    • one for the participants
    • one for the initiator

The participant image

  • for this sample we can use the following image for the participant: gcr.io/weavechain/split_nn_participant
  • the participant image will be the docker image each participant uses in a compute task to trigger the training process.

Participant image structure

  • the steps for every participant within the compute task are the same:

1. Connecting to the node

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

nodeApi, session = connect_weave_api(None)

2. Fetching the training data

reply = nodeApi.read(
    session,
    ".internal_task_params",
    os.environ["WEAVE_TASKID"],
    None,
    READ_DEFAULT_NO_CHAIN,
).get()
params = reply["data"]
  • the params contain the data necessary for the training, e.g. scope, table, input/output fields, nr of epochs, etc.
  • example for fetching and preparing training data:
reply = nodeApi.read(session, scope, table, filter, READ_DEFAULT_NO_CHAIN).get()
trainingData = {
    "data": reply["data"],
    "input_fields": input_fields,
    "output_field": output_field,
    "epochs": epochs,
}

3. Training the model

  • for example, we assume that we have the model built for the dataset
traindata = TrainingData(data, device, input_fields, output_field)
model = Model()
  • create and configure a train loader, optimizer, etc.
splitNN = SplitNN(
    [model.client_model, model.server_model], [optimizer, server_optimizer]
)

server_model_state, server_optimizer_state = train(
    splitNN, train_loader, epochs
)

4. Sending the model to the node base64 encoded

  • we encode the server model from the step before
result = {
    "server_model": server_model_base64,
    "server_optimizer": server_optimizer_base64,
}
weave_task_output(nodeApi, session, json.dumps(result))

These are the summarized steps that a participant's compute task executes. After these steps are finished by the participant during the compute task, the trained model is sent to the initiator.

The initiator image

  • for this sample, we can use the following image for the initiator: gcr.io/weavechain/split_nn_initiator
  • Similarly to the participant image, the initiator image will be the docker image the initiator uses to aggregate the models from the participants and train the main model.

Initiator image structure

  • the steps within the compute task are the following:

1. Connecting to the node

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

nodeApi, session = connect_weave_api(None)

2. Fetching the models from the participants

reply = nodeApi.read(
    session,
    ".internal_task_params",
    os.environ["WEAVE_TASKID"],
    None,
    READ_DEFAULT_NO_CHAIN,
).get()
params = reply["data"]

models = params["data"]

3. Training the main model

  • here the training happens by using the models from the participants

4. Sending the results to the initiator node base64 encoded

result = {"server_model": server_model_base64}
weave_task_output(nodeApi, session, json.dumps(result))

These are the summarized steps that the initiator's compute task executes.

Jupyter Notebook example for the API

  • we will trigger split learning via the API call using the jupyter notebook we configured above
  • more information about the jupyter server configuration here
  • after opening the notebook in a browser, create a new notebook in the main directory
  • the following code segments can be copied into the notebook, each segment in this documentation representing a separate cell in the notebook

1. Connecting to the initiator node

from weaveapi.records import *
from weaveapi.options import *
from weaveapi.filter import *
from weaveapi.weaveh import *

nodeApi, session = connect_weave_api("config/demo_client_local.config")

2. Configuring the params

scope = "private_csv_files"
table = "melanoma"
initiator_image = "gcr.io/weavechain/split_nn_initiator:latest"
participant_image = "gcr.io/weavechain/split_nn_participant :latest"
output_field = "target"
epochs = 10
sources = ["<pubkey1>", "<pubkey2>", ...]
params = { "scope": scope, "table": table, "output_field": output_field, "epochs": epochs }

Notes on parameters:

  • scope is the scope configured above for the training data
  • table is the name of the CSV file
  • initiator_image is the name of the initiator node's docker image used for the training
  • participant_image is the name of the participant node's docker image used for the training
  • output_field & epoch are training configs
  • sources is a list of the participant node's public keys; this can also be configured to be every peer of the initiator using "*"
  • params are the parameters that the nodes will pass to the docker images

3. Connecting to the participant nodes

  • before we can trigger the split learning process, we have to connect the participant nodes to the initiator
  • this is done by an API call to the initiator that updates the connections-related configuration of the node
  • we will create a json with the connection information of the 2 participant nodes and use that to update the initiator's config:
def add_connections(ip_port):
    connections = { "connections": []}
    for ip in ip_port:
        for port in ip_port[ip]:
            connection = {
                'http': {
                    'host': ip,
                    'port': port,
                    'useHttps': False
                }
            }
            connections["connections"].append(connection)
    
    return connections
  • using that function we can build the connections:
ip_port = {
    "host.docker.internal": {
        "18082",            # port for weave_node2
        "18083"             # port for weave_node3
    }
}
connections = add_connections(ip_port)
  • the connections variable contains the json objects representing the connection configuration to the 2 participant nodes, i.e. weave_node2 and weave_node3
  • we will use this to update the initiator node's config:
path = ["peers", "connections"]
reply = nodeApi.updateConfig(session, json.dumps(path), connections).get()

4. Triggering split learning with the initiator node

  • now that the two participants are connected to the initiator, we can use initiator to trigger split learning, using the parameters configured above with the following API call:
reply = nodeApi.splitLearn(session, initiator_image, participant_image, SLOptions(False, 120, 2, None, sources, params)).get()
print(reply)
{'res': 'ok', 'target': {'operationType': 'COMPUTE', 'organization': 'weavechain', 'account': 'clientAccount'}, 'data': {'<pubkey1>': {'res': 'ok', 'target': {'operationType': 'COMPUTE', 'organization': 'weavechain', 'account': 'clientAccount'}, 'data': {'output': '{"server_model": "UEsDBBQAA...}}}}}
  • we can also fetch data lineage for the participants:
reply['data']['<pubkey>']
{
'res': 'ok',
'target': {
    'operationType': 'COMPUTE',
    'organization': 'weavedemo',
    'account': 'weavejTGjcdbUSDtk4Rroiz8qVCSGHo3ejTSZV2wtqRobzNBD'
},
'data': {
    'inputHash': '62ZspnQej3ZUyVBTJXEJHyszrZxCBnAY5Si7P1LT54bM',
    'fees': '{"USDC":0}',
    'writesSignature': 'EmChpWVhPZ2ka8wh1aiwMLfXWQSJjPTxYPbo3zPtxShb8bF6JDrsXkRz5vB4yWNAcMQ37mQs5Wm1FXREh6MKzi4',
    'outputHash': 'BpKDBmiku7eSdFxmztQMSxtYRdAvSFcJw8KXDvK5agJf',
    'outputSignature': '4AoAtD6n19XuMxWnaupAeNVjesgtuVQN9QcctmVHfR724jh4TxNUHsoZ5M6je7a4CVYukDwb8YWjYQTT3KNfxBcX',
    'computeHash': '2h5BQPk2tXaDyeSifJ4aE8AoLFnFhNDK5vYsw6zZYGaf',
    'WEAVE_API_KEY': '97af328d9ae0410daebd32565ca18fdb65b4f2c8220e580d',
    'input': '[{"hash":"bryvIld5WQSYT02rOCVzEh1vmDfqxOCCH9YhkHWmVZg=","scope":"private_csv_files","table":"melanoma"}]',
    'writesHash': '6LfKoQQMqb8fYgA1PwBPKMhFaJ59Fn3DWw6qTRri4zjN',
    'paramsHash': 'HW8t63kVCzdR28fbsoHL6RGe3Tbew8icgGhRQ8WbPJg4',
    'writes': '[]',
    'outputSignatureTs': '3BJbd397vNxYDDKGjQMWH2i6gLM1DR2vA4webNrB4P2CSpNHyeYeBiuSEKgE573rCqx6LzwqKEAiXMyFWEo7w9et',
    'taskId': '8de2735c3b71455f9dbe3150d3a52540',
    'consoleSignature': '4ECkbzB3zFK6tjv5GvyHcQuiwr8JkMXkFtjdjwg3SKvYQJvuPx2zj3RB179231T41vwroDQUKTwV8NUeZsxjHpiX',
    'ts': '1692870682362'
}
}

Architecture

Weavechain's goal is to become the decentralized network of permissioned networks that brings private data to Web3 and offers cutting edge provability, compute and monetization features on top of trusted data.

Weavechain Network

Islands of data where people or organizations have full control of what they share, who they share data with and how, are connected through a marketplace layer that sits on top of all those permissioned networks and acts as a directory, routing and settlement layer.

There are two main components in Weavechain's design:

  • Weaves: The data meshes that are in charge of sharing the data
  • Marketplace: A layer on which Weaves can advertise their existence

Weaves and Marketplace

Weaves

Weaves are a distributed network of nodes that sit on top of existing databases, be it relational (such as Postgres, MySql, MSSQL, Oracle, Aurora), time series oriented (sample InfluxDB, GridDB), document stores (MongoDB, RethinkDB), embedded (SQLite, LevelDB, RocksDB) or file storage systems (local, S3 or IPFS).

Their role is to:

  • Intermediate the data storage and potentially replicate the data.
  • Gate data access, using role-based access control and various authentication methods
  • Maintain immutability proofs, like a hash of the data that can be stored in a blockchain. These blockchains can be public like Ethereum, or private with nodes running in a restricted trust network.
  • Generate proofs for data.
  • Enable confidential computing features.
  • Keep a full audit log for changes and access, and offer a lineage for both data and computations.
  • Act as a Web3 data source, both for direct access or publishing to blockchains as Oracle middleware.
  • Issue verifiable credentials.
  • Monetize data directly or via a marketplace.

Weave configurations are currently controlled by the single superadmin account that creates them. We are building functionality that would enable a consortia to vote on configurations in a DAO-like fashion, supporting weighted votes and delegation.

Weaves can be comprised of any number of nodes and the participants can be both data producers and data consumers. Additionally, API consumers can interact directly without running nodes as long as they have a registered account with the Weave.

Weavechain Weave

Nodes

Nodes are a collection of services that can run either as a docker image or as a standalone java process.

Weavechain Sidechain

A node is part of a single Weave and can be configured to have active connections to other nodes.

At least one bootstrap node needs to be publicly available on the internet if the Weave intends to be able to store or publish data from consumers that are not in the local network or having a VPN connection.

Depending on their availability, the nodes could be categorized as

  • Active Nodes: Other peers can connect to them directly.
  • Passive Nodes: These run on machines behind a router, which can connect to an active node, but to which new connections cannot be established from outside.
  • Proxied Nodes: These can’t be reached directly, they’re advertised to peers by nodes that know about their existence.

When replication or multi-party compute tasks require direct message exchanges between nodes, active nodes can forward encrypted messages to passive/proxy nodes.

Nodes can be configured to support various protocols. The default is to run the node infrastructure over Websockets and allow API connections via HTTP(S) and Websockets. Nodes can be configured to also allow incoming Kafka, RabbitMQ or ZeroMQ connections. Each transport layer has its own advantages and disadvantages.

In addition to the encryption in transit using secure channels, AES-256 encryption can be enabled, allowing the nodes or API clients to operate over plain HTTP.

Nodes can replicate both user data and Weave configurations (including RBAC tables). All activity is signed in order to prevent malicious writers.

Authentication

In order to get access to a Weave, an API connection must be established with any node of the Weave.

The login is achieved with a private/public key pair, where the public key has been pre-authorized by the Weave. Alternatively users can login or get access to data using pre-authorized Verifiable Credentials, proving blockchain accounts ownership, using NFTs, ZK Proofs or Smart Contracts.

When using Verifiable Credentials, the Weave can be configured to allow reusable credentials or require one-time presentations that specify the public key that should inherit the access rights of the credentials presented.

When using Blockchain accounts, a personal signature is added during the login process as proof of the wallet ownership, and the rights are configured by wallet address in the nodes.

When using NFTs, the wallet ownership is checked, then the NFT ownership is verified on a configured blockchain. NFTs can be used to unlock data up to table level granularity.

When using Zero-Knowledge Proofs, the user can obtain access to a node without previously being authorized, by proving they know a piece of information that the node also has for the user.

When using Email Magic Links, the user receives a token via e-mail, which then can be used to enable an existing session to gain rights associated with that email address or its domain.

User access conditions can be enhanced with checks of smart contract states on any of the supported blockchains.

After login, a session is created, identified by an API key that can be used to track all the actions triggered by operations made in that session.

These sessions also ensure the integrity of the request-reply flow and have a nonce, a secret shared with the server that must be used to sign operations and an expiration time after which the tokens need to be renewed.

A node can be configured such that any of the methods above can be used to gain access to APIs, to compute resources, or to data with access controlled up to row-level.

Audit

All operations done within a Weave are fully audited. This applies not just to the write operations, but also to reads, compute tasks and everything else. This enables detailed tracking of how data flows within the system.

The audit records can be stored in the same network or can be stored in a remote Weave to enhance security.

As long as data processing happens within the system and there is no exfiltration to a Web2 system, usage rules can be enforced as well as monetization.

For example, compute tasks that are executed within the system can offer computational lineage guarantees, meaning that nodes can vouch that a certain output is produced by a certain input and compute task. Hashes are created of the input data, the compute task, the output data, and these hashes are cryptographically signed by the node that performed the computation.

When data is shared across multiple nodes, this can be extended to a consensus, i.e. the same task is run by multiple nodes that vouch for the integrity of the input data and agree on the output, providing the consumer a set of signatures certifying the result by the trust network. This proof can be taken outside of the ecosystem by attaching checksums and signatures to output files or going as far as signing generated PDFs.

Storage

A Weave node can sit on top of one or many databases or file storage systems of different types, what we'll call Data Collections.

Each Data Collection can be:

  • Replicated, a case where other nodes in the Weave make copies of the Data Collection,
  • Non-Replicated, where other nodes don't make copies of the Data Collection. Data integrity guarantees can still be offered in this case by maintaining the data hashes, as well as the other features that Weavechain offers.

A node can be in charge of all of the operations with the database when every write operation happens using the Weavechain API. Alternatively, nodes can implement a listener pattern, sitting on top of a database that is updated by external actors.

Depending on the configuration, nodes can offer different guarantees for the data and for the audit trail. For example, in a listener pattern no audit trail can be offered prior to the moment when first reading the data.

The underlying storage can have encryption at rest capabilities. On top of that, stored data can be encrypted with a secret configured per data collection, known to the node. This encryption can be turned on/off at field level.

The storage setup that offers the maximum guarantees and lineage trail is using append-only databases. Mutable tables can be transformed into append only time series in order to be able to offer lineage. Additionally, records deleted can be marked using tombstones, and occasional swipes or history collapsing to a snapshot can achieve the true data forgetting needed for GDPR.

Each use case will have specific requirements. Weaves are designed to be flexible and support various scenarios, offering different and specific guarantees.

Access to data collections is controlled by RBAC. Rights can be configured at the table level, including Read, Write, Compute, Create, Drop and View (that the table exists).

In order to allow PII obfuscation, table columns can be assigned data transformations that are applied on read, such as:

  • Erasure
  • Redaction (with custom values depending on input)
  • Hashing
  • Unique Random IDs (consistent within tables)
  • Linked Random IDs (consistent across tables)
  • Quantization, Scaling and non-linear transformations
  • Noise Addition
  • Encryption (at read time)

If the privacy concerns are higher, databases can be configured to allow local access only. This means that the data cannot be read remotely by consumers, only confidential computing tasks can be enabled on top of it.

Integrity checks and storage proofs can be triggered on demand or scheduled periodically, either for checking entire tables content or by doing random sampling.

Operations

The main operations on data that are supported by a Weave are:

  • Read, which can include a data verification step (either by querying the blockchain and matching actual data hashes to stored hashes or via network consensus),
  • Write, which can include replication and storing hashes for later integrity guarantees,
  • Compute, including 3 patterns of confidential compute and building proofs on data

In addition to those, there are additional API functions to offer the building blocks for Web3 ready apps, including verifiable credentials, lineage and messaging.

For more details about all the operation supported check the API

Monetization

Monetization is possible for all the 3 types of operations above (read, write, compute), and can be configured by each Weave independently according to their needs.

In addition to node operations monetization, any custom server can be launched as an inner feed handled by the node and API calls to it be monetized instantly without any change of the underlying service and just adding a header to the callers. This is achieved by proxying the API calls through the node and generating an JWT authorization token that can be used to link the caller to a Weavechain public key. In addition to monetization, this approach can also be used to seamlessly add a RBAC on top of any API, gate existing APIs with NFTs ownership proofs, verifiable credentials etc.

The party performing the action (reading, writing, performing compute, API calls) can be configured to pay or be paid for their activity as desired.

Fee schedules can be configured per record, per size, per unit of time (such as daily) for data, capped or not, and for CPU usage or unit of time for compute.

Payments can be done in USDC or a custom ERC-20 token. Micropayments are recorded locally in a ledger in the weave network and synchronized periodically to a blockchain. For details on payment synchronization, see Token Bridging.

Batching

In order to support higher volumes at write, batching can be configured in the API both on the client side as well as on the node side.

The batches can be determined using multiple criteria, such as:

  • Record count
  • Record size
  • Maximum throttling wait time

When batching is done at the server side, the batches that arrive from clients are kept intact to preserve the integrity guarantees created by client signatures.

Signing

Signing happens at multiple levels, both when delivering data and when delivering computational results.

Higher integrity guarantees can be configured by a node, adding signature requirements from API clients. Each piece of data that is written by an API client is hashed and can be signed with the writer's private key.

Each node that receives and needs to replicate the data can verify the authenticity by reproducing the hash from the raw data and checking the signature of the original writer.

When a node is running a compute task, the inputs and the outputs can be hashed and signed with the node's private key, as a guarantee of the result authenticity. Or a number of such signatures can be obtained by running a consensus compute as a guarantee of reproducibility. These hashes and signatures can be configured to be automatically put on a smart contract or an NFT can be minted to the caller, proving that a certain task with a given set of inputs was verified to produce a certain result.

By default Ed25519 is used for signing, and nodes be configured to use Dilithium in order to produce quantum-resistant signatures.

Hashing

Hashes of the data establish data integrity guarantees. Storing hashes in public blockchains such as Ethereum provides a stronger integrity proof, but has the downside of being public and expensive. Storing hashes on private blockchains such as Hyperledger Sawtooth is inexpensive, but increases the risk of tampering if the trust network is small.

In order to prevent dictionary attacks, data hashes are computed using a secret salt that is known only to authorized Weave members.

The hashing function can be configured and can range from HMAC or salted SHA-256, SHA-512, Keccak-256 or Keccak-512, Blake2 or, if needed, post-quantum hash-based signature schemes like MT XMSS or SHA-512 with SPHINCS256. By default hashing is done using HmacSHA256.

Hashes can be configured to be computed and stored for each record or for batches of records. When using batching, the ability to hash large datasets is feasible, but there is a downside at verify time, as an entire batch needs to be checked in order to ascertain the validity of a record at read time. Tuning the batching configuration is needed depending on the use case.

Hashes are stored on the blockchain either during an initial hashing of the database to which a node was attached, or when write operations are triggered via the API.

The node that is orchestrating replication gathers a threshold signature from all of the other nodes that are part of the trust network. The signature is checked by a smart contract on the blockchain when calling the hash storage function to verify that there was consensus at write time. This ensures that the leader is not writing a malicious hash value. The alternative is to call the chain from every node, which can be more costly in time or gas.

Replication Integrity Guarantees

Data integrity is established by hashes stored on a blockchain (see Hahing), and by data replicas that can be stored by nodes running on trusted parties machines. When using the API to write data, there is an additional hashing and signing done client side, allowing nodes that participate in the replication process to verify that the data is matching what the originator sent (see Anatomy of a Write Operation).

In addition to data hashes, storage proofs can be generated by nodes for whole datasets or for filtered rows only. A challenge is sent by a node that has a replica of the data, the receiver computes a hash that includes the challenge and returns it to the challenger. If the node that requested the proof can validate the reply by hashing the data with the same challenge.

Taking this a step further, interactive zk storage proofs can be used to avoid leaking information to nodes that pretend to have the data: it is similar to a challenge storage proof, just that the instead of returning a hash, only a proof of knowing the hash is returned, making sure that a dictionary attack is not possible by some node that does not have the data replicated, even if it's an authorized member of the Weave and knows the secret salt used during hashing.

Non-interactive zk proofs of storage are not feasible, both due to computation time and proof size. However, we offer the feature of proving knowledge of a hash pre-image which can be used for small datasets.

Compute

Compute operations are fully audited, monetizable, and can offer lineage guarantees. Compute outputs can be traced to the source inputs and the task that generated them, as well as verified by 3rd parties that know the public key of the node that did the computation.

Compute consensus can happen on top of this, having multiple parties running the same task on their own copy of the data and vouching via signatures for a common reply.

Task lineage graphs can be built out of the audit trail, as long as all the processing is happening within the system.

Compute tasks can be triggered in the node to which the API is connected, in a list of target nodes or in all active nodes (if authorized).

The outputs of a compute to data task can have several forms:

  • An output that is returned to the user, be it in text format or encoded binary. We also offer helper functions to output signed PDFs.
  • The task logs, when using compute to data, which can be filtered or not depending on configurations.
  • Data records, when a compute to data task is doing some processing and writing results to an output table.

In all forms, activity can be proven. For computation, the output can be signed by the executing node, proving that the result came from a certain set of input data and a certain compute task. When data is written, there is also an audit trail and lineage information that can be generated.

In order to prevent unwanted data leakage, outputs can be filtered based on few rules:

  • Maximum output size,
  • Reject output in case of keywords presence,
  • Output must follow a fixed template,
  • Limit the data on which the operations can be done (such as requiring at least a number of records or a number of parties to participate in an aggregation task)

There are 3 patterns of confidential computing that Weaves support, each having its own strengths and limitations and which can be used alone or mixed, depending on the use case:

1. Compute to data

This feature allows running pre-approved Docker or WebAssembly images remotely on the data owner's infrastructure, allowing confidential computing without the risk of exposing the private data.

A local or remote docker instance or a kubernetes cluster can be used to launch images.

Weavechain Compute-To-Data

Compute to data can be done in a two party scenario or in a multi party scenario.

When having a multi-party scenario, the consumer is in charge of aggregating the individual responses. Compute tasks can also be run with a consensus flag, a case in which the same output is expected from all the nodes (and signatures are gathered as proof of consensus).

The advantage of using docker images is full flexibility for the tasks that can be run.

In this case the executed code is known to the data owner and should be audited. Weaves could be configured to automatically approve images to be run, but this has some risks for the data owner regarding both security and data exfiltration. The automatic filters that can be applied by nodes to prevent unwanted data leakage can always be circumvented using encryption or steganography if there is no audit of the code.

Depending on the analysis to be run, the task can be run either:

  • By all of the target nodes in parallel, where an aggregation happens at the end of the operations,
  • Sequentially, where there could be a state that is passed from one node to the other.

Federated Tensorflow will also be supported as a compute to data task.

2. Multi-party computing

Weavechain Multi-party computing

Weavechain supports MPC using the SPDZ protocol, integrating the Framework for Efficient and Secure Computation by Alexandra Institute.

This is different compared to compute to data in several aspects:

  • The functions supported are predefined, such as descriptive stats (like mean, median, stdev, variance), statistical tests (t-test), private set intersection and linear regression and run in the node process,
  • Adding new functions requires adding them to the Weavechain codebase,
  • There is no security risk for the owner of the data, as the code to be executed is fixed and known beforehand,
  • MPC can become very slow, depending on the volume of data and the number of parties this can be suitable or not for the specific use case wanted.

When the final data aggregation can be done by the consumer and does not require any data exchange between parties, the same predefined functions can be executed in a series of 2 parties rounds, involving just the consumer and the producer nodes one by one. In this case the speed concerns do not exist.

3. Two party homomorphic encryption

Weave nodes can support compute tasks over encrypted data using the CKKS encryption scheme.

Weavechain wraps SEAL and EVA from Microsoft offering seamless access to homomorphic encryption features.

Data owners can configure specific columns to be available either encrypted or in plaintext. Consumers can run computations on the encrypted data, producing a set of encrypted results. These results are sent back to the owner, who can decide whether to release the aggregated results back to the consumer, using filtering rules as described previously.

Plaintext fields could be used for aggregation, and mixed with locally available information that is not shared with the other party. The advantage of this pattern is that the consumer task code and local information can remain secret, so that only the aggregated result is known by the data owner.

Zero-knowledge proofs for data

In addition to confidential computing patterns, zero-knowledge proofs (ZKPs) for data can be configured to be fully or partially available.

Weave nodes can generate Bulletproofs, with multiple gadgets implemented such as validating number values or proving knowledge of a hash pre-image.

ZKPs can be used for generating useful outputs as well as debugging datasets without having access to them.

For example, a single ZKP could validate that all measurements in a table are greater than zero. Or a ZKP could be generated for each row, checking that some measurement value is in a reference interval, without revealing the actual value to the data consumer.

Caveat, ZKPs can become slow and large, so this is not a feature suitable for any scenario.

Anatomy of a Write Operation

Let's consider a scenario where a data producer writes some data using the API.

At the producer level, the API can choose to batch the writes. Batching at the client makes sense when there are a lot of small and continuous writes.

Accumulated data is hashed and the hash is signed with the producer's private key.

The API sends a new batch of data to be written to the node to which it's connected.

If the node is not currently the leader orchestrating writing for the time series, it starts a consensus round to become the leader (PBFT) and obtain a Time Lease.

We use Time Leases of 2 seconds to be able to achieve full throughput writes in that time window. The time window can be adjusted, depending on the scenario. For example if there are few writers that take turns and many consumers, it makes sense to use larger windows of time lease. If instead there are many writers writing small pieces of data, the time window can be lowered or the consensus could be switched to be done at record level.

Different writers can connect to the same node to avoid competing leaders.

Data is ordered by the arrival time in the leader node and we use a network time that is adjusted dynamically (see Network Time).

Once a node is allowed by the rest of the network to become a write leader, it checks that the data hash is matching the one from the source (EdDSA with the writer's public key)

The node starts the data replication and writes it to its local database in parallel. For the trivial case of non-replicated scopes only the write to the database happens.

Each node that receives the data checks it to make sure that its hash matches the one signed by the producer and proceeds with storing it to its local database.

The nodes can optionally add the public key of the writer, the network time or the integrity signatures from the client to the data stored in the target time series, to have it readily available (these can always be recovered from audit records with a more costly operation). This step is eventually hydrating the client data and after that a new hash is generated by the nodes using a secret salt known only to the nodes.

Once a node "promises" to store the data, it signs with its own private key the hash of the data and sends it back to the leader node.

Depending on the write options, if it must be a guaranteed write, a node can answer once the data is flushed in the database or file storage or immediately after it has the data in memory (i.e. before the DB write)

The leader node accumulates the replies which contain signatures from the other nodes that did the replication in order to pass them back to the original writer. The client can then check the validity of the signatures with the nodes public keys (i.e. it does not have to trust the node to which it was connected with the API).

The leader node does another round of exchanges with the other nodes to build a threshold signature (T out of N) for the hash, where each node contributes with its secret share of a private key. This is used to issue a single call to a blockchain to store the hash while still making sure that there is a network consensus that the hash is the right one. The alternative would have been to have each node that persists the data interact with the smart contract (and do the check the consensus there), which could be both slower and significantly more expensive when having paid operations.

The leader node executes the smart contract call containing the threshold signature, storing the hash of the data and some metadata (ex. the batch IDs range), and the smart contract checks the signature and eventually stores the hash in the contract state.

Contract state sharding is done for certain blockchains when the state gets too big.

Contract state serialization and deserialization can introduce performance hits, this being the reason why there is an option to store the hashes on a Weavechain Layer-1. Weavechain's Layer-1 was designed to be a blockchain replacement running in the same process that keeps an in-memory LRU cache of the hashes.

The hash includes a secret salt component that is known only to Weave members. This prevents dictionary attacks when the hash is stored on a public blockchain.

After the hash is written on the blockchain, the staged data becomes permanent and has immutability guarantees.

The hash is not the data; if the storage disappears, the hash is not enough to reconstruct the data. However, it can be used to check the integrity, be it on demand or periodically.

If replication is enabled, a consensus can be done on the trust network that replicated the data and restore the missing or altered data.

Anatomy of a Read Operation

When a consumer issues a read from the API, the access control rules are checked to ensure both that the user is permissioned, and that the Data Collection allows remote reading.

Records are read from the data that is attached to the node to which the API consumer is connected and returned to the user.

A read operation can have various filters on the target table fields. The order of returned results can be specified, the output of the query can be limited, and fields can be collapsed.

Before the data is returned to the user, a PII transformation layer can obfuscate certain fields that are not supposed to be public, erasing them or replacing them with a hash or a unique random (per value) ID.

By default, read operations are configured to check the hashes of the data to check integrity. This means that the node looks at the hashes of the queried data from the blockchain and checks them against the actual data returned to the user.

If the node is trusted or the integrity was previously checked by other means (such as the storage proofs API calls), this check can be skipped at read operation level to optimize for speed.

If the API client has access to the blockchain and does not want to delegate the trust for the hash check to the node to which the API is connected, the data can be checked by the consumer itself.

A read operation can also be configured to query all active nodes from the Weave network or specific nodes specified via their public key and do a consensus read of the data. In this case the node to which the API read is issued becomes a leader in charge of orchestrating the forwarding of the call and building the reply. The operation will be successful if all nodes return the same data.

Another type of read operation involving multiple nodes is a multiplexing read. When nodes have private non-replicated data, a read can be triggered to gather the records from multiple nodes and mux them together before generating the reply. In this case the data is expected to be different in each node, unlike in a consensus read. The source node information is added as a new column in the returned dataset.

Network Time

A network time is maintained by each of the nodes, and the ordering of the operations in a Weave is done by the time of arrival of the request at the node that is in charge of orchestrating the operation.

Each node pings all the other nodes to which it is connected and receives a reply with the clock on the other machines.

The difference between the clocks and half the roundtrip time is taken, and the median of this measure over a recent window of time is computed for each known neighbor. The median of these adjustments is applied to the local clock to compute a network time.

Token Bridging

When using EVM compatible blockchains as the settlement layer, a smart contract is deployed on that blockchain by each Weave.

ERC-20 tokens can be locked in that smart contract, funding weave accounts identified by their public keys.

The funds can be in two states in the smart contract: withdrawable or locked. When locked, they are bridged in the Weave accounts ledger.

Once bridged, these funds can be used to pay for data or compute.

Funds are periodically synchronized to the main blockchain smart contract. Local payments are secure, and synchronization can be done rarely to avoid gas fees.

Withdrawing funds can be done only from within the Weave, with both the user and a nodes consensus signing the transaction using a threshold signature. The action consists of moving funds that are available in the Weave from a locked state to a withdrawable state.

The operation above will withdraw tokens from the Weave and make them available in the smart contract on the main blockchain. Users can then withdraw them from that smart contract to their wallets.

Marketplace

The marketplace is currently implemented as smart contracts that can be hosted on EVM compatible blockchains.

Its role is to:

  • Act as a directory where weaves can advertise their presence and/or their datasets
  • Act as a settlement layer where the wallets of the participants in the private data exchanges are located
  • Act as a standardization layer, where data formats can be established (and voted)

Note, this feature is still in development. Our early customers are still operating in an intra-weave capacity, and are functional without the Marketplace.

API

Interacting with the Weavechain nodes is done via API client which connect to one of the nodes that is part of a Weave.

A client API session needs to know how to connect to the node and is established by authorizing with a private/public key pair. A role-based access control model allows configuring rights in the nodes, assigning roles to accounts (identified by monikers or their public key), and rights to roles (view, create, drop, read, write, compute) up to table level.

Multiple sessions can be created with the same account (eventually asking for different rights).

Full audit of all the operations can be enabled in the nodes (and stored locally or on a remote Weave).

APIs:

Creating an API client

Instantiating an API client can using a JSON definition.

The information needed is:

  • the API version
  • a sidechain local identifier
  • the keys used to authorize (the keys can be specified as inline text or [recommended] as files. The public key can be derived from the private key, but it's recommended to have it in text format as it's the user identifier for all actions in the Weave)
  • how to connect to the node: the transport protocol (HTTPS and WSS are supported by all API clients, with the Java API additionally supporting RabbitMQ, Kafka and ZeroMQ)
"chainClientConfig": {
    "apiVersion" : 1,

    "seed" : "92f30f0b6be2732cb817c19839b0940c",
    "privateKeyFile" : "sample.pvk",
    "publicKeyFile" : "sample.pub",

    "http": {
        "host": "public.weavechain.com",
        "port": 443,
        "useHttps": true
    }
}

Sample code for creating a client API:

Javascript

import WeaveAPI from 'weaveapi'

const nodeApi = WeaveAPI.create(configuration);
await nodeApi.init();
const pong = await nodeApi.ping();
console.log(pong)

Python

from weaveapi import weaveapi

nodeApi = weaveapi.create(config)

Java

import com.weavechain.api.ChainApiFactory;

ApiClientV1 nodeApi = ChainApiFactory.createApiClient(configuration);

Session management

Once a client API is created, sessions can be created, logging in to the node and requiring specific access.

During the login, the following information is needed:

  • the organization (can be "*" if there are no multiple organizations defined, case in which the field is ignored)
  • the account moniker or public key to be used during authentication
  • a space separated list of the data collection for which access is required (can be "*" in order to obtain access to all data collections for which the user is authorized)
  • optional: credentials. These can be used in order to pass additional information that would make the user inherit rights given through other mechanism.

The supported additional mechanisms are:

  • verifiable credentials (the issuer needs to be defined in node configs, specifying what roles or user templates they can delegate and a presentation of the verifiable credentials needs to be issued using the public key to be authorized as a challenge)
  • wallet ownership for EVM compatible blockchains or Solana (the wallets can be given rights and the Weavechain keys used during login inherit those rights). The wallet ownership is verified by signing a message (with Metamask or Phantom) that does not involve any blockchain interaction or gas being paid
  • NFTs (ERC-721, ERC-1155) or SoulBound Tokens ownership. The NFTs are specified only in the nodes configuration, the client just needs to prove the wallet ownership. Access can be gated based on collection ownership, owning a specific item or, with additional support added in the node, based on NFT traits.

Each session is allocated dynamically a new API key that allows access to the requested data collections. Each message has a nonce and is signed.

A session automatically expires after a period of time that is configured in the node (by default 24 hours).

Once a session was established, all API calls return a JSON structure with the operation result code, the operation target (if any was specified) and the operation reply (and eventually an additional error message).

Login

A weavechain private/public key pair is needed in order to login. Weavechain supports a full RBAC model, an account can be member of multiple organizations and within an organization roles can be assigned based on its public key. A role can give rights (such as read, write, delete, compute) on one or multiple data collections, with granularity up to table level.

In addition to pre-configured user level rights, roles could be inherited based on Verifiable Credentials, wallet ownership or NFT ownership (and traits), with these being passed during login in the optional credentials parameter.

The collections parameter can be used to create a session that is restricted to work only with specific data (* can be used to get maximum available rights).

Javascript

const session = await nodeApi.login(organization, account, collections, credentials);
console.log(session)

Python

session = nodeApi.login(organization, account, collections, credentials).get()
print(session)

Java

CompletableFuture<Session> session = nodeApi.login(organization, account collections, credentials);

Logout

Logout will remove the current session from the server.

Javascript, Python, Java

nodeApi.logout(session)

Check Session

Check session is a helper function to renew the API key in case it's expired. The credentials optional parameter can be used to pass verifiable credentials or wallet ownership information during relogin.

Javascript, Python, Java

nodeApi.checkSession(session, credentials)

Status API calls

Version

Returns the remote node API version

Javascript, Python, Java

nodeApi.version()

Ping

Checks the availability of a remote node and returns the [unadjusted] clock on the remote machine

Javascript

const reply = nodeApi.ping().get();
console.log(reply)

Python

reply = nodeApi.ping().get()
print(reply)

Java

OperationResult reply = nodeApi.ping().get();

Generate Keys

Generates a Weavechain private/public key pair. The keys are returned in compressed base58 format (and the public keys are prefixed with "weave")

Javascript, Python, Java

nodeApi.generateKeys()

Get Client Public Key

Returns the public key of the current API client

Javascript, Python, Java

nodeApi.getClientPublicKey()

Get Public Key

Returns the public key identifying the remote node to which the API is connected

Javascript, Python, Java

nodeApi.publicKey()

Get Signature Key

Returns the public key used for signing messages by the remote node (such as task lineage). This can be a Ed25519 or a Dilithium public key, depending on the node configuration.

Javascript, Python, Java

nodeApi.sigKey()

Data and Compute API

Get Status

Returns the status of the node to which the API is connected.

Javascript, Python, Java

nodeApi.status(session)

Create Table

Creates a table in a specified database or file storage, if user rights are allowing it.

Create operations can have several flags and modifiers passed as options:

  • a boolean flag specifying if the operation should fail or continue without an error if the table already exists
  • a boolean flag specifying if the table is replicated or not
  • a layout of the table
  • an operation timeout

Javascript, Python, Java

nodeApi.createTable(session, collection, table, options)

If no table layout is specified, by default the Weave will create a time series having an id column as the primary key, a data column to store blobs, a nullable metadata column to store additional information and a ts column holding a timestamp with the network time of the write operation.

Layouts can specify if a table is available for local access only or if they can be read remotely. Also, they contain details about the columns, their data types, if they are indexed, if they are encrypted (by the node, the encryption at rest of the underlying storage is separate), as well as if they have transformation for PII obfuscation.

Sample create operation of a non-replicated table accessible remotely:

Python

layout = { 
    "columns": { 
        "id": { "type": "LONG", "isIndexed": True, "isUnique": True, "isNullable": False },
        "name_nickname": { "type": "STRING" },
        "name_last": { "type": "STRING" },
        "name_first": { "type": "STRING" },
        "birthday": { "type": "STRING", "readTransform": "ERASURE" },
        "email_personal": { "type": "STRING", "readTransform": "ERASURE" },
        "phone_number": { "type": "STRING", "readTransform": "ERASURE" },
        "address_country": { "type": "STRING" },
        "address_summary": { "type": "STRING", "readTransform": "ERASURE" },
        "address_timezone": { "type": "STRING" },
        "linkedin_url": { "type": "STRING" },
        "discord_username": { "type": "STRING" },
        "telegram_username": { "type": "STRING" },
        "ethereum_wallet_address": { "type": "STRING" }
    }, 
    "idColumnIndex": 0, 
    "isLocal": False,
    "applyReadTransformations": True
}

collection = "weavedemo"
table = "directory"

nodeApi.createTable(session, collection, table, CreateOptions(False, False, layout))

Drop Table

Drops a table in the remote node, if user rights are allowing it.

Javascript, Python, Java

nodeApi.dropTable(session, collection, table)

Write Data

Writes a set of records into a table/time series. The simple access API can act in many different ways depending on the options passed and on the nodes configuration.

A write can be replicated or not, offer delivery guarantees, be paid or not, it can be done in a database or a file storage, it can be done in a replicated table or a private non-replicated table.

Batching records can also happen, locally (depending on the client API configuration) or remotely (depending on the node configuration). Batching can be done based on the number of records, their size or a maximum waiting time.

Javascript, Python, Java

nodeApi.write(session, collection, records, options)

The records structure contains the target table and a matrix with the data to be written.

The options passed can select the behavior of the write and have the following flags:

  • guaranteed: if the write can be asynchronous or finishes only after the write replication and hash storage happened
  • minAcks: the minimum number of nodes that need to replicate the data before considering the write successful, by default 1
  • inMemoryAcks: boolean flag specifying if replicating nodes are allowed to acknowledge a write once they received (and verified) it or only after they persisted it in the local database or file storage, by default false
  • writeTimeoutSec: specifies the operation timeout, by default 300 seconds
  • allowDistribute: specifies if the operation is to be carried only on the destination node or the write needs to be distributed to peers. It can be overwritten by the node if the data owner does not want to allow this feature. The default value is true.
  • signOnChain: boolean flag specifying if the record is to be hashed on chain. This can be overwritten by the node if the data owner does not want to allow this feature. The default value is true.
  • syncSigning: boolean flag specifying if the hashes are stored on the blockchain assuring the immutability synchronously or the signing can be done async. The default value is false

Read Data

Reads a set of records from a table/time series. The simple API can cover multiple behaviors: the read operations can include immutability checks, can be paid or not (depending on the node configuration) or can be done from a single node or from multiple nodes.

Javascript, Python, Java

nodeApi.read(session, collection, table, filter, options)

The filter supports comparing operations (eq, neq, in, notin, gt, gte, lt, lte, and, or, not), multi-column ordering, limiting the output results count and multi-column collapsing.

Sample:

Python

filter = Filter(
  FilterOp.opand(
      FilterOp.eq("field1", "something"),
      FilterOp.eq("field2", "something")
  ),
  { "id": "ASC" },
  None, # No limit
  None  # No collapsing
)

The options passed can select the behavior of the write and have the following flags:

  • verifyHash: a boolean flag that triggers an integrity check done by the node after reading the data. The default value is true, but it is often needed to turn it off or do it only once per session, as the hash checking operation can add slowness as it involves the blockchain. If the node is not trusted to do the check, the hashes could be verified by the client, as they are available on-chain.
  • readTimeoutSec: the operation timeout
  • peersConsensus: a number of nodes that need to agree with the data. This is an alternate way of checking data integrity in a distributed network (by doing data consensus) or a way to recover the data in case of immutability checks failure. The default value of this setting is 0, meaning that the node to which the API is connected is trusted to return the data. A special value can be used to retrieve data from all nodes that are active.
  • enableMux: a boolean flag that specifies if data from multiple nodes is multiplexed or not. Enabling this flag is useful when multiple clients have different non-replicated parts of a shared dataset. The default value is false.
  • includeCached: a boolean flag specifying if multiplexed reads can include values cached by a proxy node. In the scenario when nodes have non-replicated information, certain nodes can go off-line, making their data inaccessible. In such cases, to prevent intermittent data presence and if the network configuration allows it, proxy nodes can act as brokers for the data and cache it (in memory) for subsequent requests. This flag is turned off by default.

Read Data Hashes

Reads the hashes for a set of records from a table. The hashes are generated for batches of records, depending on the local and remote batching settings.

Javascript, Python, Java

nodeApi.hashes(session, collection, table, filter, options)

Delete

Removes a set of records matching a filter from a table/time series. The API will remove the data in the whole network if the collection is replicated, and re-hash the affected data.

Javascript, Python, Java

nodeApi.read(session, collection, table, filter, options)

The filter supports comparing operations (eq, neq, in, notin, gt, gte, lt, lte, and, or, not), multi-column ordering, limiting the output results count and multi-column collapsing.

Download Table

Downloads a subset of a table in a specified format, the result containing a base64 encoding of a zip file.

The downloaded data can be retrieved from a single node or from multiple ones, check for integrity etc.

The filter and options are similar to a read.

Supported formats: csv, json, feather, parquet, avro, orc, protobuf, toml, yaml

Javascript, Python, Java

nodeApi.downloadTable(session, collection, table, filter, format, options)

Publish Dataset

Publishes a dataset (snapshot, rolling or live) to be downloaded after paying on chain.

The return value will contain a DID of the dataset, following the did:weave:node:hash format. The hash is an actual hash of the data if the dataset is static, otherwise it's the hash of the data at the moment of creating the dataset.

The chain on which the payments are made and the token specified must be configured in the node.

Multiple chains are supported (and prefixing the token with the name of the configured chain is used to select which one to be used).

NFT gating is also possible, case in which the price will be negative and the token specifies the NFT contract address and, eventually, additional data if the permissioning needs to be for specific NFT IDs or traits.

Javascript, Python, Java

nodeApi.publishDataset(session, collection, table, filter, format, price, token, options)

Download Dataset

Downloads a previously published dataset, verifying access based on existing blockchain payment or NFT ownership.

Javascript, Python, Java

nodeApi.publishDataset(session, did, options)

Subscribe

The subscribe function allows triggering a read operation for a snapshot of the data, as well as subsequent updates in case new records are stored.

A subscription id is returned in the function result.

The options passed are similar as for the read() operation.

Not all multiplexing scenarios are supported for subscribe.

Javascript, Python, Java

nodeApi.subscribe(session, collection, table, filter, options, updateHandler)

Unsubscribe

Stops an active subscription of data, freeing server and network resources.

Javascript, Python, Java

nodeApi.unsubscribe(session, subscriptionId)

Compute To Data

Triggers a compute task remotely. This is a helper function to use a compute to data confidential compute pattern.

The name passed is a Docker or WebAssembly image that the client wants to run on the remote node and must be pre-authorized by the data owner and auditing all images before allowing them to run is highly recommended. The compute task should ingest data using the Weavechain API and can be written in any language. It also offers full flexibility in using 3rd party libraries as any code is allowed.

The compute engine needs to be configured in the node where the API is connected and it can spawn a task in a local or remote docker instance, in kubernetes or in-process for WebAssembly tasks.

A compute operation can be paid or not, depending on node configurations (payments could happen for the data read and for CPU time). Access to compute could also be pre-paid on-chain or gated with NFTs.

There are 3 ways in which a task can generate output information: by writing data to another output table, by returning a task output result or by logging to the console. These outputs can be limited or filtered.

The return value includes a taskId, the task outputs (if any), console logs and signatures. The outputs are signed and there are two types of signing supported, one using Ed25519 signatures of the hash of the outputs or, when the output is a binary PDF, signing with traditional certificates.

Optionally, if the node is configured to sign with quantum resistant hashes, Dilithium signatures will be used instead of Ed25519.

The following options can be specified for a compute operation:

  • sync: a boolean flag specifying if the operation is to be performed in a synchronous fashion or async if no direct output is expected
  • timeoutSec: the operation timeout
  • peersConsensus: a number of nodes (or a special value specifying all active nodes) that need to agree with the output. By default a task is executed only on the node to which the API is connected, but if multiple nodes have a replicated dataset, a consensus can be requested (and the output needs to match and be signed by all nodes participating)
  • params: custom parameters that need to be passed to the remote task

Javascript, Python, Java

nodeApi.compute(session, image, options)

Preventing data exfiltration can be configured server side by limiting the output by size, by adding keywords that trigger rejecting releasing the output to the consumer or forcing the output to follow a certain pattern.

Verify Lineage Signature

The result of a compute task can contain signatures for the outputs through which the node that performed the task vouches it used inputs having a certain hash, a docker image with another hash and produced the outputs given to the client.

This functionality can be used to verify the integrity of the output and contains details about all the data that entered the calculation, the hash of the docker image (or compute algo), as well as all the outputs, including the console. One hash is generated for everything that entered the calculation, as well as separate hashes can be produced for each table that was used as input data for the task.

A full lineage detail sample:

    {'WEAVE_API_KEY': '8cf20ed5e21b40a0bc4a87ccd8e8ec98ba9ee426e98c7955',
     'taskId': '8fe6dbfd565242629dbf74c4a144d666',
     'input': '[{"hash":"IGA+57y2yLzmeCNUpkeUvTgeNXsXN15KxM7jHLb+c7o=","scope":"private","table":"questionnaire"},{"hash":"LXosgrO1PGi+0e55/0KZLM6G9dypYTdo9oAlJPVP/00=","scope":"private_files","table":"23andme.txt"}]',
     'inputHash': 'X6e2zDacmwN2hfbMbXehC7BxeiCHyhY1Bk826oRrx32',
     'writes': '[{"hash":"iCHCj17+5GHImAdSkX6OQisDRAgsWmkRh7brJrs3lGg=","scope":"private","table":"23andme_results"}]',
     'writesSignature': '5dh1Sh4TrKsweb5dcFamuoQsZAVyvmLREAM1NfcpWzhdzmeV1unQfGueTGh4CqMHqZAdZKJRuZJjA2KzDKAHWHK8',
     'computeHash': '3nw5CzrqaGfysne96Ki5gLFSeEdo1Wj9eVR6YqKMLw49',
     'paramsHash': 'GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn',
     'output': '{"snps": 6}',
     'outputHash': 'HuN4mAHXcDes5DaDoknsKppzwfHGKL8XE3KfgcRNP4rK',
     'outputSignature': 'mWyG3RMDVJfnu5cQP59CwYPFpx8ni7oz7ggVwwP99a21PmwPoivC4kyN2b8yMqPKm2ECk8tWp9kvC7MCXZrPK5U',
     'outputSignatureTs': '2RFmH85HGiZsXsAtKFNij4aYrN8CjBt75k6d6Lsn9DuSL8DV3mnsXo2AJ5T6YWWddfWZAG7bK2HZpUWiaDehXqeN',
     'console': '{"res":"ok","data":"pong 1674308381796"}\nDone.\n',
     'consoleSignature': '4bcAE9V6QFyP3VmaoCizfHmLPhuXf1SnfaKKrjmEL8GWE8SYg5Ua1VbiBuyv2hQGtZzREDGLQ6wtYwFiaqzK65Zo',
     'ts': '1674308385096'}

These signatures can be used also in an off-line context, as long as the public signing key of the node is known.

Javascript, Python, Java

nodeApi.verifyLineageSignature(signature, inputHash, computeHash, paramsHash, data)

Verify Signature

Verifying a random string of data that was signed by the node can be done using this function

Javascript, Python, Java

nodeApi.verifySignature(signature, data)

Hash Checkpoint

In order to be able to verify the hashes that are returned in the computational lineage, the API needs to have a mechanism to reproduce computing them by a party that has the same data.

The hashCheckpoint() function allows transient auditing of all data inputs and outputs in a session. A first call will enable this feature (which is disabled by default to save resources), and any subsequent call will return a list with all the read and write operations that were performed on that session between the last two checkpoints (including a salted hash of the data handled by each operation), as well as a generic inputHash and outputHash anchoring all data in a single hash, which can be matched against the values returned from a compute task.

Javascript, Python, Java

nodeApi.hashCheckpoint(signature, enable)

Homomorphic Encryption

Another confidential compute supported is a 1:1 scenario, where the consumer is running some code locally on his machine on encrypted data coming from the data owner.

The supported encryption scheme is CKKS and the underlying libraries are SEAL and EVA from Microsoft.

There is an exchange between the consumer and the data owner, with the first one receiving a set of the columns in plain text (if any configured like that, those could be part of aggregation criteria or not critical and exposable), and another set encrypted. The encrypted values can be used to do linear transformations (add, subtract, multipy, divide).

Encrypted values cannot be mixed with unencrypted values, you cannot add an encrypted number with a plaintext one.

The aggregated results must be sent to the data owner to be decrypted. The data owner will get the outputs, decrypt them and send them to the client only if he agrees to release the results (and size checks or filtering can be applied, to avoid unwanted data exfiltration). The consumer's code is not revealed to the data owner, and could combine the decisions with some local data that is not revealed to anyone else, but the remote data owner will see the results.

HE Get Inputs

This API call returns the inputs needed by a client running homomorphic encryption.

The datasources is a list of arguments used for read() API calls locally by the data owner.

Depending on the column definitions, data is allowed to be retrieved in plaintext (to be used by the consumer for aggregations or various decisions) or will be encrypted.

The arguments passed can be empty, case in which the plaintext data is retrieved, or the encodings of an EVA program params and signature, case in which the encrypted data is retrieved.

Javascript, Python, Java

nodeApi.heGetInputs(session, datasources, args)

Sample:

Python

datasources = {
    # encrypted (per server side definition)
    'q': [ collection, table, filter.toJson(), READ_DEFAULT_NO_CHAIN.toJson(), "quote" ],
    't': [ collection, table, filter.toJson(), READ_DEFAULT_NO_CHAIN.toJson(), "timestamp" ],
    # plaintext
    'i': [ collection, table, filter.toJson(), READ_DEFAULT_NO_CHAIN.toJson(), "instrument" ],
}

# Retrieve plaintext inputs
reply = nodeApi.heGetInputs(session, datasources, []).get()

compiled_prog, params, signature = compile(program)


#Retrieve encrypted inputs
reply = nodeApi.heGetInputs(session, datasources, [ eva2str(params), eva2str(signature) ]).get()

HE Encode

Helper API function to allow a consumer to ask the data owner to encrypt custom numeric values with his own key, to be used in operations with other encrypted values.

Javascript, Python, Java

nodeApi.heEncode(session, items)

HE Get Outputs

After performing operations on encrypted data, the consumer needs to request the data owner to decrypt the results. This is done via the heGetOutputs function which will pass the encrypted values, the public context and the signature of an EVA program.

Javascript, Python, Java

nodeApi.heGetOutputs(session, encoded, args)

Sample:

Python

reply = nodeApi.heGetOutputs(session, eva2str(enc_outputs), [ e_public_ctx, eva2str(signature) ]).get()

Multi-Party Computing

MPC is a one consumer, many data owners confidential compute scenario, where some pre-defined statistical functions can be executed against a distributed dataset that is split across many owners.

The functions implemented range from descriptive stats and basic things like the distribution moments to linear regression.

The protocol used is SPDZ and Weavechain is using FRESCO from Alexandra Institute for underlying processing.

This is fully secure for the data owner as no unwanted data exfiltration can happen, but data can still be recovered if any number of computation rounds can be done and the input data is limited. That's why, in certain situations, the data owner might want to limit MPC to be available only if at least a number of records are used in the aggregation function, or at least N other parties are involved (from which at least M should be trusted, to avoid collusion to extract the data by the other participants).

This pattern is suitable when there is one consumer and many data owners that have different data following the same structure that can be analyzed by the consumer without seeing it.

The speed of running the protocol increases significantly first with the number of parties, then with the size of the data.

We allow a degenerated form of MPC to run 1:1, which translates into running predefined functions on a private dataset.

The operations supported are: correlation, inner product, linear regression, mean, median, stdev, variance, sum, t-test, two sample wilcoxon test and 2 parties private set intersection.

Although the records are not shared by the data owners, their hashes can be verified during the operation.

The operation can be launched on all active nodes or on a subset of the nodes, specifying them by their public key.

Javascript, Python, Java

nodeApi.mpc(session, collection, table, algo, fields, filter, options)

Storage Proof

This function can be used to obtain an interactive storage proof from a data owner. Integrity checks using hashes can guarantee the data values once retrieved, but just by checking hashes nodes cannot be checked that they actually hold the data. This function can be used to verify that a node has actual knowledge of the data, assuming the one triggering has a local copy or a dataset hash computed with the challenge.

The functionality can be restricted by the node, to prevent data exfiltration (as the filter can be used to pinpoint to individual records).

Note: the purpose of this function is to provide actual storage proofs, which can be used for immutability checks, but are actually different from the source integrity proofs (that can be achieved by enabling integrity checks and having columns that are automatically filled by the API with hashes and signatures from the source) and the live immutability proofs (which can be achieved by storing hashes of records or a merkle root hash on a blockchain).

nodeApi.storageProof(session, collection, table, filter, challenge, options)

ZK Storage/Data Proof

In order to prevent unwanted data exfiltration, this function can be used to obtain an interactive zero-knowledge proof instead of a hash.

The result of the is a Schnorr NIZK transcript that can be validated by the consumer.

Javascript, Python, Java

nodeApi.zkStorageProof(session, collection, table, filter, challenge, options)

A local proof can also be generated for any set of records or for an arbitrary string.

Java

nodeApi.zkDataProof(Records records, byte[] challenge)
nodeApi.zkDataProof(String data, byte[] challenge)

Verify ZK Storage/Data Proof

Helper function for verifying the transcript of a zk storage or arbitrary data proof generated by another party.

Java

nodeApi.verifyDataProof(Records data, byte[] challenge, String transcript)
boolean verifyDataProof(String data, byte[] challenge, String transcript)

Data Merkle Tree

This function can be used to generate a Merkle Tree out of arbitrary data stored in table and is a building block that can be used by applications built using Weavechain. Hashes of the data records are used to build a Merkle Tree, which then can be used to validate data inclusion by parties that know the data hashes.

This API call allows building a merkle tree out of partial data by using a filter, which is different from Merkle trees that can be configured to be automatically maintained in real-time by a node for the whole table.

Java

nodeApi.merkleTree(session, collection, table, filter, salt, digest, options)

ZK Merkle Tree

This function can be used to generate a Merkle Tree out of arbitrary data stored in table and is a building block that can be used by applications built using Weavechain. Hashes of zero-konwledge proofs of the data records are used to build a Merkle Tree, which then can be used to validate data inclusion by parties that can verify the proofs. The function returns the merkle tree and, separately, the data proofs.

Java

nodeApi.zkMerkleTree(session, collection, table, filter, salt, digest, options)

Verify Merkle Hash

Helper function for verifying that a piece of data with a known hash was included in a Merkle Tree or not.

Java

nodeApi.verifyMerkleHash(tree, hash, digest)

Verify Data Signature

Helper function for verifying that a piece of data with a known signer public key is matching a signature. Supported signatures are Ed25519 and Dilithium.

Java

nodeApi.verifyDataSignature(session, signer, signature, data)

Merkle Root Hash

This function returns the root hash of a merkle tree for a certain table. It works on merkle trees configured to be maintained in real-time by the node, in contrast with the merkleTree and verifyMerkleHash functions that can be used to build custom trees that could be needed by a user application built on top of Weavechain.

When the merkle trees service is enabled, the root hash is associating a single hash to the content of a whole table and can be configured to be put on a blockchain, offering another immutability proof (the other ones being the hashes of records (or batches) maintained live and which can be anchored on a blockchain, or programatically retrieving a storage proof or zk storage proof).

Java

nodeApi.rootHash(session, collection, table)

Merkle Proof

This function can be used to generate a Merkle Proof for a piece of data stored in a table. The merkle proof contains only the hashes needed to validate the inclusion of the specified hash. This function works on merkle trees configured to be maintained in real-time by the node.

Java

nodeApi.merkleProof(session, collection, table, hash)

Verify Merkle Proof

Helper function for verifying that a piece of data with a known hash was included in a Merkle Tree or not, using a proof. This function works on merkle trees configured to be maintained in real-time by the node

Java

nodeApi.verifyMerkleProof(recordHash, proof, rootHash)

Non-Interactive ZK Proofs for Data

This function implements non-interactive zero knowledge proofs for data using Bulletproofs.

There are 3 flavours, one that allows generating ZK proofs for each value of a column of the data, one which allows generating a batch proof for all records and one which allows generating Bulletproofs for a user specified set of values.

Javascript, Python, Java

nodeApi.zkProof(session, collection, table, gadget, params, fields, filter, zkOptions)
boolean zkDataProof(session, gadget, params, values, zkOptions)

There are multiple gadgets supported: numbers_in_range, number_is_positive, numbers_are_positive, number_is_greater_or_equal, number_is_less_or_equal, number_is_not_equal, number_is_non_zero, numbers_are_non_zero, number_is_zero, number_is_equal, number_in_list, number_not_in_list, mimc_hash_preimage, mimc_string_hash_preimage, sha256_hash_preimage, poseidon_hash_preimage

Verify Non-Interactive ZK Proofs for Data

This function allows verifying the data proofs.

Java

nodeApi.verifyZkProof(proof, gadgetType, params, commitment, nGenerators)

In case a node can be trusted to verify the proof, this operation can be delegated to be performed remotely

Javascript, Python, Java

nodeApi.verifyZkProof(session, proof, gadget, params, commitment, nGenerators)

Lineage API

Consumers to get information about the data and computation lineage, tracking changes and transformations, with guarantees from the data owners.

Data lineage is achieved by storing full audit records for all data operations, including reads.

Compute lineage is achieved by creating a chain of hashes and signatures: a hash is computed for all the input data that is read using the Weavechain API (and the order of operations matters), a hash of the docker image that is executed is used to identify the compute task and a hash of all the outputs that are written using the Weavechain API is also generated. The task output is also hashed and a signature is added by the node that did the computation, vouching for the results.

A task can generate outputs by by returning a task output or by writing to tables using the API.

[Section still under development, more functions to be added]

History

Returns all the read, write, delete operations on a set of records from a table, matching a filter (or all the table operations if the filter is not specified)

Javascript, Python, Java

nodeApi.history(session, collection, table, filter, options)

Get Task Lineage

Given an id of a compute to data task, this function returns:

  • the hashes of all the inputs that were read using the Weavechain API
  • the hash of the docker image executed
  • the hash of all the records that were writtten using the Weavechain API
  • a summary of all the writes, what tables were affected and the hashes of the records written
  • the task output result
  • a signature of the writes
  • a signature of the output

Javascript, Python, Java

nodeApi.taskLineage(session, taskId)

Verify Task Lineage

This function verifies lineage details (the result of a get task lineage) by the node to which the API is connected, returning true if the node acknowledges that the lineage was generated by it.

Javascript, Python, Java

nodeApi.verifyTaskLineage(session, lineageData)

Retrieve Task Output Data

This function can be used to retrieve an archive with all the records that were written by a task. The result contains the actual data of all the writes (base64 encoded), the hash of the data and signatures from the node.

The options allow specifying the output format (which can be any of the file formats supported for download).

Javascript, Python, Java

nodeApi.taskOutputData(session, taskId, options)

Feeds API

The functions in this section are a way to automate deploys of Web3 oracles to be used for pushing data on-chain.

By doing an oracle deploy and a feed deploy, data that is written to a table can be streamed live on chain (or with a configured cadence).

Deploy Oracle

This is a minimal function that automates oracle deployment, making it easy for Weaves to egress data to blockchains.

The oracle currently supported for automated deploy is chainlink, with few more under development.

The options allow passing custom parameters to specify the owner, costs etc.

The parameters are still subject to changes as we normalize access to multiple oracles.

Javascript, Python, Java

nodeApi.deployOracle(session, oracleType, targetBlockchain, source, options)

Deploy Feed

Deploy feed is similar to a compute task and allows starting a generic service that is to be used as a data feed by an oracle. The webserver will be launched a as a docker image on the node's machine.

The return value is a feed identifier that can be used to control the service.

Javascript, Python, Java

nodeApi.deployFeed(session, image, options)

Remove Feed

Stops and removes a feed that was previously deployed.

Javascript, Python, Java

nodeApi.removeFeed(session, feedId)

Start Feed

Starts a data feed to be used as a Web2 source of truth for an oracle

Javascript, Python, Java

nodeApi.startFeed(session, feedId)

Stop Feed

Stops a feed.

Javascript, Python, Java

nodeApi.stopFeed(session, feedId)

Verifiable Credentials API

The credentials API functions offer an easy way to generate credentials and presentations following the W3C standard, as well as verifying them.

These credentials can be used in any context, even off-line, assuming the public key of the issuer is known.

Verifiable credentials can be used in Weavechain for obtaining data access by generating presentations from an issuer that is permissioned to delegate rights.

Issue Credentials

The function generates a new verifiable credential for a custom payload. Weavechain acts as a generic verifiable credentials issuer, this function is a helper that can be used by dApps built on top to handle their own logic by controlling what that payloads contains.

The credentials are intended to be private.

The options allow to specify additional flags, such as:

  • the credential expiration timestamp
  • the operation timeout

Javascript, Python, Java

nodeApi.issueCredentials(session, issuer, holder, credentials, options)

Verify Credentials

This function validates the verifiable credentials. The verification is done remotely in this case, but it can also be done locally, by checking the signatures.

Javascript, Python, Java

nodeApi.verifyCredentials(session, credentials, options)

Create Presentation

Once a set of verifiable credentials is held by a person, a presentation can be generated, showcasing only a partial subset of the information for which the original signer vouched.

The presentations are intended to be public.

The subject specifies a key from the payload, pointing to the subset of information that will be public. A presentation is generated without adding a signature to it, in order to do that, see the Sign function below.

Javascript, Python, Java

nodeApi.createPresentation(session, credentials, subject, options)

Sign Presentation

This function signs a presentation, adding a signature from the current node certifying the integrity of the data.

The presentation can contain a domain (specifying what's the indended usage of the presentation) as well as an optional challenge.

Javascript, Python, Java

nodeApi.signPresentation(session, presentation, domain, challenge, options)

Presentations can be used to certify accounts ownership, login to 3rd party services or for identity proofs.

Usage sample: during login(), Weavechain allows specifying additional credentials. By using the public key of a newly created session as a challenge, we can have newly created key pairs to inherit rights using verifiable credentials. This allows writing backends on top of Weavechain where people can be in charge of the authentication mechanism, instead of using the standard private/public key.

Verify Presentation

This function validates a presentation. The verification is done remotely by the node to which the API is connected, but it can also be done locally, by checking the signatures.

Javascript, Python, Java

nodeApi.verifyPresentation(session, presentation, domain, challenge, options)

Attestations API

Nodes can run in a secure enclave to ensure data integrity and privacy. There are two simple APIs that make using SGX straightforward, assuming the node is running on an SGX enabled machine and was started as such.

SGX Quote

This request generates a report or quote to be used either for local attestation or for remote attestation. The is a single parameter, "local" which can be True or False, depending on the desired attestation type.

Javascript, Python, Java

nodeApi.sgxQuote(session, params)

SGX Attestation

The SGX attestation can be done either locally, if the report passed is from the same machine, or remotely, case in which either Intel IAS can be used or, if in Azure's cloud, an endpoint for Microsoft's attestations.

The message receives as input the "local" flag, specifying if it's a local or remote attestation, and the "sgx_enclave_quote" to be validated, as well as the "runtime_data" which is the user specific information that is hashed and included in the attestation report.

The reply will contain the mr_enclave, mr_signer, product_id as well as details about the issuer and the token (in case of remote attestations).

Javascript, Python, Java

nodeApi.attest(session, params)

Messaging API

The messaging API has the role of enabling Weavechain API users to build interactive dApps. Its purpose is to provide a simple messaging mechanism between API sessions.

The exchange of information between dApps can also be done using regular read and write operations in a table, which also offers persistence and full audit. The messaging API is intended to be used for transient communications.

In order to be able to communicate with another session, one needs to know its ID and the other API client to be connected to the same node.

Messages have a maximum time to live (24h by default) are sent to inboxes, each one having a limit (1000 by default).

This feature is subject to changes as it still evolves.

Post Message

This posts a message from the current session to another API session, whose identifier is used as the target inbox.

The message options allow specifying:

  • the operation timeout
  • the message maximum time to live

Javascript, Python, Java

nodeApi.postMessage(session, targetInboxKey, message, options)

Poll Messages

This function retrieves all messages received by the current session from another session, identified by its key. A null value for the inbox key will retrieve all messages received, no matter the originator

Javascript, Python, Java

nodeApi.pollMessages(session, inboxKey, options)

Admin API

Status

Retrieves the status of the node

Javascript, Python, Java

nodeApi.status(session)

Get Sidechain Details

Retrieves details about a sidechian, such as its seed, name, description, logo.

Javascript, Python, Java

nodeApi.getSidechainDetails(session)

Get Account Details

Retrieves details about a user, such as rights, name, avatar.

Javascript, Python, Java

nodeApi.getUserDetails(session, publicKey)

Get Nodes

Retrieves the list of active nodes about which the node to which the API is connected knows about.

Nodes can have 3 types:

  • active nodes: to which the remote node has direct connections
  • passive nodes: which are connected to the remote node but to which the node is not able to initiate a connection (such as nodes behind a firewall)
  • proxied nodes: nodes that are not connected to the current node, but which are known to other nodes in the neighbourhood. Their messages can be forwarded (encrypted) by proxy nodes and the replication or MPC can work as if they are part of the network.

Javascript, Python, Java

nodeApi.getNodes(session)

Get Collections

Retrieves a list of the data collections known to the node. The list contains only the collections for which the user initiating the call has "view" rights.

Data collections can have different underlying methods of persisting, such as databases (Postgres, MySQL, SQLite, Cassandra etc.) or file storages (local, S3, IPFS).

Javascript, Python, Java

nodeApi.getScopes(session)

Get Tables

Returns the list of tables available and visible to the user in a data collection.

Javascript, Python, Java

nodeApi.getTables(session, collection)

Get Table Definition

Returns a table layout, which contains the name of the columns, their data type, if they are indexed, unique, nullable, encrypted or if there are any data transformation applied when reading the data by people that are not the data owners.

Javascript, Python, Java

nodeApi.getTableDefinition(session, collection, table)

Get Node Config

Returns a JSON with the node configuration. Only the node owner is allowed to retrieve the configuration.

Javascript, Python, Java

nodeApi.getNodeConfig(session, nodePublicKey)

Get Account Notifications

Retrieves a list of notifications for the user. This list can include integrity warnings or voting that needs to happen in order to change network configurations.

[This feature is still under development]

Javascript, Python, Java

nodeApi.getAccountNotifications(session)

Create User Account

This function allows permissioning a new account dynamically. A list of roles can be assigned to the user.

The account monikier is optional, the public key can be used instead.

Javascript, Python, Java

nodeApi.createUserAccount(session, organization, account, publicKey, roles)

Update Table Definition

This function allows changing a table layout, such as specifying encryption for fields, marking fields if they are allowed to be sent as plain text or only encrypted on homomorphic encryption calls, if fields are PII and need to be obfuscated (and how), if a table is private and accessible only locally or it can be read remotely etc.

For a sample layout, see the Create Table function.

Certain table definition changes for replicated collections require the whole network consensus.

[This section behavior is still subject to change]

Javascript, Python, Java

nodeApi.updateLayout(session, collection, table, layout)

Update Config

Generic function to allow updating any section of a config, assuming the caller is a node owner.

Certain config changes for replicated collections require the whole network consensus.

Once a node starts, it retrieves the file configuration and stores it to an internal table. Any subsequent configuration changes are stored in that time series and include a signature from the originator.

[This section behavior is still subject to change]

Javascript, Python, Java

nodeApi.updateConfig(session, path, values)

Layer-1 API

The Weavechain Layer-1 is a ledger that can be used internally by Weaves to store hashes and record micropayments. Its goals are to offer free micropayments inside a private data sharing network and to offer an alternative to blockchains that require more complicated setups when the hashes are stored in a trusted private network. It is also used for achieving faster performance for hashes storage as the ledger can live in the same process with the data nodes and avoids serialization/deserialization of smart contract states on remote blockchains.

The internal payments can be handled in any ERC-20 token, the bridging tokens from a remote blockchain happening with the help of a smart contract deployed on the remote chain.

A small set of internal smart contracts are deployed on the internal chain.

[This section is still under heavy development]

Query Balance

Retrieves the balance of an account in a certain token. The balances are global, but might be distributed per data collection in the future.

Javascript, Python, Java

nodeApi.balance(session, account, collection, token)

Transfer

Transfers an amount in a certain token to another address defined on the Layer-1.

Javascript, Python, Java

nodeApi.transfer(session, account, collection, token, amount)

Call Contract Method

A generic function to call any smart contract function.

Javascript, Python, Java

nodeApi.call(session, contract, collection, fn, data)

Query Contract State

Returns a serialization of a smart contract state. The main usage of contracts is to store hashes details. A contract can have a different state for each data collection.

Javascript, Python, Java

nodeApi.contractState(session, contract, collection)

Update Fees

Updates the fees for a data collection, if the caller is the owner.

The fees can be defined up to table level and charged per number of records, per their size (serialization dependent), per unit of time, capped or not capped.

The fee token is defined by data collection.

Javascript, Python, Java

nodeApi.updateFees(session, collection, fees)

Sample fees format where writers are given 1 token for each record and readers are charged 1 token for each record:

{ "fees":
    [
        {"operation":"read", "fee": {"count":"1", "fee": 1, "type":"count"} },
        {"operation":"write","fee": {"count":"1","fee": -1,"type":"count"} }
    ]
}