Pipelines The VAST language centers around one principle: dataflow pipelines .
A pipeline is chain of operators that represents a flow of data.
Operators can produce, transform, or consume data. Think of it as UNIX pipes or
Powershell commands where output from one command is input to the next:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1a2VLbSlx1MDAxMH3nKyjf1+DMrlHesNmSsFx1MDAwNVx1MDAwM1x03EpRQlx1MDAxYduKZUmRxnih8u93JFx1MDAxM21ekI2dmLr4XHUwMDAxrNm6p6e7z+mRXHUwMDFmt7a3K3Loi8qH7YpcdTAwMTiYhmNbgdGvvIvaXHUwMDFmRFx1MDAxMNqeq7pQ/Fx1MDAxY3q9wIxHtqX0w1x1MDAwZu/fXHUwMDFivl9NZ1VNrzueKVx1MDAxY9FcdTAwMTWuXGbV2H/V8/b2Y/w3IytcdTAwMTCmNNyWI+JcdHFXKlx1MDAwZfNi46nnxpJcdNYo5YzDZIBcdTAwMWTuKWlSWKq3aTihSHuipsrP+0+6vPl8cH5hWFx1MDAxN7d1p0nuXHUwMDFhvVRo03achlx1MDAxYzrjbVx1MDAxOWa7XHUwMDE3ZFRcbmXgdcRX25Jt1Vx1MDAwZlx1MDAwYu3JvNBTXHUwMDA2SGdcdTAwMDVer9V2RVx1MDAxOObmeL5h2nJcdTAwMTi1XHUwMDAxkLSObfBhO21cdTAwMTmop53skGhcbs48j4XXPcdcdTAwMGJcIuH/gPiTir83zE5L6eBa6Vx1MDAxOFNYxDLSMf3fW8qs21x1MDAxNnarLVUjy8hcdTAwMTKxYTFEnGCeXHUwMDE5XHUwMDFjXHTwP1rxXHR/z+7ctZ527vZcdTAwMWMn1Snq2C96RdYzMkc20IenuF87tq29bz/anea56bgo0T3nRkZcdTAwMTB4/UrS8+vd9HV/XHUwMDBml2Ig81x1MDAwYo0l3lx1MDAxY9dcdTAwMDPeXHUwMDBlr+nxV+/w28nNcMh3QWbZp2/pRnu+ZYx9XHUwMDBlMo1cdTAwMTGic8KRjpJ+x3Y7RVx1MDAxYjie2UnddCuj7+NWXHRtknWmbmbsNpxVad5vXHUwMDEwmDhzXHJPXHUwMDFlOZrnkatwuEXiXGbNijPLk5HRl1xutFx1MDAwNVx1MDAxZPbJ8SHEQENcdTAwMDTQ1KxpmoLarDTFdUwgXCJamTRVXGaNnFx1MDAxYS/3s9RtXCJ3UUY880VgSHVM6dl4rmzYI1x1MDAxMUvJtVx1MDAxZVx1MDAxOF3bXHUwMDE55qxcdTAwMWIts+vYrchcdTAwMDBcdTAwMTVT6SyCXFxcbpe2goNkQNe2rGyOvzdCoXSORZGk1VSiXGbVXHUwMDFhfCyTsr3Abtmu4VxcXHUwMDE2NzQ1pEpcdTAwMDGOhmadJCTK7pxcdTAwMDJa4iTH0WtcdTAwMWacXHUwMDFhXHUwMDA33/YvdyRcdTAwMDadU3NcdTAwMTBe3dWvN1x1MDAxZHAg2ii80TjEXHUwMDA0IJa6yOvCm/G6WoA+9a1a6LGjg3t0PFx1MDAxYfG9XHUwMDFke604dvdwcX3V87VTRzO/XGb2mu2bm/blX8Ox6dqUwDGI8Vx1MDAxYo6tXHUwMDE2xzDFXHUwMDFh01G6elx1MDAwNsYmXHUwMDFhk+RcdTAwMDexTlx1MDAwMVx1MDAwNKmh32DsyVNKwNgzQLBcdTAwMWOMjVx1MDAxM8WUU1R2nVk0Ma5hXStcdTAwMGZh81x1MDAxM+KGQlx1MDAxOKqiQs7Aa8IwSDPZKUk9XHUwMDEzIKbKJVx1MDAwNWJcdTAwMTSsXHUwMDBlxOblbUpcdTAwMTlly1x1MDAwNFQojUDWbNey3ZbqTPHmd1x1MDAxNV+GlEWbM/zCKcTRZ/ZcItXBU1NcdTAwMDJsXHUwMDE14VrPXHUwMDBinVx1MDAxZkKLXHUwMDBidYxQ1r1u147y77lnu3JcIl9G1tiNgqwtXGar2KuUzvZVZGBcdTAwMTc4pVx1MDAxZi2aZ1x1MDAxY+m37dRJ4ofk+/d3U0fnPK0wYyv7fynSS2cmXGZcdTAwMDaQhiHUy9+y3I5+ujdcdTAwMTdcdTAwMTj02EdcdTAwMTme7ejgqqP5m54xVHRuXHUwMDEy6VVcdTAwMDZnXG5cdTAwMTRcdTAwMTlOcXGdrHf17HS8bv+SQvhlpKNG7+TMaT7oomvytbLeWmPUrFx1MDAwN1x1MDAxN1x1MDAwM+/SPGQ+XHJcdTAwMDZH9f7xX2O907UpwXpcdTAwMTVFe2O9q2W9iFx1MDAxMFxuXHUwMDE0h9VcdTAwMTeivVx1MDAxOHFONUbT65032vvkKiVo7zNQsGrayydu5pLqRVx1MDAwNVx1MDAxNGaUL/CyYH5O3FBcdTAwMThDmapuvbyXVbUyxJdcdTAwMDCGVeDR1eHY3yS+z3LQhG5O8FK4XHUwMDFj651cdTAwMWZBcyVGTPj1s96sn1x1MDAxNaa8nPZmiNfEXS9njHG8QKV8d+LDs/P9g1x1MDAxMdw7PMatw6F0XHUwMDFlNv6yl7LN4r1cdTAwMWFRXGJcdTAwMWSB41x1MDAxZuG9f56f7p/RW3Fyf73fhN2dXHUwMDEzLbzyO6f1xfgpQDhcdTAwMDN0L+Kn07UpwU+p9sZPV8xPXHUwMDE5J1x1MDAxYeLT2OlEW0JOsSpcdTAwMTOJqlx1MDAxNVdPTlx1MDAwMSaILOBkr5CcPpOvV01O9ZlXLJBrkDOV98qT0/mJa0Oxhlx1MDAxMFTVXHUwMDAwYVx1MDAxNHDF0yj5c1e0gFBMdEhcIipK0miZTVuZ2lxy0TSW/vjoNdPWXHUwMDE3kcjciVx1MDAwMb5cdTAwMWONnVx1MDAxZmv/XHUwMDAzXHUwMDFhO8tcdTAwMDdcdTAwMGLTS1HaPFx1MDAxY2d+Klx1MDAwN2bWv4RcIqYq4FJv78ZcdTAwMTnG8380waXUxD0hXHUwMDBmjaPDXHUwMDAzrl/trjjDvFx1MDAwNGVnXFzj8qraKCu+/Vx1MDAwMbBKozdftKDJYlx1MDAxOYYjU4diMsOQKYUwmqS2XGLqKqdcdTAwMDCcnsE6c8rSt0tcdTAwMGLDdGSbPUNcdTAwMWHPwW9cdTAwMGXSXHUwMDFk0ZRzXHUwMDAwXXqZa6I8buf2UFx1MDAwNOlYj+WCh86uXHUwMDA1KadcdTAwMDTpXHUwMDAwlq9cdTAwMDW9PWnV/VZjp0tb3fpR7eGjtXuy8dGDKK5cdTAwMTJcdTAwMDb0bNW7OfFcdTAwMDM0pVx1MDAwMM6ewlx1MDAwYuNnXfezb1x1MDAxMTRRqEQ/N9Gz1c1zXHUwMDAxdNr8fN35od/i3dtcdTAwMWFcdTAwMWY2Rq1Bq0Y2PoCIKotcdFQuupFcYoRcdTAwMTkmXFzPsoS3XHUwMDAwWmtcdTAwMDBtPVx1MDAxMcKK4ftccqmskzDkyoMt+rUpJ9yMP9H8OPxcIkdcdTAwMTeRqVx1MDAxZn9t/fpcdTAwMGYxykNcbiJ9Operator Operator Operator Operator Data Data Data
VAST distinguishes three types of operators:
Source : generates new dataTransformation : modifies dataSink : consumes dataA pipeline consists of one source, one sink, and zero or more transformations.
The diagram below illustrates the operator chaining:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1abVPbuFx1MDAxNv7Or2DYr41WR+/ab4UtLZRtu0Bvae/sMCZ2XHUwMDEyLyY2tiFJO/z3PXaI7ThcdCGtU7L34lx1MDAxOUhcIsnSsXSe5zxH1ret7e2ddFx1MDAxNHk7v23veMO2XHUwMDEz+G7sXGZ2XmTlt16c+GFcdTAwMWarWP47XHRv4nbespemUfLbr786UUTKu0g7vFx1MDAxYd/pXHUwMDA13pXXT1x1MDAxM2z7X/y9vf0t/19cdTAwMTkr8Pte3jYvrYxkTL30XdjPR5WgpVx1MDAwNm5k0cBPfseRUs/F2o5cdTAwMTMkXlnj5mZeyH19PTw78lx1MDAwZYedw/NcdTAwMTPH1yejctSOXHUwMDFmXHUwMDA0J+koXHUwMDE4P5LT7t3EXHUwMDE1m5I0XHUwMDBlL71Pvpv2sFx1MDAxZWrlxX1JiFx1MDAwZl/eXHUwMDE1hzfdXt9Lkql7wshp++koK6O0KHX63byPsmSYtSBCgGbWMKNBciZEUZ11IFxmXHUwMDEwroSxlEpulOE1w/bCIIwzw36h+VWaduG0L7toX98t27Q9V7hO2WZw/7imtKnn+d1emo1cXJYlXj7n1nJcdTAwMDCltSoqsv6jXHUwMDAzN1/4v6qT0nfvJ6V/XHUwMDEzXHUwMDA0pUlZxauKs5T33ESuM15ZUFx1MDAwNlx1MDAxOOOgLJe2qEdcdTAwMDe6rHdcdTAwMTeE7cs5zpCkTpzu+n3X73frt3h9d0FN4CTpXnh15adoxofQ76f1XHUwMDE2eb8v4zhcdTAwMWP0PMed0/PCuijrrkRHdpXftkuHyH9cdTAwMTTf/3qxvLVY2lxcrdjeTLVnlNDqXHUwMDA1q1xyx4mUXGZBrLQx6MBcdTAwMTS8XHUwMDE2yJVcdTAwMWWwYu9W9fPuxWpEw0vD6kTDuULgUaZcdTAwMWZNNG9P7e3o6D211+lXQ4eHkYZdufFEo4BIaoEzLqiUVLBcdTAwMTmi0Vx1MDAxY1lcYklGKm0rPNQo06BcdTAwMTFAOUevMMKCLNn9XHUwMDAx4lx1MDAxMYpcdLDWllx1MDAxNq+HeLRmklx0TYUoo9Iz8UwuVmOGpyaqRZ6UW8eJppZcdTAwMDI1yjIlXHUwMDE08H8tcWldLy1cdTAwMTSS4oxRVlx1MDAwNsllvOV8eHt77p2ev/5cdTAwMWS6b9RoeHT0RdBN5y2GvCUoMKo1p6BcdTAwMDUt5ceEt5Q1XFwgrzE2Vf3kvFx1MDAwNVx1MDAwNlx1MDAwNFx1MDAxOEUrXCL3mbieiev/g7iEXFxIXFyMXHUwMDAyUFx1MDAwNK4sXHUwMDE5YVx1MDAxOXWdv/7zVMafXHUwMDA33Y+R6Vx1MDAwZSP2/uXewe6mU5dgjHBjXHUwMDAxUMBILeuCi1x1MDAxMiNNtthcdTAwMWOlTYVRms3splx1MDAwNXyZP1x1MDAxNrzFLdGCK8wuwWpDZUX4jWlcZvWi1YzK57zvKVlcZlxmYblsZ0Dxr1xm+3llfVxyl/XWQrUvhJVaXHUwMDFii3/IOaLa34xPLOtPT1vH2UO9saW9aWKMXHUwMDAwhbqfXCJcdTAwMGbCXHUwMDE0RVx1MDAwMsJcdTAwMDZQXHRcdTAwMThAo5FDuVkrv6XeMJ3Hb1x1MDAwMFx1MDAwYreukL1FlrBUcqhl/HaRyM9JeFx1MDAxY3W6XHUwMDFk/5LdXHUwMDBlguFua9gwv7lh5uONajNhicIl0CV5janNXHUwMDEwKo20XFz/XHUwMDE4q4F0nIvOLKtVpr6gMVZcdTAwMTlqzFvSYPy06EPrVl+KZ57KaEV7rsBbnbCfnvhfx4FxqnTfufKD0dTq5N6IU0NcYtmZKnxcdTAwMTn43X5cdTAwMWWPvc60v6Z+21x0iuo0jMraNlx1MDAwZeJg/I5cdTAwMGZmuCuM/a7fd4LTeVx1MDAwM2Yx/81k4oFUpv7CSbxcXFx1MDAxMWSL9F24slx1MDAwYmFlJDModNXjXHUwMDEzXHUwMDFleipcdTAwMGbdXHUwMDEzqlx1MDAwM7h+tSd2e2503GlvPKpaUEklcjxRTbhcdTAwMTWSXHUwMDAz+zE8XHUwMDE51rbgzeJJlY77XHUwMDAwnjhcdTAwMTXWUrN2PN3rXHUwMDAwRTmtetxa8XQyftnxUyFVXHUwMDFmc52oQr29MFppSZnA2X48rs7iv+mnXHUwMDAxZ6I1XHUwMDA02kvPPlx1MDAwZlx1MDAwMr6/8biSXHUwMDE4lrg1gtfDVeXOJlHFXHUwMDFmXHUwMDE1pYCjTaiaKu9gflx1MDAxNFaFwvlWfCuWLtp9c/Xy5Fx1MDAxZOvQT9fh17NzPTxqn1x1MDAxNbZP+ZKT6dqdouZuXCKXNlx1MDAwN7RZ/z9cdTAwMTeyUyOuXHUwMDEzsKwyj3XAXG7DOVx1MDAwMtaWydwywH50OY2cL1x1MDAwM791ffrh6n0w8NNIbzxgMdxcdTAwMTOtpGLTeFWSXHUwMDEyyS1Va4qGoOZkybPAzVSfolQ391biIdzKtvjQPd9vjXquXHUwMDE3vD5cdEYqXHUwMDFl2Vx1MDAwNnB7v3XIXHUwMDAwRNWv14rb09jpJ50wvnJSdOvk50J44eBNoHk89fPi7+LdMJBcbpWVhsrrrWVwfthcdTAwMTk2XHUwMDE2zlZcdTAwMTHFuFx1MDAxMlqCwJinp486qGybwGIj84NZ41wiXFxcdTAwMGJFKFxihlx1MDAwZT9cdTAwMWWez1G9QIFcYkPFtFx1MDAxMWPAI1x1MDAxNVx1MDAxOaZWUb8ljidcdTAwMWUy2fq4W1VcdTAwMTSXSaaueux3bo5VXGa7P7xz8Ig4kSO7fZNZ2aKEU1x1MDAwNjiNQuOCiHJzMJtcdTAwMTgnyqeS6DxKaTnz0D9tP24njf2xN1x1MDAxNi1cdTAwMWHdlWvxmk9zVb2/xShRwFx1MDAxOaqjpbvwrcX+mVdXXbPsa6v6uTItMcbqpVx1MDAwNS1xoylTelx1MDAwNVraj+lp/KV7MFxmL079fdW5XHUwMDExveN442mpJTVcdTAwMDHFXHUwMDE0qld0ZaSfMlx1MDAwZsqzXHUwMDAzsIQyRrnkXHUwMDFhs1+9JnIyfJZ3yleLnHBhtcDFoGBs5Vx1MDAxNeeYmbLoTY1cdTAwMDC2Slx1MDAwZdE4OUlDdVx1MDAxM+T0NDv362ZcbsmI5lnuOTlKVb3bXHUwMDEyS4XgUozXd1lfc5wlu+pu0lx1MDAxOEuoheJFXHUwMDFiaUGrMtNdxlx1MDAxMVx1MDAwZuefm8pcdTAwMTFSK2KQXHUwMDAzoJaKIORI9qI1i4BMKmpqJjXDXHKomzj2n1x1MDAxZN3CPNvAPIbQxHBqjLZSSkHp7DaDVmCEUnyVdKV5ikCp+12b5I/UL1x1MDAwZm9MVfRcdTAwMGIlzPLsmJuiXHUwMDAwyuL6Vd5/TVx1MDAwNFxmXHUwMDEwqSuR+39RvsjsUKDkylxuM3atqdeAXHUwMDA2/U5JYFx1MDAxM6da2t1CT82uXHUwMDE5XHUwMDFmXZGfXHUwMDE2n+2U9dJcdD2h0yEjPv6YwavUMX/uRt1zccs+yuP/vG3Z46ZcdTAwMTOrxo9cdTAwMTlkXHUwMDA3SpQ1yMNcdTAwMWPJXHUwMDE4eEnWk3NcdTAwMDZW4YRnW7xaremYwfdcdTAwMWOPQtWiXHUwMDA1z4xagZKej0c1zVx1MDAwMc/Ho1Z54MbOdZqFmZdcdTAwMDFcdTAwMGKM28efR9/7O+Hxxdfk8FV841784Xu96zdN7+42zlpcXFCiNTdWZ6qqXHUwMDFhecrz6EZKaynHpVx1MDAxMrZm2Fx1MDAxM/KWkpjPXHUwMDFiXHLPx9Gfaau4/q20tXV//45cdTAwMTNFJyn6XqGud259b7A7XHUwMDA3TJ38yl4w5KSX8YuXZ1x1MDAwYndbd/9cdTAwMDDiYlx1MDAwM9EifQ==... Source Sink Transformations
If a pipeline would not have a source and sink, it would "leak" data. We call
pipelines that have both a source and sink a closed pipeline . VAST can only
execute closed pipelines. A pipeline that solely consists of a chain
transformations is an open pipeline .
Operator Overview Let's take an inside look at the anatomy of a pipeline: the operator building
blocks. The diagram below shows the three major customization points of the
pipeline execution engine. The operator SDK enables creating transformations,
sources, and sinks. The SDK for connectors and
formats are convience abstractions to make it easy to
get data in and out of the system.
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dWXPi2JJ+v7+io+b1wpx9uW8sxlx1MDAwNrODMTAxQbCIxew7eKL/+5zj6i6EQCBhhEW1XHUwMDFk3VVlXHUwMDAxOlx1MDAxMsrM78s8ufzfv/7448diOzF+/OePXHUwMDFmxqZZXHUwMDFm9Fqz+vrHv/XxlTGb98Yj9Vx1MDAxMvr4fT5ezppcdTAwMWbv7C5cdTAwMTaT+X/++7/rk0lw96lgczz8+UljYFxmjdFirt77P+r3P/74v48/TWvNjOaiPupcZoyPXHUwMDBmfLy0W45cYmo9mlx1MDAxZY8+loZUXHUwMDAwQiDi8Nc7evOoWm9htNTL7fpgbuxe0Yd+kNk49Nx9r5VcdTAwMDavg3U7XHUwMDEwf0m8PTZ3y7Z7g0FhsVx1MDAxZPy8sXqzu5yZLmq+mI37xmuvtejq1S3Hf32uNV7oXHUwMDBi+PXybLzsdEfGfL73ofGk3uwttvpcdTAwMThcdTAwMDC/jv78XHUwMDFh/vPH7shG/YYp2Vx1MDAxZNBcdTAwMWbBpt9/rlx1MDAxZVx1MDAxOVx1MDAwZsYzvfp/gY+f3fKNerPfUdcwav16z2JWXHUwMDFmzSf1mXosu/et/7ovznbn7lx1MDAxYb1Od6FcdTAwMTc0XHUwMDFknFx1MDAxYlx1MDAxZl+vRFxiXG5I2O7x6FUm8dbHk/5f8+2PWn/d/mg5XHUwMDE47C5Mv/Bgko7dZ5aTVv3nQ4RMQIQwoFx1MDAxMlx1MDAwMv7r9UFv1LeebjBu9nfP/ePon/++QOAo4rZcdTAwMDJcdTAwMDdcdTAwMDCFnFEmXHUwMDFkXHUwMDBi3LTz2EpvWPopa5DcYypcdTAwMTaPpUPx+1x1MDAxMzizUFx1MDAxY1xiXFyDI0EvXHUwMDE3OIKOXHUwMDBiXFxcdTAwMTCYf5hV/iCAiEmCXHUwMDE4uoFcdTAwMDBcIilcdTAwMDTi6FpcdTAwMDKoPn5U9lx1MDAxOJR2sscwUq9cIsFcdTAwMWSLXvI9UFx1MDAwMYtIXHUwMDEzJZ+2KFx1MDAxY56lSK9Dryx687Ey99eUPFx1MDAwMlx1MDAwMFxuXG5cIoVcdTAwMTJBZV9MX7n+PFx1MDAwNTBIXHUwMDA0XCKEMcxcdTAwMDEgzF4oz1vB/2pcdTAwMWEt0qpcdTAwMWZcbiQ8JpDEXCKPkFhcdTAwMDWSSqLQiHJxVFx1MDAxZf86po7i5Ca0blxmYu1Je1xii29CiPdZ/sdfr3+12Jq+0PpsXHUwMDEx7o1avVHH+lx1MDAxMWPUsnllUJ8vXCLj4bCnLVJ23Fx1MDAxYi2s7/g4b2g2XHUwMDFir7tGvXXkzLavTfTp9r/L3b/+2MnRxy+//v2//z76brT3dnT2/Vx1MDAwMVx1MDAxNGRcdTAwMTRR9XRcdTAwMTnhTMtcdTAwMWU1n1x1MDAwMIsgQ1xmSESxQJhTfu58klx1MDAwNzHhRMk4plxi40+dXHUwMDBiQvuTwf2TMfCZK1x1MDAwYsAg5lhcdTAwMDJOmIJBpYaInjub3VP5l/lvOzO5MDaLo5xcdTAwMTBC69G/zSRcdTAwMDKSMlxihYmWnLOTXHUwMDE4bDJcdTAwMGbt8lx1MDAwM5kvKt3E0mCvdPHofzuJmHpOXHUwMDEyYUnVLeOdOP40lFx1MDAxMFx1MDAwNiGhXHUwMDFjXHUwMDEwIDDU9tJcdTAwMTNLKYhcdTAwMTKI3cq/jCU6YItKXoCWXHUwMDFjuHvlnq1jezxaXHUwMDE0eu9cdTAwMWakkO1cdTAwMWSN1Ye9wVx1MDAwN0f/dfhDjLVcdTAwMTAsh8P6TH9q76XQoNfRUv2jqS7ZmO1cdPyip1x1MDAxY6pfb1iMJ7tXm2qxuuJcdTAwMTGz+IGlXHUwMDFjz3qd3qg+KNovrFx1MDAxOcjT349cdTAwMGJcdTAwMDZcdTAwMTE1Pf+58cFP9K1dxGIos3XZXHUwMDE4XHUwMDA2kplF5pxyTlx1MDAxYZR1xjEs37NvdEqMce4tsfW7cmLBlPopOqDdI6as705cdTAwMTY+JEPAIOWIc6ZZjjJWt2QxVsVESi2JJEyeoy3zd9gtwnp61eWBTv+xXHUwMDA1J9HZ2HeK+U1b7M9Ozr7dJNr6XHUwMDA3y6A0/1xidvZcdTAwMDSWXHUwMDBiVJaFK6iCkinWTik4f1x1MDAwMmDh2ftsZu90REr0RfzD1sBRiTFQXGbReUgqXFzMoEVxOYlcZlvhyXabiyWGy4j/LZyUQUUpIVx1MDAwNVx1MDAxOClcdTAwMWLG9+lcdTAwMDeW6kkp741xiiGCzOwsXdHEXHUwMDExXHUwMDE2XHUwMDE0XHUwMDBl6Vx1MDAwN6aUSSjk7kLu2cpdRD+UdZrdnHpYXHUwMDE29ZJ2MPvAnUJbKFx1MDAwNN1cdTAwMTmTs1rZqrLZrFx1MDAxYVx1MDAwZScngzQ2tlW0robffK+VVFx1MDAxMXKuSLZcdTAwMTRcYlx0ZlxuU/6kXHUwMDFkOMiIwExwgjBk0qvoXHRcbkq1XHUwMDAwk1x1MDAwMFx0xfh3XHUwMDBm5Vx1MDAwNFx1MDAwYsGYKM+N83PeQTReXHUwMDE4N5OT8rBqhF9cIpJUkp3Xmu/U8zcnIZBcdTAwMDdcdTAwMDHlmsord06qL2pcdTAwMGaiRVx1MDAxMFxujFxikljBNFx1MDAwMlx1MDAxMJ87XcBcIi+7UK/+wdbznTud3L86XGZPne3sxX2a0Fgvx3y2XHUwMDAwXGZcbqgwUt2yXHUwMDAwmEv+VfFcdTAwMTSErEd/bXmoL1x1MDAwYmCIhXOXbTSdXHUwMDE53XlkSOovz9G3Wlx1MDAwN0VC6ZHvTadcdTAwMTKGIGaYYEVtODFZrZ98XHUwMDA2XHUwMDA3kSSYqv+VbYDYcl3XsZyUmVx1MDAwMfFcdTAwMDSbUfabqVx1MDAwYjlLZu7DWl5cdTAwMTZLUVwi2Fxc3DyQYlnV0yhcbrFXSkBcdTAwMDXEXHUwMDFjXHUwMDAx55tBgcdhqiEjz+3Qe7j0XHUwMDFhj9Uk2Fxce+P7+krJXHUwMDExXHUwMDBlYuV2XG7EKIBcZliCnEDZT4FcdTAwMDDjkFx1MDAwMCi/OI6iXGImV6bhXHUwMDFjg3natodV+JxcdTAwMGZnWuVmZLHOTztcdTAwMTD6Tid/c1x1MDAwNvNcdTAwMWRG8UVcdTAwMThcdTAwMDVcYuvRXWqPVNesbtQ57XhfjKJ83ok892cvITCdv7w2Usj/XHUwMDE2jrGgYqPKeGEo1PPY51x1MDAxZHpcdTAwMWKHXCKhXGKkUNxDMlPc6ZomXHUwMDBl86CzKFxuY1x1MDAwMEKMz8aK78PIXUQ8WjMzd7hccu3YX9PbrVx1MDAxYmA9ulNJyFx1MDAwMVF+jHOVnMPXRSiVYqSG6pXk4/vjeJVivldJwUCQY1xiXHUwMDEw44Ipr8xKOtSrkFOh7KbyXHUwMDA1gDdcdTAwMWHpkHRAqSOwkuNzXG6ZWr2vyu+5981cIlx1MDAwMl+bs1mq265kfKeQ36zjm3V4zzqwrV+FIEFcdTAwMThRKp3HiYv11Ev6XHUwMDE1PdSfXHUwMDAy+fm0mEs/hntD/5s4qfwqwVx1MDAxMdPPXHUwMDE1XG5uZVx1MDAxZFx1MDAxZqFcdTAwMTDKmaYkkIgvXHUwMDBld1BMhLK0Z1x1MDAxM+vuw8hdxDpmxqg+vPnmjXVVT5lcdTAwMDe3TX2FSEmjgmPnWpmft0Ot/LxcXG5MtutWu1CoXHUwMDBmy0nfayVHOmtEkX1cdTAwMWRcdTAwMTDmXHUwMDFj7Vx1MDAxM1x1MDAwZkJcdTAwMTTxQFx1MDAxMFx1MDAxMeVcdTAwMGJA5VxyfCnxIIJBhvC5XHUwMDAwJOY0mpykS+NyXHUwMDFkZ1x1MDAxMFxit+fRMfCdRn7Tjm/acVx1MDAwM9pxXCJnlTChXFx95LysZFx1MDAxYto0njfp10D1YTV/i69662X1yf9cdTAwMDaOIW3CXHUwMDA0hMowUFx1MDAwMfZpXHUwMDA3oZp2cIRcdTAwMDVFXHUwMDFjMuWHeWLhXHUwMDFjXHUwMDA3OzhAQFGjs8GO+zByXHUwMDE30Y5cdTAwMGbbdGPSsb+mp5RDnPBcdTAwMDRcdTAwMTBWXHUwMDAywF1kqs7zb/M3XFyJRmJcdTAwMGJcdTAwMTgpPvZnYYHLvldJnamqjLRgjFx1MDAxMcqgJVOVXHUwMDEwqCwro4IgJYBEUZOvJFx1MDAxZFx1MDAxMmClkVx1MDAwNO3E97hCLipcdTAwMGbPSfmwXj7U21x1MDAxOZlcdTAwMWXO8uPQ1HdcbvnNOr5Zx1xyWMeJYlbGXHUwMDA0Q4I7d6veuoX6YjFN1/ugjTdz9jh+Sbz63sRJIIJcdTAwMDBcdTAwMDNcYpCuhEGWVFXNOnRlXHUwMDE3J1x1MDAxMlwiRoi0XFzYbUlcdTAwMDdlQFx1MDAwMsnpuV3k+zBxXHUwMDE3cVx1MDAwZcVcdTAwMTNcdTAwMDa35lx1MDAxY/tresk5XHUwMDA0t9/zXHUwMDE0imsyTImLOMc2l4lue5XEa4k89Xpw8lx1MDAxYX70fZYqgYpVKCynXHUwMDFjScols1x1MDAxNscofdR5XHUwMDE0elx1MDAwYkZcdTAwMTfUfiXjQFx1MDAwMHAgXHUwMDEwO8c4XHUwMDA2fVhLl/vy9bFcdTAwMDeW6YfOYPFUxr5Tx2/G8c04PGdcdTAwMWPcnnFIXHUwMDBlKeZcdTAwMTI6t2/VIY2TXHUwMDE2WVx1MDAwNOBbQ0lgjFx1MDAxN3vY91x1MDAxYshcdTAwMDRcblx1MDAxMpSYXGKg6Fx1MDAxNeOm7jQ/U0mBQlx1MDAxNFx1MDAwMaRQjlx1MDAxNTJ3t/mSIFx1MDAwN1x1MDAxMFI9XHUwMDE2Sc9cdTAwMDU57sPCXZZKOp7dPpF0b01Pg1x1MDAxY6YyXHUwMDBmiz5iKpjEWDpcdTAwMGY7vvZSXHUwMDBmxU5WXHUwMDE4/dpjJV4o9GS3WPe9PiotUt8pgopcXEOqNM5Sq6ZcYodQvlx1MDAxMJdSoT2mN+0pYtVHJjhQZlx1MDAwM55Tx9C0+lx1MDAwMMKSRqNLXHUwMDBlpmRcdTAwMWTKNp78t9X5TTi+XHSH9yFcdTAwMGWTXHUwMDE2WT0qwqmQystwzjiixVx1MDAxNzpa1V77+ad85SEsa6V1XHUwMDA0+9/CKY+Kglx1MDAwZlx1MDAwM1x1MDAwNzAkO+vxN+MgTErMMVH2hTJvgrguinEhXHUwMDA1VDlWNp277s3KXVx1MDAxOOWYL26ez2FZ1NtiXFzbvVx1MDAxNSq4btDjXFwnY9l6vmvgSPx9XHUwMDAzWHiCJpCk70AnXHUwMDAxXG5cdTAwMDJdtYKVXHUwMDAxgmC/kZneWNHtK1x1MDAxNd+QnDH5pfsquqehXHUwMDEw/FxcMsck2a2Ax9ZwU53mmo+dSX3dXS58p43fnOObc3jPOYT9toq6Klx1MDAwMjh00Vx1MDAwMSQ6nVx0WU2uXHUwMDFmXHUwMDFiq3JdXHUwMDE2am+VVNH3yVx1MDAxY1x1MDAwNGBcdTAwMWVUXHUwMDE4jqWQ6o/9IIfeVFx1MDAxMYBcdTAwMDCmXHUwMDBirVx09yiI6ziBXHUwMDE06iZLmCB8blvlPkzcRYRjOepNlzdnXHUwMDFj1lWvQTlOt4vG9vsrXHUwMDAwXHUwMDAxoOBcdTAwMTY7z+koZEk0sumMSUhkR4VaNifDvWt37/WiXHUwMDBiyO6A/ogwfeSC5r329Fx1MDAwMjiiXHUwMDE3iDJKOLDZ0zyuVX8/9N1j/7tTw5/2yvbrM7tP29ly0zOOl4rJVCn8UnlbPHDWLb4+ZV9jP369789cdTAwMDPt97g3sP1Wvr1kcymwYII4x5zjd31dyW7V590r96VmcM9ofEg3VO6tiS+cwFx1MDAxYVx1MDAwN7IuUFNC41DWj1x1MDAwN9ShXGZcIqu4Q1x1MDAwNYZSXajwZ1/qz6FIopBJX4ohw16rZTba+zByztZakWX/Sqy4clx1MDAxNFboJ2DFvlx1MDAxOVx1MDAwM0VcYlJInVx1MDAwN9GfUeKtmH+YhEOrQGGcn1dTIe7//ihcdTAwMDJZQOVzXHUwMDFk4T9cdTAwMGIqis9cdTAwMDFKXHUwMDE4Jse35r9cdTAwMWNVQpH8XHUwMDEwbN9rPdR8XHKxhvFOpznqR1Q5XHUwMDE5PdUtkqSL1j/H79r3qFwiKFxySmxJXGZcdTAwMTP8XHUwMDE2uIJEXHUwMDEwXHUwMDFlc2KOXCKLciyV51x0bTZr71x1MDAxYllcIoWSR8Byxt5agWXvQrzGXHUwMDE1dlwiP5NzTFx1MDAwMOTUOal7769cbrBcdTAwMTmLvIqe6D+8x1qlSijve2SxuitcdTAwMTJ9KbLoZmeEYno8XHUwMDFj+uXAklxi90ulqZi2NrHSaIlAubLJh/1cYizSVrL1+oRK4lx1MDAxY1eO37TvcYVKXHUwMDFlhMKCK1x1MDAxMt9cdTAwMDJXXHUwMDE4XHIyx7iCuNQ9aMjv6LHEjPqia4aPq2LLXHUwMDE5i2vFloOL8Vx1MDAxY1+YbfZcdTAwMGajQjJOuFx1MDAwYselXHUwMDFiecDNbWVbXFz3XHUwMDFmSCon3t7GXHUwMDFk38NcdTAwMGJcdTAwMDe+glx1MDAxN1x1MDAwNJS2XHRcYmzKXG6/XHUwMDFjX7pwXHUwMDE5xaNcdTAwMTRLzdL1zTqbfC/W0sCH+EKRbb9cdTAwMDBcIjWEM+x8h/n4TftcdTAwMWVfOLxcdTAwMGZ84UJ3v4U2hXv3jS/Z+my6NC5OID3nu5w2uVZ8ObhcdTAwMTiv8cXcUt2KL1x1MDAxY3DEsXCuhcZyPlxmiPBbM5mM9irD13g18HJ/7lx1MDAwYlx1MDAwNKeGc94gMqY7oVwiRmw6kX45wFxmm5H3mlx1MDAxMuP0uFekL1iE0ajY8CPA2Fx1MDAwZlx1MDAxOYNcYlxuXHUwMDA149SFXHUwMDA3c/yufY8wXGZcdTAwMWWJjEFAXHUwMDE1xHhcdTAwMDIrrsJhXHUwMDFjYiiBsGl+d9+wXHUwMDEyeYh5XHUwMDA0KWes7EE4zHwhnsOJSdKsOsdcdTAwMDDQTfRdhMOWtXW5IFx1MDAwNtVJMpCtVWrJ0nN5lvU9nlx1MDAxY/gr4mv9XHUwMDE1iFx0Q1hCn8bDOvFcXKJWXHUwMDBlZ7Iz2HlITY1QtF+L+lx1MDAxME6ItN++J1x1MDAxZlx0mNhFYdzxu/Y9nFx1MDAxY3dYpN9cdTAwMWNcdTAwMTZcdTAwMDRcdTAwMTS+Y2FcdTAwMWU6/fsgS9pYxFx1MDAwNuO1R+hyxuZa0eXgYjxHXHUwMDE409CMw1x1MDAwNseCIcmoc1a3RDO8xaGXyFtcIj55WlUroXaNXFxbXHKvPt1dK9ueXHUwMDA2npruTtu41SQnde7kdHd8XGZmMDvAXHUwMDE5PVx1MDAwM1x1MDAwN1x1MDAwM7sxlF+tcp9cdTAwMTA4Zt/XUtl9Tlx1MDAxMUDOXHUwMDA1LiNcdTAwMWbaKZk0jOJTv5qYiPnirfPsd0pDIHNcdTAwMWWCdSBvn1x1MDAwZsFcdTAwMTKCdDWUP1x1MDAxOU23KuvNelFiWMrMjEZccoRcdTAwMWGZrlx1MDAxZlx1MDAxOY19K1x1MDAxMz3QXHUwMDAwXHUwMDEwXGadc/XjN+13QkOggMHLXHUwMDAzsE5k3Y7P2CS/XHUwMDFmozO61lx1MDAwZbrb0L5cdTAwMTcyUzRG7z2vNvfOXHUwMDE4WyuXsV6L51SG2FJcdTAwMTmKIcOAc1x1MDAxN/OhtsvnWGeJs8Xq+zBRqiZrXVx1MDAwMn1cdTAwMGYs5lDruaTEXHUwMDFiXHUwMDAwXHUwMDBiJEhcdTAwMTeaXGKbwtYvR5ZZcT6NJsqBdKqZr1x1MDAwNEbtWjaXQ35EXHUwMDE2bMuZPqZ9IWaehHNOtI/fte+hXHUwMDA18MNUd8cpiZ9BXHUwMDE256nuutyccfR75o30zFb3qrhyxtZcdTAwMWUkjexdiedcdTAwMTkj0n7sIFx1MDAxNYJBKF2MxzBW6211Pq4+b8hWrkOlh/c88X/DmFx1MDAwM3/lRFxi9lx1MDAxNrDCoN5sMteQ+1xuVoynl/V7NFx1MDAxZK6zXitU3GynRjhR9iGsMHKqalx1MDAxN1x1MDAxM6j3k5yL9tG79j2sXHUwMDFj9VhcdTAwMWNHYD8j7S48XHUwMDE2gTDVjal+R5clNljuXHUwMDA1yq67uXfa3lx1MDAxZUCL5VquXHUwMDAwLvbzXexcdTAwMGJNdDtcdTAwMTjlr7hI2GLtzXhhNFhlijahRrOX4VXq/7FLesBcdTAwMGLQvUAw0sZcdTAwMDZZXHUwMDFikUHd+Vx1MDAxNGNAOGeC8Fx1MDAxM1vs3jdcdTAwMDXhWOpcdTAwMTEvNvVVO3BphMLJKqfrdH5Z3uSaT83Ja2/ku5L5764g311BvO9cboJsk+EgRXpiJFx1MDAwNM5NXFxp8TherDJP89Rykp2IwPt4+Fx1MDAxY/C/iWNcIsiZ1H3XgNSNUPZNnNQ+rcBcYkKOiZAntno/YeHskoiOtT9cdTAwMDXKxrGz/Z3vw8hdREcmy5s3P91b8lx1MDAxYVx1MDAxZEFsXHUwMDE1XHUwMDEy2iskkFxu21x1MDAwNHDO91x1MDAxN8PqYjBsdlxmiqe1Va5QXHUwMDE5J0Khy/RcdTAwMTFZjntag0T3fVlM7X1ZXHUwMDA3Sndyr1x1MDAxNyrNI7pcdTAwMTlcdTAwMTCSenyTSYpP6KBkXGZT8Ttk8cE9PdLfVlF/W+3xbFhfKNmb2yjawGgvPFAz28WdqVx1MDAxY7lM5YR91ixcdTAwMTZcdTAwMDAz6KbfcCGxgu/95UyUloFGXHUwMDFmz1x1MDAwMHtcIlx1MDAxN+ZX3FDnXHUwMDE06vEgk1x1MDAwMFCqWLySvD1cdTAwMDXkSJriq9dOt4CEKCdCibnuj8BcdTAwMTgxpTDtdNC0/K9cYlx1MDAxM1VemMLsu1FCkyE5o4SR8WhkNFx1MDAxN+PZXHUwMDFmhejzrbHOZnFnKihOquDpMC6wj3VcdTAwMTHFkImr+ihMN/N0plx1MDAwZZd4Vlx1MDAwM6VcdTAwMWOpZXL1id+56MHu4Fx1MDAxN6edUKr8ekD92lx1MDAwN6tcdTAwMWFrvLblZIH5dIBmi+U42Xuv+TCKe6LwXHUwMDBmMsxcdTAwMDXg1MXUvuN3fV3J9lx1MDAwNGGO1GXcJvHETYlcdTAwMDZcdTAwMDJKMFx1MDAwNLkjWHHuOEU9yzs5Y22tXHUwMDEwXHUwMDEzvWnSXHS353eQMIIpdtFtfdRqXHUwMDE30m/911klVVx1MDAwNShcdTAwMDJcdTAwMWVz1XbV97hi3Vx1MDAxZfzirFx1MDAxM0agwJT4tVx1MDAxM1bNXHUwMDE4J7cwVe3n0kb/Nf6exLxcdTAwMDJ9iCtE2tdcdTAwMWVcdTAwMDHdJ0FiXHUwMDE3tUfH79r3uFx1MDAwMuWnOmHdXGZXpFx1MDAxMlx1MDAwYlx1MDAwMvntcFx1MDAwNbtcdTAwMTC/z+HKS7TgXHUwMDExrpyxtlZcXNm7XHUwMDEwz3GF2YbqqEC6c69wXHUwMDFlNiCZ1VxuvWRkfFx1MDAxYetl1rm2XHUwMDE4zsJN38OK1V05WUh+i7RcdTAwMTMkXHUwMDAwVu91VVx1MDAwNXVDYJlSmnrIg3Bcclx1MDAwMDqdvbaizelcdTAwMWJxXHUwMDBmLG40+zJgXHUwMDEx9iVH6vvV8yFcXDRJOH7Xvlx1MDAwN5ajXHUwMDBly5lC8luhXHSkVFxuzslccjv23lx1MDAxMk6yXHUwMDFlwclcdTAwMTkre1xiJ9nbwVx0XHUwMDAztmSOSUYoclNsu53ljfpcdTAwMWJpPOPX8FuzuIouK4P7K7r6cjhRXHUwMDFhhlx1MDAxOPetn/I0KaxcdTAwMDbZyltcdTAwMTR1Klx1MDAwZmXW4vktb/lcdTAwMTBOKLZP0OVcdTAwMDRQTlx1MDAxNWo7lu3jd+17OIHyIDneQzBx0fxdMEGhlPx2u5m3g5JsJORcdTAwMTWWnDGxXHUwMDA3fa72rsR738Q+4lxmXHRcdTAwMDecXHUwMDAz4tw5maym6Wy/8FBu8/xjXHUwMDAx5LulVDp9d2hyaqbILcBcdTAwMDToYCNcdTAwMDKuslx1MDAwNm5cYiaB2bbzlN2Gn1x1MDAxM9t4XHUwMDAyJredZLk79yOY2Pdvg1JQjKmQzjdTjt+1/8FEsCBlXHUwMDE3j1x1MDAxNflcZrLYXHLNPN6mV10jw66KXHUwMDBiT0LL3otfXHIu80WrN/JcYl3OmNyD4dz7l+K5r2KfpUZcdNazMqXzOt5KI7ptr1q52FxcPKTHw+G28prP+Vx1MDAxZV1cdTAwMGXqeL9cdTAwMTZdXHUwMDEwXHUwMDA0UlFp7qph6Vxy0WUjZ1GjZoBl5433k9Gn7KrRT/pcdTAwMTFdyInNQigx5MJF++njd+17dFx1MDAwMeyw4Oo24OKi4EpcdTAwMTejXHUwMDAwJNH1dur9XHUwMDA2LuPL85zPoMtcdTAwMTmTe1x1MDAwNF3Gp1x1MDAxMqCv7r3wXHUwMDEzxfRcdTAwMTQh3ZTNOb68XHUwMDEz8lxcepySJn5ZpF6kNDLR9sPd4ctXXHUwMDE39EqBMZPIrzsryZhcdTAwMDGfY6F2bvXAI1HwTFx1MDAwN1wiv/Ajvlx1MDAwMPtQmN4xXHUwMDE0XHUwMDFjOZfs4zftf3g5mlx0dtWC3mvssUghXHRnN0xcdTAwMDS7XHUwMDFkuFx1MDAxNCNeRcXOXHUwMDE424OE/8h1g2J2pbyM2DosnFx1MDAxMFx1MDAxZIBmzmNcdTAwMDaP3egmg5KD91x1MDAxMplcdTAwMTb74Uxi1JdL31x1MDAwM1xuJDDIkMRCizXYRZ0/hl9cdTAwMTNcdTAwMTBUVIpCXVx1MDAwNIOhefv3XHUwMDBi6ngx0Jv4duU1O0yBoS6vj7p5Ttfv82Eq9sTx4MXLXHUwMDEyt4tcdTAwMTT0u473u47X+zreXHUwMDEzLXCAZLpHrHDOK1ZGPJJcdTAwMTTP03xl8dKOhXJcdLJA/u+sXHUwMDA2OVx1MDAwZVKptJUwSFx1MDAwNdkvYVwiRElcdTAwMGVcdTAwMTZcdTAwMTRcdTAwMDKsu6ZIa23VdVxmnF3H5sNcdTAwMTJCLlx1MDAxNKHmdiOV7s3GXURCeqP5RHmBl1x1MDAxMpFLy5tcdTAwMGWWvUY575lJzLYxJVx1MDAwNFx1MDAwNIdcdTAwMDIyXHUwMDE3/XRXz7JcXC9t+iBcdTAwMTmONVx1MDAwMrlyZzZK+L/I3jpy5qtnMUtcIjFVhsKnXHJ18Uu+Oyhccnq5QuO5tkltplhcdTAwMTTyPnRnT4g2VDRSaHLtXFy0j9/1dUX7Vlx1MDAxM2d8OItZV/cy/nsmelx1MDAxND2bxXzG3lx1MDAxZXi0t5zFTOxLmzhQxFx1MDAwZrqpbFpcdTAwMTmh7jPtLCudt+e+XHUwMDExgIEhX117QIf3s2e+XHUwMDFjWITkXHUwMDAwuWpcdTAwMDN3y8omlKg0njqLWGa9XHUwMDE4Rl9cdTAwMWLP3Ze29COucPskXHUwMDBmQYWEwkXC4PGb9j2scHxcdTAwMTewXCKJgIKr/39DVCl4hyqnja1cdTAwMTVVXG63RFx1MDAxNVx1MDAwNmyrP3SaqFRi5WKPQibItFNqVGCMPC3esqBcdTAwMTCfXFy7lfX1UUWgfVT54olmjFKoXHUwMDE38SmqZDZGf/hcdTAwMWF6W9RFoPwsXHUwMDAxi1YqY1x1MDAxZqJcbsX23lxuQlxccGruQXJ2sM3Ru/Y9rFxiciR18DZcdTAwMDPN3KRcdTAwMGVcIlx1MDAwMFxiw0SK21xyNLtcdTAwMWSuxLOxeNkjZDljcK3IYrlcdTAwMTTPPVx1MDAxNmlcdTAwMWZcdTAwMGLDhFx1MDAxM8BcXGRcdTAwMGVGwtmHiJgmkstNe5lMZKal8vO1Z6B7XHUwMDFmXG77YmzR4o9cdTAwMDH2a+JgKJUtb5Ol7qz6XHUwMDFjqHfTS96IXHUwMDA1lj7ElpM7MIRcdTAwMTD11LHzxMHjd+17bGHwoMbpNsjiotxcdFx1MDAxMERcdTAwMDS9Ytqgj3DFw3KnM7b2a8udXGKzneumKFx1MDAxZJbMXHUwMDFjTziney+sSzOxxOTlqZRcdTAwMWbD90Jt2YxfO6vqXHUwMDA2XHUwMDFly4nOcTeJg3FAJWZ+dVnWLN1IsFxc05iH12/bSTKZkpGqXHUwMDFmYeXEeHEoXHSEXFy6aFx1MDAxZHf8rn1cdTAwMGYrXHUwMDAyo+ClfeM+gyqOy5yE0DsrXHUwMDFj/Y7dXHUwMDE4XG7LmcKJRd0jXFw5Y21cdTAwMGZcdTAwMDJhXHUwMDA3V+N5NMy0oWDty8BcdTAwMDDkXHUwMDE0uYiGJbpcdTAwMTncXHUwMDFh08Bg3K/xaCX91K/OXG53hy2nap1ugS2E6K1M4moj84bYwpd0vUlnXHUwMDFlRoxvOrHAc2BcdTAwMDNB2IfYQu2TYlx1MDAwNZCSu4KW4zd9h9DivNDpJtBcdTAwMDJcdTAwMTST4oy4cs/vXHUwMDA1WqqG0f/Du537M8bWXG4th1fjObRw+5hcdTAwMDGmkmLKsXNsXHUwMDE5b9ai2C8mZFx1MDAwNHTizXZ2Snv+r6M93L//YmxcdTAwMDGAMy6lq/DAXHKxZSDjo9L7sGuIRuw5V5vgV877fsRcdTAwMTZ6olx1MDAwMYlknEHiokvD8bv2PbhwwINcdTAwMDJe3KXhM/hcIkhcdTAwMTA779JcdTAwMDBcdTAwMTlUevhbhsQ+rHqikEl7XHUwMDA0Mmes7lGQ2b+cK6CMbfTghFx1MDAxNlKGpcSSONfCrrrDylPjbZGsRp772YdpvIUu7JVyy3FCTIIgZ1x1MDAwMFx1MDAxMIBcdTAwMTTbM3WP+TnahJ9cdTAwMTht4kBcdTAwMDNPjzaBXCKo2zBDSbBcdTAwMDL0o1x1MDAxYXk42lx1MDAwNEFdo4DY9dqmeK6PzkebxD6m+3zFXFyTYytfY6iJ7fhQ+1x1MDAxZCFF6Fx1MDAwMcfMRWp0Mt59SIVHPbJAmc3TJGJ0wOTJ9+SO6vmgQjlZXHUwMDE4XHUwMDAyzND+ZD2iXHUwMDBiXHUwMDEysW7jgFx0JYJ9ac0hpFx1MDAxOHKqkPA4XHUwMDA27lxiXmLz+LBqyU543J3P0/GXda1cXF76riDnu+jwu+jQ+6JDap9OxSFV8stdpJ/PXHUwMDBiuXylOs7P5+PKKFWLpLpl4vuBTVx1MDAxZrVcdTAwMWZY0XkmOEdcdTAwMDTvU331XHUwMDA1qSfFMWRA4blUnqUnJs6mac6R2aFYXShVlOf3MHJcdTAwMTf5XHUwMDAz6i9lpm7NPayrXqPm0J532M9R41x1MDAxY1xigoCpbOScWrY4aeS6gT5cdTAwMDGrt/piXHUwMDE1y8DwUPheLTXxULKu7CZcdTAwMDFUmMY36s9TZVxcXHUwMDA1wURcYqWZ5kb2X8E7JIVEWY7jVH+nkfKh+LTsXHUwMDBlO8nFaymeXG71NkVcdTAwMTiu+U4jv2nHN+3wnnbYz13RhShEXHUwMDE5OFx1MDAxN72N+SyW3oRcdTAwMGK19nb61niKhOC2tt363r4xoISDXHUwMDEzjqWe82RcdTAwMTlZTnWEUXd5kVx1MDAwMOqsduyNZ+W82Vx1MDAwMVx1MDAwNEJcIiyITTLQvVm5i3jHzJhcZupN49bE42BZL5lcdTAwMDeEmFlcdTAwMGbvNrRcYuKMMeGcerxWUadYzFx1MDAwZtKPS+O9XYZy06g83oFqwqBiXHUwMDFjSMmYYmLSXHUwMDE0XHUwMDA00idgSHFcdTAwMGZJIMB6elx1MDAwYjBccnO/KvmAyiXAWFLMIdFtRo6oKVx1MDAwMUGqrlx1MDAxMChkQYjrZ2NVW51cdTAwMDDAMXaTwffNOa7NOXhcdTAwMTBcdTAwMDKqVFx1MDAwN1OuJFx1MDAwYlx1MDAwMGRcdTAwMDQgNZ9B0Vx1MDAwNIahXHUwMDAwXGZBXHUwMDA1XHUwMDA18DxLkFwiqHc59fggPaRs55T+dTaoXHUwMDE5M0O6XHUwMDFimIRnXHUwMDE5g62kfbwqg1x1MDAwMipcdTAwMTnT7bzUXHUwMDFkSMjdXpw0ny5g0Vx1MDAxZIDFlzBcdTAwMTBqS0BcdTAwMThgXHUwMDAyI+xcIm8mXHUwMDExT8u60ZzJXHUwMDA1eu+Xy8959lgp21x1MDAxODmLsXK6pTLWMn5dXHUwMDFih/c37Vx1MDAxOT6xi3nejp3cQ3GR2k8hXHUwMDA0XHUwMDEyY1c5x/fCXHUwMDFm2rPx8NbkYX9NXHUwMDBm2zNCSGzTnDlcdTAwMTI6WVx1MDAwMDhXqUI61uMvj1x1MDAxYk47kbdFJS1GsVxm8z1v4Fx1MDAwNFx1MDAwNiVWX1x1MDAwNCFYcJNg/KRccijIhHpJSKxQm3q0V3JcdTAwMTXaXHUwMDAwXHUwMDE1XFxJXCKF3/vMfFx1MDAxM4dv4mB/Pk+IXHUwMDAzs3ePXHUwMDE0pCraIKnzyEU4Ntn2xqiRLudcdTAwMWZbaFx1MDAxZMvm8jO7yIVvmFx1MDAwM+cgXGIwQkRcdJ1Qj9VCI1CQS+UpUr1jQsmJxIybkVxuXHUwMDBlqDI0XHUwMDAw3E8uhpuYRP3mOyH7a3rKKeyLXHUwMDAydUUuY4Jh59uT42IzWt1mXHUwMDFlZb1cbpePW1x1MDAxMu5PXHUwMDEy/q/ckFx1MDAwMul9XHUwMDEwoodY6lx0MYekQlx1MDAwMkRcdEZQ/Scs13W1jZD9mPLuVk7WeHBlXHUwMDFmgLCZN/DLXHUwMDFl/5iS/PpJtnA4lex343PehjPeMWXO/lx1MDAxOLTpsN2XaUpDnVk13n/pzzdcdTAwMTPfxVx1MDAxNH9zMlx1MDAwMoUy7JRDLWqKzVx1MDAwM2FFe0T161hISlx1MDAwMcBnqUhA2VxuQJAglKlcdTAwMGYpfkCt1GZ3Qi7Q2Y1cbmi9QHnV00Hz2Vx1MDAxNFx1MDAxOeFEXz3TteiQc/Y1ZFx1MDAwNGLbNk/KXHUwMDFjKFx1MDAwMCbCRYLaVITpOvNcdTAwMDJlXCJcdTAwMWbOPo86j1x1MDAwM9RK+ZyNKKa4n1xy6mVcdTAwMWPD1dw8JvWIP2bjQt2bcbuInKxnvcXNt0ssi3pKT+zVXHUwMDBmXG71o82b872SLm69b8qt5CizwblZL7dcZvTCMb/TXHUwMDEzXHUwMDAyXHUwMDExXHUwMDBlXHUwMDAyqdM0MIaI7Fx1MDAwZqXQ9Fx1MDAwNHLEXGImSlx1MDAxZLxJnXKYpfHh7Sp9tFx1MDAxOVx1MDAwNL7Tx+xbbfNUfFx1MDAxOVbj01BvPaxcdTAwMTZcbo1OxMxGXGZcXFmXKpNoOFx1MDAwNeJtmWyuXkvrle9cdTAwMTT292cjioHoKSNQXHUwMDA3LICVjOhcdTAwMDIwgrkkXG7BoVx1MDAxMy5cIiGRklx0oSNcZpKCgzCLq/PBk5dnPVx1MDAxZP3c6Vx1MDAxNFx1MDAxOcFKuqk+rlxmjtBcdTAwMWQlPnnDp0/5OcpcdTAwMDJtw8RS++lKRV30O36LxWuxeardXHUwMDFmXGa7+d5zs1x1MDAxOVx1MDAwN3Zz5H3DWCDfn2vB8KcmWZyuXlEk1ilh0Vx1MDAxNW1I73mfMZD3Yf8uXCIsi/Gt2Yp5xU9QlZ/qQCbRZXpcXGbJdLPR721EvFx1MDAwZoB5x+kon/mZbGlcdTAwMTlVaG5w96venVx1MDAxZFx1MDAwMdpT0n4tYXauxvaVoZ9Q40uKh/92L/880DKEpeTocOaCtlxmtmySYOW2KoLlxJdzNVx1MDAxMlx1MDAxNVx1MDAwM+V4m3LPXFwo2HV3Otg5/9gtRXFNfVxcXHUwMDEzm1x1MDAxM4pYXHUwMDE2RqCXWuWztJoo5dCWXGbipWdHiigtfVrMtfV/K+JcdTAwMTE1NJPgb0U0fce2ivhcdTAwMTHZXHUwMDExR/VcdTAwMTCdqLilXGIj6mx+9F0q4t67XHUwMDAzXHUwMDEw3a8mns1BRvbOu/JWMYNmK32OiTKRXHLjcFpcdTAwMTSiXHUwMDE0t8oj2G2UKlx0/1x1MDAxN1Yrp1wiKLhm+lBJNsH7zFx1MDAxNFx1MDAwM3Gqsvqz3Fx1MDAxNIsgoorhcSYpPjqs4LCwXHUwMDFhQu1cdTAwMDXp6dEuzMJXj1xmd15anZlcdTAwMTiz+mI8O1FcXD0w2lx1MDAwYlx1MDAwZojo8ZWvUVxcbauA2DZcdTAwMDePXHUwMDEwRrGAzEXnnF79dYyhLCCxXHUwMDFhvk1qo9ak+uZ//aPEUtckPpVNfFLfmN62141bdKKCoKb5Nify/pX3z5WymUbr+l/d7Py9Q3UrjJezpjG/raZcdTAwMWQs6kzJyGVKRm3DLZRcdTAwMDJdaONcIkI9MkSAvFeLOPIwTMWT8dXiZXZhW91bKpk0bVx0fSiZvD41NmWlQIElp1xiKjeP0Z0onlIyXHUwMDA1w5JjeU+Y5kLJ1PlvrWL7S15Dwew3gYQtjEnJkHLohPOEsGWTXHUwMDE2XHUwMDAy2XgkW2hnNutiv5/l7abf94BcdTAwMGWiR+hU4+pPbPUgXHUwMDA2g1x1MDAxY1x1MDAxM91oXHUwMDA0I05cdTAwMTg4ltxcboOUaOquKFx1MDAwNGFcdTAwMWOZMmL+2lxiQkxX8qPdvVx1MDAxZVx1MDAwZnP2M+31hHbwXCJcdTAwMGZf32H3bVx1MDAxMpXNxCfCnF7p5G++0Vx1MDAxMzibXHUwMDA0e74qV0mDjdx8fN4qMWdPZyuGXHUwMDFmr7o+3cmrs5xccvOzu0WeZJpwk0pcdTAwMWbMXWKMQVwiXFzMXWJwm8yE+7nsKypF8pk5ziWjqzswczJcYiBSf1x1MDAxM65juPuJJ1xi66JBjeKC6kpcdTAwMDDhTYL/8bTXQ07BMFx1MDAxNohIuMOe42auuZx1Qr3X7pNcdTAwMDHaeDpcdTAwMWQlXHUwMDFhML1cdTAwMWLYe0d28DcpybmkmNdWabF9JFMn0EtcdTAwMDBdNKd9M9b9vFx1MDAxOIbkQ67eoo+Zl1x1MDAxOVx1MDAxYtR8r7RMoOBHwVx1MDAwMMSAXHUwMDEzXHUwMDA091x1MDAxM1R8prRQN1ODUu5cdTAwMDT1W2nvIef9mkprLq8/aLtcdTAwMGJcdTAwMDVcdTAwMTBMuoiLPaiHVWvG0FO1z1+iLyu+ToZCvldaKvF1kJa2catJLlNau/67R9RWPVx1MDAxMyxcdTAwMDDFx6Nk33r7U4eUuo2M5mI8u7XyXHUwMDFlWdhTXHJmtjE3ptOCXHUwMDExRc5jboPqYpKMv2ZXXHUwMDEznp1V282H6Xh8YWD7lpWwiFx1MDAwNLlcdTAwMDCS0Vx1MDAwZo+G7JfCukHdT/SLd95Uj1OdlsH4N+6eJMtcdTAwMWbdd29Oly2retr9RkmsLfjqQmlB3DSGQM8vpXkmmpvmS6VcIkdtQnpcdTAwMDPud90lgMAgQVx1MDAwMCroVYhm2j/4XHUwMDE52lMvUqqIXGJcdTAwMDJAd2vwhC8jKoKUS0GRMlx1MDAxZIRcdTAwMWNcdTAwMGbzmS9cdTAwMDNcdTAwMWOE+ThQRlximJNJv8N8Plx1MDAwZfO57ct3lbCgjZTpXHUwMDFmrF5cIkRcYsilXHUwMDE06m95Nux26mxcdTAwMDGLtHJ2NkPbmyhcdTAwMWW3TzGUunxUMud7XHUwMDE1xVx1MDAxN/jwtJn3ppBNUDRNOjlSp/63boxcdTAwMDd1nrOiXHUwMDFmiEmEviRcdTAwMWVgV0h2ZGtQNzyQXGacXHUwMDBi4y3zuU6x2t5cdTAwMDZa2UmSXHJqRnRcdTAwMTlcdTAwMTn/Y5iJXHUwMDFmXHUwMDBiza5cdTAwMWHIO1x1MDAxNVx1MDAxM2A6tCVcXPRcdTAwMDOex+vzUHk+6y+yj2m8TPDnXHUwMDA2ufZkalx1MDAwZlxuzZQ/Tj8mXHJASlx1MDAxOJRcdTAwMTZeclx1MDAxYsW1qac41FsksISMy3O7jP9svfVXvcVVNda+zFx0YqlcdTAwMWJXu+lw2183yUPjcbNeJWRcdTAwMGaGxLxTna59r7FcYsggU0r5N9ReqrC3XG7iKTrJXHUwMDAwOVx1MDAxYlx1MDAwNPhnq+w/Jogn7VvPUCGIclx1MDAwZUydXHUwMDA3zilwr1NcdTAwMWFuM22cfCX5WOZ1XHUwMDBlhiyQ9r1cdTAwMDLrvi/XUOCbXHUwMDA08Vx1MDAxMMBcZiNcdTAwMGW/IfefXHUwMDFlxCPIVnVcdTAwMTFgWH3fwkVlx7ZcdTAwMWN/eqDZ9Us1KtKslDdcdTAwMTBMb/yuulhcdTAwMDA9mYtxPbKGMGJRXaRUXHUwMDE3Yyl0XHUwMDFlXHUwMDFjVjLoUdsoZ/NapeLKXHUwMDAwmCrQvyN1v1OkzuVcdTAwMDRccuHy/ZaJXHUwMDFi0DJxQ2J3XHUwMDBiurtcdTAwMWS3cTl7k4Xtx0hzPVx1MDAxZVx1MDAwMpsnvZ8zWfGyiEY6rVRcdTAwMGaVQr3w9JnKdMOuIbV/TJYkMKir7lx1MDAxMGKYXHUwMDBiyC2b/pqL6Fx0XHUwMDA0iopcdTAwMTCq++h+pc1cIkI5eFLYlMV826xvm3Xq/Xdhs/5KP1x1MDAwMI1eqDpNhDJsXGYhK4LUS9OcfHXUi/qpzqY5nD9cdTAwMTVYXHUwMDFjaFx1MDAxYlx1MDAxMsGjdZ97/UmuUs9+oPCeXHUwMDBmXHUwMDFj313u+Wr261x1MDAxOYxfzpCQRG8zXHUwMDFk1KZo19Z++JJya6lu63v1Rlx1MDAxM5+wTX97LsFg0PT43Po+XHUwMDE3+jh7rVcu8Xz2rtrq9pwkXHUwMDBiXHUwMDE3TFx1MDAwNFx1MDAxN0JbXHUwMDBm6ty5ic3pKve+jFx1MDAxN4vJULU6a41e+NS4TEluWrYuaJBjnUzFMVx1MDAxNIzvb+JB8Sl/5nRcdTAwMTGtXGLqXHUwMDA0XUg5h0SYXHUwMDBi5k9cdTAwMTatY04p5cfZwrVpgHKmiFlcdTAwMDa8rlnP9ibGPrG9TUzhcF1X1er/+sue/qhPJoWF+lx1MDAwNn/83T/kx6pnrMNHMKT98aOt8YfOavUwPtqO/PmvP/9cdTAwMWajUSb6In0=summarize where select drop rename head tail sort taste unique JSON CSV Feather Parquet CEF NetFlow Tenzir File Fluent put Transformations Connector SDK Dir UDS UDP PCAP stdin stdout TCP inspect TSV SSV IPFIX PCAP Suricata Zeek TSV Zeek JSON Format SDK extend replace from read write to Operator SDK Sources Sinks from read connector format write to connector format ... Pipeline
The above diagram shows the scope that we are targeting for VAST v4.0. Some of
the pictured operators, formats, and connectors are not yet implemented.
Syntax VAST comes with its own language to define pipelines, geared towards working
with richly typed, structured event data across multiple schemas. There exist
numerous dataflow languages out there, and drew inspiration from others to
achieve:
Why yet another language?
You may sigh and ask "why are you creating yet another language?" We hear you.
Please allow us to elaborate. First, our long-term strategy is to support as
many language frontends as possible. Databricks already
built a SIEM-to-Spark
transpiler . Our committment to
Apache Arrow and efforts like substrait and
ibis further show that there is a viable path to
convergence. Unfortunately we cannot wait until these technologies are
production-grade; the needed data engineering has a long
tail .
Second, our goal is to build an open system on top of Apache Arrow, allowing
anyone to hook into a standardized data stream to deploy analytics at scale.
None of the existing dataflow languages used by security people have this
property. Neither did we encounter the capability to write operators that work
across mulitple schemas in a rich type system. We do not want users to think of
tables, but rather domain types. Finally, users should be able to express both
streaming and batch workloads in a unified language.
In summary, speed of iteration, the current data ecosystem state, the
committment to an open data plane, the focus on types as opposed tables, and the
unified execution of streaming and batch workloads drove us to devising a new
language.
More generally, we put a lot of emphasis on the following guidelines when
designing the language:
Use natural language keywords where possible Lean on operator names that are familiar to Unix and Powershell users Avoid gratuitous syntax elements like brackets, braces, quotes, or
punctionations. Exploit symmetries for an intuitive learning experience, e.g., from
and
to
have their duals read
and write
. How does the syntax of a concrete VAST pipeline look? Let's take the following
example:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1aWXPaSFx1MDAxMH73r6DYV6PMfeQtxmeyIVx1MDAwNOIju5XakkGAjJBcdTAwMTRJYJxU/vu25IBcdTAwMGUggMtcdTAwMTBtNqqygZ6Z7tFM9zdft/T1oFKpRlx1MDAwZr5VfVmpWtOO6djdwLyvXHUwMDFlxvKJXHUwMDE1hLbnQlx1MDAxM0l+h9446CQ9XHUwMDA3UeSHL1+8MH3fSEdcdTAwMTlcdTAwMWRv9DjScqyR5UYh9P1cdTAwMWJ+Vypfk/9cdTAwMTlbju1aSd9EmlriQlx1MDAxN6Vccs9NrHLJMedasnlcdTAwMDc7PFx1MDAwNkuR1YXWnumEVtpcdTAwMTKLqueNRv2k1T5cdTAwMGVrcqzt6E23eVLzUqs923Ha0YPzeEtmZzBcdTAwMGUyc1xuo8BcdTAwMWJa13Y3XHUwMDFhQDsuyOfjQlx1MDAwZm4+XHUwMDFkXHUwMDE1eOP+wLXCMDfG882OXHUwMDFkPcQyhOZS0+0nOlLJNO6BRSqIh1x1MDAxMMxQwXrdc7wgtv5cdTAwMDdKrtT+rdlcdTAwMTn2YVx1MDAxMm437dOxuqxrpn3uZ/fEsEEo0ZIwTCnCTM67XGYsuz+IoFx1MDAwZkOGVpJcdTAwMTCmmERS0XTxQytZd0wxNGhN0jnG9v2LbrL7n7Ir43a/r4w7dpx0ynHDScZj0jFjv2s+bi9cdTAwMTZcblx1MDAxM1wikOSIpOtcbl40LKpzvM5wiUeEkVx1MDAxOURHttu13X5xiOV2V7Q4Zlx1MDAxONW90ciOYFx1MDAxYU3PdqNij0TvqyDw7lx1MDAwN5bZXaJ5ZZtcdTAwMWarS0MkvtJvldQrklx1MDAxZvPvn1x1MDAwZdf3Zmu7Y1LYepZcdTAwMWZf2PS16lZ6UnyRgjostp5eTt+COrrV6mRcdTAwMTbnIPv57XA7qFKarIIqiVx1MDAxOFx1MDAxNlxc0TQm1kHV9XTqNaNO73J4eY/fXk9GZ41J+aFKKmRQTJDWQiPGSYpcdTAwMGW7XHUwMDA1LqpccqGkRohcIs2Z5GJcdTAwMTlwLSCV5EQrRIXaXHUwMDA3Ulx1MDAwMS5mz7LfSDW7ILSlRFx1MDAxNCCHcEJhXHUwMDBi6WG+XHUwMDE1c8VgXHUwMDA1mVRakOfGvYLnXGKSXHUwMDFmb6DshddcdTAwMDPfSk/caC12gkuM46J0hkuYaa1EXGZNXHUwMDFiXHUwMDAz07GiwVx1MDAxZFx1MDAxZTu3QetcdTAwMWan4Vx1MDAwNKMrXHUwMDFldkpcdTAwMGZM4FdcdTAwMDZcdTAwMTHgYkRcdTAwMTBOMz42XHUwMDAzJmLA0YIxXHUwMDExXHUwMDFj+mZZzXPCVIZcdTAwMTOluIRcckRcYlWYU8XjXGJYgCkthKaCiXRSv1x01U+AqVxcd/LsXHUwMDA0XGblXHUwMDA2XHUwMDAwjOjspTagSPlcdFx1MDAwMmGSXGa2Ulx1MDAwYkVcdTAwMTjnaK1cdTAwMDKtXGZFXHUwMDA08KfYXHUwMDExXHUwMDE0fGTV1YpeitROsSyyptEyLCNqZTpcYmlcdTAwMDdXcLN683yw/dpXjf7Yx3bwXl5aNeBcXKxZfiyj0uCMXHUwMDAzaMO9XHUwMDAyZvFcdTAwMDKW8fjU4lxcYklcdTAwMTDWiFx1MDAxNmb2PFjG0n2YQ1x1MDAxOVmkWIxcdTAwMDHyqj1RrKdjV89zo7b9JXEjkZOemiPbidc1XcbEN2FtXHUwMDAwc7L+XHUwMDEwi185dj9202pcdTAwMDema1x1MDAwNTlcdTAwMGaO7I7pzDtEnp+2dsCQXHSnd3CxgGFeYPdt13Q+LDdcdTAwMWGf+eez9YeQ55nNXGathFx1MDAxMcS39CTewJEqSmexpjhnXHUwMDA0ZdjS2lC7+2xyPFD1d1x1MDAxZpsoZJfs1L26/7P0ocbIvkovS6lcdTAwMDExqFx1MDAxNMAkOVx1MDAwMlx1MDAwMoBwJq2ZxVx1MDAxN2C7QkqxksfXL85ccrA2aIxzXFxCplx1MDAwMlx1MDAwNy7PVU9cYjMwVoDXQlx0xOT6k7OGXGaNIImgwPtcdTAwMTigZ67YUXRcbsrXXHUwMDFl7NpAXHUwMDFhXHUwMDFjTFAkuMaC/UjdWm1cdTAwMThcdTAwMTfU5dO1vDqyPmHK856aNDBcdTAwMDJskZSDXHUwMDFhaCRWbf2cdkQ1WFE6gz9cdTAwMTLngkpukTV9PLLMoXNqN1x1MDAwN6xcdTAwMTFcdTAwMWXjN0eN11x1MDAwZu3yw1x1MDAxZniHhsxcdTAwMWJcYiiCv7RcdTAwMWO8R6KhltRyXHUwMDE2iVx1MDAwNkwgvmSmXHUwMDA0V0ogfFx1MDAxMtFcYsejkVx1MDAxOcSj9kw2llx1MDAxON4p4WC8KJ2Te1x1MDAwNSlcdTAwMTDgwcZcdTAwMDF3LP2uenOLood6f3LVulx1MDAxOV6dte3SXHUwMDA3XHUwMDFjXHUwMDAwalx1MDAxZVxci+xcdTAwMDNcdTAwMWJcdTAwMWPD0SA0oVJrXpjZLrlIsVx1MDAxNLZARWhS9Sp9XHUwMDA0/uJU5L9WptjWYolcYlx1MDAwMoToSrhcdTAwMTJxfs7EXHUwMDE2XHRS/fy69fn1nVu/XHUwMDE4TnXrpuW23o8/lFx1MDAxZbAkQlx1MDAwNiWKXHUwMDAyT6VcdTAwMTLw6efUXCKW4NVcIkWgXGaSN1x1MDAwMV5Tbnx6XHUwMDEyQ0hgZc/kIG9zp7xg9TsgWFx1MDAwM1xuMK3U5oHmXHUwMDBlp3+dNYKJc9GsOeJ0cka+jFx1MDAxZkpcdTAwMWZonK5lXHUwMDA2SsW4XHUwMDE4l9yyhYJ9XHUwMDEzg3QjZtScSVxu02e/XHUwMDFmX/x/eMFcdTAwMTNcdTAwMWWc/kK8gNOidFx1MDAwZVexj1xupDLMYVx1MDAxZFxcnVxc2Tdvblx1MDAxYrp9XHUwMDEyqrpcdTAwMTW97WM19MtcdTAwMGZXXG48QHKskFSSa5qqKVx1MDAxZC8gWlKJdNnzlqdVXHUwMDBlvCDae9EgZ/M5eMHKQFx1MDAxMytfuMJEKE34Ni82vO+5zY9XrWFXnk+mLf+WRHdut/SBXHUwMDA2XGbcQIIs8u7dMFx1MDAwMEyM1NRcdTAwMGZcdTAwMWb84fg1MKGf7S3QXFzj4ttVXHUwMDEwWJlZ7DqueoE3qlx1MDAxOEYl+Fx0vHu57V3GXHUwMDE546vrclx1MDAxOME2Iy03r8yN3NNcdTAwMDB3Wr1cdTAwMGbv6mc3407rbXCLjktcdTAwMWZnXG5pWFQqNHhcdTAwMWFcdTAwMTZEXHUwMDE232yEXHUwMDAzjVx1MDAxMMUgXHUwMDBmRprhXHUwMDFkXHUwMDE15lx1MDAxMDUw2Sz+kFBcblx1MDAwYvRsye6a8KOaaJV1xt0+eVx1MDAwZuzIimMg8vZcdTAwMWR9S01vXHUwMDE1fFx1MDAwN9/ZaNX0/XZcdTAwMDTrXGJtj6FYndjW/dFcdTAwMTKH6CVX9eB76MYxYsWb8vXbwbd/XHUwMDAxKpuaqiJ9where summarize head sort from .. read write .. to
Here is how you write this pipeline in the VAST language:
from vast | where #type == "zeek.weird" && note == "SSL::Invalid_Server_Cert" | summarize count ( num ) by id . resp_h | sort | head 20 | write json to stdout
We do not support running closed pipelines yet, but aim to ship this ability
soon. The corresponding roadmap
item tracks the progress
publicly.
Until then, it is only possible to run an open pipelines. When using the vast
binary, source and sink operators are implicit. You can run an open
pipeline with the export
command as follows:
vast export json 'where ... | ... | head 20'
Expressions VAST expressions are search expressions to describe the desired
working set, usually at the beginning of an interactive data exploration. An
expression consists of predicates chained together by connectives , such as a
conjunction (logical AND), a disjunction (logical OR), and a negation (logical
NOT). The expressiveness is equivalent to boolean
algebra and its laws.
Expression occur predominatly as argument to the
where operator to filter the dataflow.
Other expression elements, such as extractors , also
occur in other operators.
Historically, the VAST language only supported providing expressions. But the
strong demand for reshaping and analytic workloads made the language evolve to
include dataflow semantics.
VAST has two low-level abstractions to integrate with the rest of the world:
Connector : performs low-level I/O to exchange data
with a resource. A connector provides a loader to acquire raw bytes, and/or
a saver to send raw bytes to an external resource.Format : translates bytes into structured events and vice
versa. A format provides a parser that generates events or a printer that
translates events into raw bytes.The following diagram illustrates the dataflow between connectors, formats, and
the remaining operators:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nN1cXFlXm1pcdTAwMTR+91e4vK/VnnnoWzQmtc7VXHUwMDBl5q67ujBcdTAwMTCDIYBANLGr//1cdTAwMWWSNFx1MDAxMFx1MDAwMoSMxeZB42E4m3P2t7894c+d3d29YOBcdTAwMWF7XHUwMDFmdveMflOzTN3TXvbehePPhuebjq1cdTAwMGWh4d++0/OawzPbQeD6XHUwMDFm3r/XXFz3ILrqoOl0R1dcdTAwMWGW0TXswFfn/qv+3t39OfxcdTAwMTmbyzOagWY/WMbwguGhaDpcdTAwMDZhcvTCsYdTSyookVx1MDAxOOLJXHSmX1XTXHUwMDA1hq6OtjTLN6Ij4dBe5ZKJXHUwMDE3i95K0KXV2kt70DhcdTAwMWOIaNaWaVk3wcBcdTAwMWE9l9Zs97yYTH7gOVx1MDAxZOObqVx1MDAwN211XHUwMDFjJsYn1+ma31ZcdTAwMDJMXHUwMDBle07voW1cdTAwMWK+P3WR42pNM1x1MDAxOIRjXHUwMDAwTEZHq/BhN1x1MDAxYemHKy5ZNDC8hFxukJj+yLFcdTAwMWMvnP5cdTAwMWYw/ETz32vNzoNcdTAwMTLC1ifnXHUwMDA0nmb7ruapbYnOe1x1MDAxOT9cdTAwMThcItG924b50Fx1MDAwZcLBmJC+MVxcX1x1MDAwNFx1MDAxOGZcYlJcdTAwMWU9VDiNe6JcdTAwMGa3+r/4XHUwMDAy2Pp4XHUwMDAx7J5lRZKFXHUwMDA3jpPqXHUwMDExV5EpNVx0jH4kbmxTobxFvdNqn/TRM9uvnPhfK1WxNznv17v0244ubmL09OVR2lx1MDAwM9fVarBivVLDOp6e5ff8muc5L0XvWzt6fdQuunX6496DXVjVLvs9Xuy+42/RXHUwMDAy9lxcXVx1MDAxYuk0ZJwzLlxiXHUwMDA3XHUwMDA0RVx1MDAxYmKZdie5tpbT7EQw2IlcdDxcdTAwMDO/qXWNIVx1MDAwZlOQhTxCIVx1MDAwMlx1MDAwMkBaXHUwMDE4eembtF7k+Y6yPetcdTAwMDRcdTAwMWVcdTAwMDZAXHUwMDFl0GnoMYY2XHUwMDA2PUjgLPQwm0VcdTAwMWVROlx1MDAwMFx1MDAxMVtcdTAwMWby1qls0aY6dnBjvobrisTUaE3rmtZgal+GWqhcdTAwMTbo0jU8LXA8P76MvqGmXHUwMDFk3odOXVCxzFx1MDAwN3tcYmP1IIY3pcWBqbhockLX1PU4wTSVXHUwMDE0mrqnd1KEXHUwMDE4XHUwMDFjz3wwbc26nVx1MDAxMTJcdTAwMTdZucRGOcuCl0RcdTAwMTBhTHhxYnOCi0bjgVx1MDAwNyfXRr/XPFx1MDAwNDqjrc9lh1x1MDAxN2JoXHUwMDExXrvnSNDN81x1MDAxYVxmwUVcdGNyw7w22rmP9UNcdTAwMGZffrw9r+udhvjs4atPxt06XGKoc1xyn6otcdxcdTAwMDKg4ZP9/utcdTAwMTV4Xum+83hcdTAwMThX9/dfT9iDuDx+rNe6Z3d33776i/NapPSb4jUgMoFcdTAwMDc54EyZ18LAS3/o0lx1MDAwM0/CJPDoxoAnxSzuZklccqpt4ZhJhtdcdTAwMDa7dWraaqRWc7yuXHUwMDE2rJfRXHUwMDAyx82kszl0kKSzsXjLc1x1MDAxOaMoXHUwMDBiUlxiSE6U/ixcdTAwMTClabxKwcWTdVx1MDAwNPvn/iO4O6vdXddKjykkXHUwMDE2IDPawnqTbIHMKFRUxjnla0PVcuRweP7Zoq9Kg6h/XHUwMDE1/HC+4eBra1BGclx1MDAxMJmaXGZcdTAwMDWlyv1cdTAwMDesuCanP3XZNVx1MDAxOWOc1ORsdlhVkyEmhehBRTtQ/eB0bYpcXFx1MDAxZXo4cmxbmVfH21x1MDAxZUPMsbFJhogkXFxcdTAwMGVVXHUwMDE0Z6FcbkFlo1x1MDAwMIpFvvNAxb6/fjnHelx1MDAwM56yh4rVanx77t3fllx1MDAxZVSUJFxcLqXKXHUwMDA3XHUwMDAwKNdKcKCCXHKRibBVs1xuVM5cdTAwMDIsplOTsIcwSVxieUP4XHUwMDAyRfF1OFxijPR8XHUwMDAyXHUwMDE06diyjFawXHUwMDFjsqZcdTAwMWVcIlx0o5EguVx1MDAxMFx1MDAxYVx1MDAwNWMpXHUwMDE4gkJm5uNcdTAwMTjHytvgUFx1MDAxNlx1MDAwNlF+2LlcdTAwMTCIkvmwXHKCiIgkiKg8kJNcdTAwMGZcdTAwMDdcdTAwMWLMzfGUMFx1MDAwNlx1MDAxZFx1MDAwMMIww4BcdTAwMGKptkdcYmrsx+pcdTAwMTVjaEmkXCJcdTAwMWKI5PpcdTAwMTJcblx1MDAxYoGWXHUwMDFmaF5waNq6aT+og5F797uEM2JcdTAwMGXrpHYrXHUwMDA3xPdcdTAwMWLm5WWrcmFcIteMu3xcbozNnlx1MDAxZt+78IE1N1x1MDAxNHE8MMkw7Fx1MDAxObY+f8bq96v9w9Pg7OgpsMzv/fOTVzxoLDujpfnBkdPtmoFativHtIPk8lxm16FcdTAwMTLCsG1oM5BWXHUwMDEyx48ppTFcdTAwMTNhkVx1MDAxYt502lWOvu3GhVR/TL7/9y717JjahZ90hYtuslx1MDAxM/+9uImRQCaHJ94vhYhQptS4sI3JT0G9XHUwMDE5XHUwMDFiw1FOUnJcdTAwMTNWJa3UxlVgXHUwMDAy0N9hQW6+PIObwOo1Xlx1MDAxYa9W/al54l71rjdqQcDV8ZeO14bcaX/WNVx1MDAxZTxdOi26RVx1MDAwYpJiJVx1MDAxMnZk6vpNWpDY+YWMRW7eXHUwMDA3xTKlSXvBiUCcMF7csc+382V17FmyOM/ISkWMf5qGTnQtxVawlJxcdTAwMGaZMVx1MDAxNlwidIQ4xZsuX8zL+Dif787uXHUwMDA3bb1pVVtu3zK8ZuOTV7R6samqyFxu5f7faJljOKNsxoYyVFxiZWJOKKdcdTAwMDBxXHUwMDAwilN0+iaVXHUwMDFkcipgTkKOXHUwMDFmbK6AwdI8/9lcdTAwMDBcdTAwMWEzXHSYVKpQbpJeKoK+0jzfSE9PZYXQq5bk57BBMrRcdTAwMWVLuFx1MDAwMpfRzHo8xEB5gVx1MDAwMovi/S75XHUwMDFlR1mBNcNlXHUwMDFj/FEug4JcYlx1MDAxNerQNVx1MDAxNlx1MDAwNZcjs2N7cNrxXHUwMDBlb742zp/6/N6+XHUwMDE0daPz50rx2+ox2zyZZVx1MDAxN1x1MDAwZSUhiFx1MDAxMoaKYy59k8qOuVx1MDAxOTLj4M+TXHUwMDE5UnE+5YzRN1SNL05mnjlNTVtgszl8MMNmY1x1MDAxMVehs8xUXHUwMDBlplx1MDAxMuOwmllcdTAwMThZ+Tm/slwiXHUwMDBiJ9vL8lwis1x1MDAwMnXMldlcZlx1MDAxMI4pIWtMXHUwMDA0L8dmL3q12z/v+pZSzsf6p2aja13LLYRmpWFcdTAwMWScnbaQmFx1MDAxMcxVJFVcdTAwMThcdTAwMWPpq1l6cDA609qcXHUwMDFiRa1a6GeFypDhylx1MDAwYlx1MDAwMODfyDtnjqZvmXbmXHUwMDE47iTtjCVcXIF1WGahXyhvjotcdTAwMDVyXHUwMDEz+Wni0uIqSTp5IdQ2SFx1MDAwN3OpjJqIdXz+oVx1MDAwZbDWY6f947z3ndvX/PHZ1viZ/7iFXHUwMDEwqjSkk50r52HRXHRgXFy87Th9MUuPXHJGkpyTXHUwMDFm7KzKObHiQ1x1MDAwZedIxDlcdTAwMDHir+Scaq/rbplz5tjtJOeMJczFVHbFWu1cXFx1MDAxNqooZFBcdTAwMTBcYotcdTAwMTeg8qtcdTAwMDNlLVhcdTAwMGKUbIphOUm7VVx1MDAwYtY4xY2bJVx1MDAxZChcdTAwMThhJN5OUEpIXHUwMDE1LFivtVx1MDAwMaVQwTr/fbT4jFx1MDAwN6jAnG+t6SVSssT5O/HfS1iLbPdUXHUwMDE5XHUwMDBiLpWvtECOPz//+mbMxUb7W3Ch/pawXHUwMDA3mFx1MDAwYkRKzsBcdTAwMDXNxVq7TdZrLvbBXHUwMDAxKTDpW2txwSu1uGR57IRkvihcYiVhjHC4QMctPX26O2pcdTAwMWKN5pVcdTAwMDNrbtDBldPnp/K77DH/avQuXGLaYKd6ZFx1MDAwNvNeXHUwMDA1oYBQoGR/Q63qhV9cdTAwMDU5eX+Z6qxnvVx1MDAwNLKhRvVQjOUwXHUwMDEzY5fZKrqgimNZcYf86aZf/36lO+BMq/+g9Vx1MDAwMNWPTFJ6zFxinmxP2darXHUwMDFlxYp7hGOJXHRHmy6qb6vlanvR9PHz8InTXHUwMDAwuuU3ScaSLIdRmVl0XHUwMDE3itcooFx1MDAwYkD09uaocn3S/Ki9XHUwMDFld6o32vmx8bFS/iwtw7O0XHUwMDE2hyiXXHRZ1vj/lWAhlmNYXGLI8PY4bpFcdTAwMDToalx1MDAxY1x1MDAxN7ZqKX/2/bDIXHUwMDFkOrYlILxcdTAwMTmZlkJcdTAwMTZFmdkoKJGgXHUwMDE0YVncY8Ra51x1MDAxMVJj/77z7eXH+UdWvas9lr+HTMoteowwjfFmwYQ5XHUwMDA1YYp3e/Hl9tCk4jS3XHUwMDE3aEGogSVcdTAwMDBSXFycXHUwMDExhnbGXGa+p7nujTpcdTAwMTJcbjVC1N6zabxcdTAwMWOm1Lxaw094/Vx1MDAxMIGhqlx1MDAxYuGy//y18+t/5e9cdTAwMTO5In0=Operators Format Connector Bytes Parser Printer Loader Dumper I/O Events Parsing/Printing Computation
A connector is typically I/O-bound whereas a format is CPU-bound.
Logical and Phyiscal Operators VAST has two types of operators:
Logical Operators : user-facing operators that express the intent in the
domain.Physical Operators : data-facing implementation detail.Let's consider an example of a logical pipeline with the source consisting of
from
and read
, and the sink write
and to
:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bbVPaSlx1MDAxNP7ur3C4X0u67y/9RlGsXCK1oFx1MDAwZW3vdJyQXHUwMDA0iIYkJEGgXHUwMDFk//vdRCUhXHUwMDEyXHUwMDAxq1xcWsVcdTAwMTkl5+zu2d2c59lzTsyvnd3dUjT1rdKH3ZI1MXTHNlx1MDAwM31cXHpcdTAwMTfLr60gtD1XqVByXHUwMDFkeqPASFr2o8hcdTAwMGY/vH+v+76W9tJcZm9w29NyrIHlRqFq+6+63t39lfzO2HJs10raJtLUXHUwMDEyhJLkxZ89NzFcdTAwMGKFXHUwMDEwXHUwMDE4XHUwMDEwztNcdTAwMTZ2uKdsRZap1F3dXHStVFx1MDAxM4tK0fl46I/BuN6MXHUwMDA0kuPW4MvZMGO3azvOaTR1blx1MDAxN6VcdTAwMWL9UZDRhlHgXVlt24z6sfWcfNYv9NTy016BN+r1XStcZuf6eL5u2NE0llx1MDAwMTCT6m4vXHUwMDE5I5VM4t1GXHUwMDAwapxcYsRcdTAwMDBEXHUwMDEyXHUwMDExPNMm/TGDXHUwMDFhXHUwMDAxXHUwMDFjXHUwMDAziClcIjI3rarneEE8rX9A8kkn1tGNq56anWumbVxmyySmnrZcdTAwMTnfLVx1MDAxNilcdTAwMWJcdTAwMWNcdTAwMTNcIlx1MDAxOMGIXHUwMDEzXHUwMDA26KxJ37J7/Ui1IVCjXHUwMDA0XCJcdTAwMDJcdKOEcSTSmVjJXHKBhKohXHUwMDE44qkmtu9cdTAwMWaaqWMkUnbWq1xcXHUwMDFlRs2vglY861tzcG0xv3Sn/5HdWde821l35DjpymLFfupzc8qRb+q3XHUwMDBlXHUwMDAymYBcYlEpKGTpjitPvMr3cTzjaoFPhZFcdTAwMWVEXHUwMDFmbde03V6+i+WaXHUwMDA1XHUwMDFhR1x1MDAwZqOqN1x1MDAxONiRmsZcdTAwMTfPdqN8i2TcSlx1MDAxMHjjvqWbXHUwMDBiRi7U+fFw87uZfttN/Sq5mH3/8W5h6zLXIKBcdTAwMDRxTLlyPVx1MDAwMJBVhjQ7XHUwMDA0WTqGcodcdTAwMDLHSfrnXWbpcIV+mGjXXHUwMDFl7tHZ5UbDnC5cdTAwMWKvaH93sn9v3i2mwMiaRIsokGNUxIBcdTAwMDQyXGZcdTAwMTiWq1x1MDAxM6C0WrWGcVx1MDAwMMhBu1x1MDAwNk+YNaxcdTAwMDe1g+0nQFxiNOWCTN1cbiAky1x1MDAxMP4tXHUwMDAzcqypg4BJiVx1MDAwMEOZ7XpOXG7EXFxbQHoonek9y1x1MDAwMcVzgMKlLDdcdJtcdTAwMWbPm1V83v1kXFyK425/2iunt+JcdTAwMGaiwa7nRqf2z+RIZnPSmj6wnfhcdTAwMTalR1bi5Wqfu8FdcDCTVlx1MDAxY7tcdTAwMTf7e8lQ87WCOShEtlxuKmZcclwiz0+1hrKjq+ghOHzAhl5g92xXd85cdTAwMTbajEOOT/f3XHUwMDExaohm3FwitJKAJF7Q0zBLYV46i1ooilx1MDAxZITg1D+WgdbpXnXb+3ZU632rNI+rw1x1MDAwYkOv17dcdTAwMWW0ilc1hFx1MDAwNKaQYMZcdTAwMThJ93f7QKtcYkZcblx1MDAwNEWGSd9A+1x1MDAxMLRBXHUwMDFjcmxcdTAwMTi08zZfXHUwMDEytEzivHRcdTAwMDZaXHUwMDAyXHUwMDA0JCpCWFx1MDAxObP96pl5ss9GP+t2xfWOx1x1MDAxN3uNXHUwMDAx23rMXCJKnuWgpV1sXHUwMDFh5GmYXHUwMDE1RFOh1iqolSRcdTAwMDFcdTAwMDFK5/FcdTAwMDbah6BVWHMtI/KCTSN3geFcdTAwMTeFL+eFcbJAglxutFx1MDAwNnyJXHUwMDEzTMJcdTAwMGJRrnXNK+6ffSNgPOxtPXyxYFx1MDAxYUUyhjHAgmQ2ZM0jt6OSJ/o0+FKWva2PXHUwMDA1ylxcXHUwMDFkuViR7tuZ+2ig7Fx1MDAwNVx1MDAwMz3aNHbzVp9cdTAwMDO4xTU+UIhcXEggwFxmyFxmxy+D7kGrbVx1MDAwZaOpV231eo2jfexZUFxmt1x1MDAxZbpcdTAwMWNgTTmYijOAQFxuXHUwMDE5OeQypFx0hlxilJRcIkby83qmXCJcdTAwMWZcdTAwMTVcdTAwMWFVpilSXHUwMDFjQcjiXHUwMDEyXHUwMDFmoVx1MDAxNEKBXHUwMDAwgFx1MDAxNIJcdTAwMDUlPqDwISRdhuk/XHUwMDA1sn95iVx1MDAwZs01R5spXHRcdTAwMTa4WfzBSkWIXHUwMDEw6myQgsSO9DujlXPuylx1MDAxOV823MtU8Fx1MDAwNMtL7/mNXHUwMDEyyiRbPS7RXHUwMDAx+e6aXHUwMDEyj85+9lx1MDAxYl/EpFFh3zvbT25IaJxcdTAwMDJKuVouZDRd7+ZKXHUwMDAxhGlitbRcdTAwMDJSxoH6kalmMYk1Lyc+7lx1MDAxZlxy6jWzsX/hXHUwMDFm1j9cdTAwMWbCvVdcdTAwMTOYjFx1MDAwMzuyNlx1MDAxZJfkjL5oXHLvsXJcdTAwMDBcdTAwMDKKUzhOd3tcdTAwMTlwj+vD3lx1MDAxMe+MWrjidIzJdXew1zG3XHUwMDFluEKhXHUwMDA2XHRcdTAwMDVcdTAwMDWChEou0P9cdTAwMDFcXFx1MDAxOHPHSrhVgSRcdTAwMTAqoVhWeX/duI28TYM2a/FFXHUwMDExi1xu81xirGJcdFx1MDAxNbag1U/aylf3sHPUuv7aa1x1MDAwZppGeXrQhHaw/YDlKubBXHUwMDAy/O5Ju6FcdTAwMDKeJFRKXGaWXHUwMDE18F43YF9LXHUwMDAxj0OQl85cdTAwMGVcXExcdTAwMTHiVK5x4LbadrVvuGVst783XHUwMDBlh9PmRdtytlx1MDAxZb9cXKBnwe9mKniQXG7CXHUwMDExXFya7b9u/L6CXG5cdTAwMWXBMi++h67KzVx0RWSNXHUwMDAy3rRerV2Uj6q1bv/AXHUwMDEwjdHJ/pEtt1x1MDAxZbmEKWhcblwihYKmijbyT7uVXHUwMDE2XHUwMDExiFx1MDAwNGIkfmpFclx1MDAxM3umUDkzzbRo91x1MDAxMLeYQlxuXHUwMDA1fCvS/ZVFurnmy+txYs32XHUwMDE5J0supSbnPng9g+stZ92SXFwxY5Hi7Fx1MDAxZVx1MDAwMS4w5GD1ZMFcdTAwMWZ1XHUwMDA08JuDXHUwMDEzu743LFx1MDAwZtpH5y1ubD1lsfiZXHUwMDAzkEQgztRqQf5pP0NcdTAwMWFQe6GoTW1cdTAwMDanNDezjXJcdTAwMTZcdTAwMDKAYq5m8vbPw2+k9ZeTVmGCVPwqXHUwMDA0glxup2CdVyH8vZP6ZUCBdXlK5V6nuc+6x1fPTFmmXHUwMDFl9q1cdTAwMDLOSkGzXHUwMDE2Z1H++LtcdTAwMTDy5d+FXHUwMDEwXHUwMDFhXFyUXHUwMDFmKZ/K5GP3z0NcdTAwMTlFTKBM3vpns9aTXHUwMDEyIE3TNp39zJnMpz5cdTAwMGIzn9snjTc7d9td0n3/NFLbpnS3XHUwMDAwLV3b1vjjXHUwMDAyR+kmn/hmJYCOoWPF9+DXzc7Nf1x1MDAwNFx1MDAwMNTHIn0=from read connector format write to connector format ...
A given from
-read
and write
-to
combination often directly maps to its
physical counterpart, the load
-parse
and print
-dump
operators that do
the actual work with the help of a connector and format:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXFlz2spcdTAwMTJ+z69w+b5cdTAwMWV0Zl/Om9dgXHUwMDFi432Jb91yyUiAzFwiLIRccjmV/357iI2EQCBsIErKSlVsj0aakaa7v6+X0b9fNjY2w0HH3fxnY9PtV+ym51x1MDAwNPbL5l+m/dlccrqe34ZTZPh31+9cdTAwMDWVYc96XHUwMDE4drr//P233elY0VVWxW/9vNJtui23XHUwMDFkdqHvf+HvjY1/h//Hxmp6bXfYd9hcdTAwMWGNhLEgyeay31x1MDAxZVx1MDAwZSuYXHUwMDEwXGZcdM1GXHUwMDFkvO4uXGZcdTAwMTW6XHUwMDBlnK3aza5cdTAwMWKdMU2b4thB3UOqX1rfXHUwMDA2h1x1MDAwNfpEn492atGwVa/ZvFxiXHUwMDA3zZ/PZFfqvSA2qW5cdTAwMTj4XHL3xnPCuplYon10XdeHp4+uXG78Xq3edrvdsWv8jl3xwoFpQ2jUardrw3tELX3zspWIXHUwMDFhhpfAUydG3/GbfmBG/1x1MDAwZlx1MDAxYVx1MDAxZdH4XHUwMDBmdqVRg0m0nahPxXWYY0d9Xt6eKTaXuuvV6iE0MmSh+Fx1MDAxMXtwd/iiXHQlXHUwMDE4MUrF6IRcdTAwMTmvc+BcZpf7f/E30XZe30S712xGUzQn9mJcIlx1MDAxMl3T6zj2z+XEQiGuMVNS0WhcbiA2jeTtmn6lMUVcdTAwMDK6oVx1MDAxZITbXtvx2rXkJW7bSTnTtLvhjt9qeSFM49T32mGyx/C+W0Hgv9Rd25ly59RzXHUwMDFkc7tIJ8xcdTAwMTH9tlx1MDAxMUnB8I/R7//7a2pvMtadzO0/1p3N7Vx1MDAxZVx1MDAxM1xyc1Bt6fihxII3KEhcdTAwMGIjzoikXFxcblx1MDAwNCeJW8B8oUnH5vwl/vPHX4uaXHUwMDE4jJPNbyaGYlx1MDAwNVx1MDAxNoguYGJcdTAwMGUqN63TMtnuXlbOg2KlJbS+qOTexMBjWkIjxFx1MDAwNJdKMC6TXHUwMDA2XHUwMDA3Tlx1MDAwYk6YXCJcXGtEXHUwMDEyXHUwMDEzW4710cqiSGtOXHUwMDE5wVx1MDAxNERDTbFF2MJaM6kpxlx1MDAxMiZcdTAwMWKzOa/GXGKmjuFcdTAwMTby01x1MDAxOP1KY7SgcZHjK0/HLI2yXHUwMDE0QpwgoVx1MDAxNIEuc1xyTapcdTAwMTiZXHUwMDAzJ+42327NmlshKY587u0+ZMFCt1x1MDAxZk6zYJqlciRM4JVJXHUwMDBlU89swYKbcO/qXHUwMDEynfBvjq427218fqlE7i1cdTAwMTgsqSU5xVpcZi1AZDxeXHJcdTAwMThcdTAwMDBcdTAwMTbSmHNccmjDPmTAwsBudzt2XHUwMDAwXHUwMDA2YtKIsSlcZorE2NpPK4UlXHUwMDE1iCjEommuxkxJKbRcdTAwMDKKzHFkXHUwMDEwXHUwMDE3MFNVv1x1MDAxZF5434eCJMZa9+2W1zSvdqRcdTAwMTA/pdPgrG/Hlta0bjW9mpHTzVxuzNZccsZEOPTAXVx1MDAxOHVcYv1OdLZcdTAwMDLj2Fx1MDAwMNrBwYS18lx1MDAwM6/mte3m5dQxXHLSXHUwMDE3394+tlxijy1n11x1MDAxZPJcdTAwMDDzQO9kXHUwMDBiNN0hoYQhzbKrWs05eD4/xU541DooXFz3oW/3dif3qlx1MDAwNrJrYVx1MDAwNVx1MDAxMMiAXHUwMDExMKmi9zFcIlx1MDAwYlx1MDAwMMNEXHUwMDExSlx1MDAxOVx1MDAxN1wiObMlsVx1MDAwNW0pXGbqzpnknGBcdTAwMTm99DhbXHUwMDE4m1x1MDAwN55gXHUwMDBiXHUwMDEyXHUwMDExrYnk0Vx1MDAxM+RSXHL/cLaA05ZyeFJZxk3AXHUwMDEy+Cc4mUqxZZOPWaPThUdPlcvJh2HAtz80u8KEgNNfwz8wTbaO+Fx1MDAwNyaaakJU5FHMM4rtYte/01x1MDAxN4OTr8GAnVVcdTAwMWI27989598oKqCWRCrwXHUwMDE3sdRowoFaXHUwMDE3/9DZ+IdcdTAwMDTh05JFfm0uXHLfu/hcdTAwMDe8mq67blx1MDAwMpJcdTAwMTh0XHUwMDE5XGYkTdswibnGXHR1I8AqOVx1MDAwMVx1MDAwYlx1MDAxM4nBPHU7rt491c9KW9cvro/UluLl1nOYe3VTeoVcZj+VdGRj91IwJSWJPcSqlUvGXHUwMDA1b6XK5fRanXXr1viYy1CtwK2EP1x1MDAwNWuKfnHNk61v6lx1MDAwNVx1MDAwNlx1MDAxZWlcdTAwMWS9lblQdlP2SJm5fuHqllx1MDAxN4+b+szbVrnXLZrMN8hZ+YZcdTAwMDcgIHyp+YZcdLRSTDHjaCxcdTAwMGatRsTn39FvaZY3tpxcdTAwMGaVYqP+zIpX3Yvr691cdTAwMTat+fbNzuao3483XHUwMDEytURtfVx1MDAxN0LwmPlP8jEtmFx1MDAwMMZIslx1MDAwYvH0p869XHUwMDEwx0LAr0IsLf5cdTAwMTExnsm7xJRodcw0vUWnXHUwMDE1QlJKvD5/86PIXHUwMDEwQ7cxZIhW5VxyXHUwMDE5TlxyXHUwMDAzXG7ei1xyLc9x4uZ4XHUwMDFjXHUwMDFl5lx1MDAxOdIkYiTnklxyM9T7MYNcdTAwMTGWbFx1MDAxZGlcdTAwMWNcdTAwMTKIUY1J9Mrmadz2tlx1MDAxZpKg16Infql0+dxcdTAwMGa2grP8e0BYLVx1MDAwMFx1MDAxYrxKnVxuWylsXHUwMDEwqpmgRC2Phr1cdTAwMGY16Jkr3Ie+rolqofKyvyX2gu5pXHUwMDBlUYNKmS7DVJg8rciOXHUwMDFh05869zKseVxmJDLgRlx1MDAwNjmejVx1MDAxYtP89Vx03MBUsmFcdTAwMGVqff76+oCj5NvOyoBjjilNXHUwMDAyR3Iuy1x1MDAwMFx1MDAwZdtcdTAwMDRRp6dcdTAwMTJ4qqdBXHUwMDA0XCJaXG6cPWyG626h290pojK9UI3G4V6nXbrKvcJcdTAwMTGpLYGkkoRSLnQylSA+hCAzNU9cdTAwMTNLacSpyWFcdTAwMDBG84gujlx1MDAxNHFcdTAwMDJSXHUwMDAwTYBXSrJcYqREWPEmXHUwMDEx5LXlx5q181x1MDAwZk8jpC5o4uov8Z9cdTAwMGIrrVKpwTdcbouj2Vwi8YFK8bRb3Nu6KN+W3ebTUf3+3pcy9zrLJupcdTAwMTFnqOlHXHUwMDFkK0UsyqmmSFxuwUg805Cuplx1MDAxOKifpkIv5Gd96uma9DR1RVx1MDAxM1dn0tNcdTAwMTlp+lRslVxcS8Kkzlx1MDAxZSMvMXnT/HZ7/niGzvdcdTAwMWavz/qHJapzr6fCXHUwMDE09VGETIWSYLGY0GvAnFhIUaJcdFNcZnCNJSaWozQ9RopRipTIOf39w1x1MDAxNXfFJcafifiNXHUwMDBmJ+JJqtHTkmMuaHZucnmxu31dXHUwMDFkNL5cdTAwMWQ6XHUwMDE012/P6NfvznHubZ7EyIL/sMRUacV+WVx1MDAxOWC2NDxcYlxuXHUwMDA2y8uWXHUwMDE3ospPprBcdTAwMTN48TezpjT8+KDLyFx1MDAxNaZ6XHUwMDAyXHUwMDFhp8d8sURcdTAwMTRzlL1cdTAwMTLw/ORo57B1clI+PfmuKren50+1dv53Jlx0pC14UHC7sOKcqUTobJV+gUaWXHUwMDA2goO0woyBaYueYIZfIIDpMKzQXCJlt59+wbr897RcdTAwMTVNXFydXHQh0/13kVx1MDAxZeVcdTAwMDbwlopcbpxdbUs7qrW7W364LFx1MDAxZpxje7d+7dhcdTAwMDU792ork5maVcbZlLZcYsxJUVx1MDAwMF5TXHUwMDE1XHUwMDEzXHUwMDE5zXRFXHUwMDA1XHUwMDAwJ1xco0Xo/qearst9T1vPxNVcdTAwMWZcIrJcdTAwMTiRVDXVXGZxYoh7Zi1lO8dcdTAwMDUl9trt+vHuwLNr373b7fyHxsFpt1x1MDAxOFBVwqVEXHUwMDE4J6kspZbWnIM9XHUwMDAzt4RcbpGY2PJcdTAwMTSYTSttmFBZpTRcdTAwMDFhyLuLnoHKTmaotlx1MDAwN6HbTaGyTbdcdTAwMWGugMgmhsxGZNlMXZtZwCDS98CCJcaYKZY9XHUwMDE1VbmSQa9093CAnvCW2i+j7yeH+dc3sUj9wjrK3oRcdTAwMTSEXHUwMDEy9MtcdTAwMGJcdTAwMThcbneoP2jbdvl6/zpQReeeXFw/fsthXHUwMDAxXHUwMDAzZ+khX6VcdTAwMTCmXFxlx4zpXHUwMDBmnXtcdTAwMTnWOax640Dp2Vx1MDAxYT5cdTAwMTDxS6reTMBhZdVcdTAwMGJzXGbpRNlbcjKrr3tj6Tt/tDRxWsyzp1n2r1x1MDAxZa85dzxiu5dX5Vx1MDAxN0nOjp8ucq9zXHUwMDEzn2f5xXVv5ntcdTAwMTZIXCKkl6dv78ONk53iwXOv5m03OvZzf6t3eFVsXHUwMDFj5Vx1MDAxMDdcdTAwMThK5T7mXHUwMDEzXHUwMDBmZjdcdTAwMDfPXHUwMDFlN5/+1LlcdTAwMTdiydZb+CanXHUwMDA07KZcdTAwMTS+XHUwMDExJDWA92/kVmTHjt1eq7My6JhjS5PQkZzLMpAjNTcvUer+XHUwMDA0gk3NLmU8O1MrXrLe89dcdTAwMTI7fmiFj63H4nZvIPq5VzhOkflehSbgN2suZGRgRpvotcJEmypcdCVjpbnLzM6rTIBcdTAwMDK2QSohc75p4Vx1MDAwZlx1MDAwZrthZZnCK2mgnVFcIsRY2VxmnEVYgV5cdTAwMTFKMSFcdTAwMTTPu11cdTAwMDFZIHpcdTAwMWNet1x1MDAwMklcdTAwMDTx02PfyaFcbk5TjTgnkmKk5t6Pa1x1MDAwYubGNEWgwFx1MDAxYeb3obvJWXfDibvNz93PnFxcXHUwMDAxw0mBNGOSXGKlsSZzp7eS3L3SKNk6YiFcXMGqXG6us28hKbFaoz6o1XdvX8TgtMhY66WBc29cdTAwMTSF+Vx1MDAxNFx1MDAwNPhcZpRpRDlN2sTMIc+P+rV8SpnSlPS9llxcgIuzRKKdn5jn3vNwTtPJyYqCnskxl1x1MDAxMfVMIyEyNXlv9ppcdTAwMTK0yFx1MDAwZUn/pd9cYlxu92eXXHUwMDBmd49PRfv+6rRYXvZcdTAwMTezXHUwMDFj3yDUcmvvibYklVxi9IlcdDJJQYxcdTAwMTVcdTAwMDZEUZRScJFisZ5lOrVTXHUwMDE4XGJcdTAwMDdcdTAwMDNvNlx1MDAxY1x1MDAwMVx1MDAxN6SCMVx1MDAxY/v64mhHsFx1MDAwNGvIkVrf97M+Ocmc3pOrtiAwprtcdTAwMGLpMSZcdIjNTDFxZl3lpzdcdTAwMGY73mVlX1xcVr9cdTAwMWXTXTBOJ93866rGyOLmQ6TmQzNgnJKVNlxuzKPBTKa1XHUwMDAwXHUwMDBl86FsYPrnLyzOwFx1MDAxN6BG8Vx1MDAwNFx1MDAwM1x1MDAxN8UtTKvHXHUwMDFmSlx1MDAwMmNcdTAwMTSWRlx1MDAxYttCJr/SXHRcdTAwMDZHXHUwMDEzlnfg/MPVd+ZymmNyIZek0ipcdTAwMTV8XHRcdTAwMTAqXHLkLnuyXHUwMDExcclPt+VgZ69xVr0/XHUwMDExu92jh5P8KzSLJVxcX1V4NdlGZFx0xlx1MDAxNVx1MDAwMaqK4Z/ScspGN4EtiYHIYlx1MDAxMzVWisag/nXjXHUwMDFiKJJgeuWf1f1U2OGRhrepS2mOiUVcXFx1MDAxNv6i9DpXIWAwrWj2XHUwMDFjT9Cs7G1cdTAwMWaWt1768mjHXHUwMDBiXHUwMDA2L/cl+lx1MDAxYnBlSaSlXHUwMDE414RyLpWUSfxcdTAwMDWuPNwgT0wwJb5tN3eqjClcdTAwMWaWXHUwMDEz8U9d/nN1ObWujtL0Olx1MDAxZlwizaa4XHUwMDA1tsXdXFw9e4/H+OHwrnRx5O/dnJGj0/x/44Fos/lHgavCJKh1cltcXM7q6jAwMOBga0yARdP6rKvLXHUwMDEyYUqvYeXpX4pGIFt6kVxyXCJVQWX/qXS2VSlcdTAwMDZcdTAwMDPSRN+b5f273OtcdTAwMWFcdTAwMTPKkohcdTAwMTKspTFkXHUwMDEzIaacRXTB4GKiyEL7Q35cdTAwMTdl++1cdTAwMDK6X16xc9PudC5CeHebb1X+m8+e+7I9hThVh4cpMVx1MDAxOSqr0Vxud7g54MeXXHUwMDFm/1x1MDAwN4PgzjgifQ==load parse dump Parser Loader print Bytes Printer Dumper Events Bytes Events
However, this rigid mapping is not required. The interfaces for sources and
sinks only demand that the operator generates or consumes structured events.
Some sources do the loading and parsing in a single step, e.g., when going
through a third-party library that exposes the structured data directly. We'd
still like to write from X
at the logical level in this case, but the physical
then won't go through load
and parse
.
This decoupling is what makes the VAST language declarative: the user only needs
to specify the intent of how the data flows, but it's up to the implementation
to select the optimal building blocks for the most efficient realization. For
example, filter predicates may be "pushed down" to reduce the amount of data
that flows through a pipeline. Such optimizations are common practice in
declarative query languages.
Language Frontends If you do not like the syntax of the VAST language and prefer to bring your own
language to the data, then you can write a frontend that transpiles
user input into the VAST language.
For example, we provide a Sigma frontend that transpiles a
YAML detection rule into VAST expression . In fact, the VAST
language itself is a language frontend.
In future, we aim for providing frontends for SQL and other detection languages.
Please chat with us if you have ideas about concrete languages VAST
should support.