Using the Land Auto-Parcelization API

Updated 24 September 2021


Public API Key

ADSS=23232AD=ASDIO293-MLK23290-23AD.235DS554S5_4409IODSO

AGCs

These endpoints for uploading AGC GeoJSON data to the server for auto-parcelization will soon be deprecated. We have retained them for now to allow ease of testing with simple GeoJSON payloads.

Sending AGC data to the Database (using the Fetch API) - Mtd. 1Updated

The snippet below shows how to persist AGC GeoJSON data to the database using a Fetch API POST request.

// The API url
const URL = "https://geoclusters.herokuapp.com/api/v2/geo-clusters/geo-cluster/";

// SEE SAMPLE AGC DATA BELOW
const agcJSONData = {"type":"Feature","properties":{"agc_id":"NIRSALAGCAD0001","extended_name":"Nasarawa Maize Growers AGC","location":"Gora, Nasarawa State","agc_president":"farmer_id","governance_structure":{"president":"farmer_id","vice_president":"farmer_id","secretary":"farmer_id"},"agc_details":{"primary_crop":"maize","has_irrigation":true,"has_power":false,"is_flood_prone":false,"has_processing":true,"has_road_access":true},"farmers":[{"farmer_id":"NIRSALAGCAD0001-001","first_name":"Mohammed","last_name":"Sadiq","allocation":2.3},{"farmer_id":"NIRSALAGCAD0001-002","first_name":"Emmanuel","last_name":"James","allocation":2.7}]},"geometry":{"type":"Polygon","coordinates":[[[7.47565314173,10.6277613686],[7.47883088886,10.629113406],[7.48022530227,10.6286972177],[7.48148929327,10.62825697355],[7.48148929327,10.62684100435],[7.48127471655,10.62500916477],[7.48115234076,10.62320202895],[7.48116441071,10.62199067517],[7.479043453931,10.6220631719],[7.47703313827,10.62150000302],[7.4767635762,10.624850332335],[7.47565314173,10.6277613686]]]}}

// Set up the API call function
async function sendAgcData() {
   try {
      await fetch(URL, {
         method: "POST",
         headers: {
            'Accept': 'application/json, text/plain, */*',
            'Content-Type': 'application/json'
         },
         // credentials: [ YOUR_API_KEY ], // *** IMPLEMENTATION DISABLED FOR HANDSHAKE   
         body: JSON.stringify(agcJSONData)
      });
   }
   catch(error) {
      console.log(error.message);
   };
};

// Execute the API call
sendAgcData()
   .then(function(apiResponse) {
         // Do whatever with the API response
         return apiResponse.json();
      }
   ).then(function(data) {
      console.log(data)
   });

Sending AGC data to the Database (using an XML HTTP Request) - Mtd. 2Updated

The snippet below shows an alternate method to persist AGC GeoJSON data to the database using an XMLHttpRequest().

function sendAgcData() {

   // SEE SAMPLE AGC DATA BELOW
   const agcJSONData = { ... };

   const http = new XMLHttpRequest()

   http.open('POST', 'https://geoclusters.herokuapp.com/api/v2/geo-clusters/geo-cluster/')
   http.setRequestHeader('Content-type', 'application/json')
   http.send(agcJSONData) // Make sure to stringify

   http.onload = function() {
      // Do whatever with the API response
      console.log(http.responseText)
   };
};

Sample AGC GeoJSON Payload Structure

Each AGC payload is a GeoJSON FeatureCollection, that contains just ONE Feature.

The database insertion will fail if the agc_id, extended_name, location, and/or farmers array fields are missing from the properties object of the GeoJSON payload.

The following fields must be unique _id, agc_id, extended_name, coordinates, farmers.farmer._id

Insertion will fail if the sum of the total number of hectares allocated to the farmers exceeds the delineated AGC land area.

{
	{
		"type": "FeatureCollection",
		"properties": {
			"agc_id": "AGCABJ002B",
			"extended_name": "Kubwa Sugarcane AGC",
			"location": "Kubwa, FCT Abuja",
			"farmers": [
				{
					"farmer_id": "AGCABJ002B-01",
					 "farmer_bvn": 22218XXXXXX,
					"first_name": "Taofeek",
					"last_name": "Usman",
					"farmer_photo": "", // Base64 buffer
					"farmer_photo_url": "https://...",
					"allocation": 3.9,
				},
				{
					"farmer_id": "AGCABJ002B-02",
					 "farmer_bvn": 22218XXXXXX,
					"first_name": "Samuel",
					"last_name": "Zogonda",
					"farmer_photo": "", // Base64 buffer
					"farmer_photo_url": "https://...",
					"allocation": 3
				},
				{
					"farmer_id": "AGCABJ002B-03",
					 "farmer_bvn": 22218XXXXXX,
					"first_name": "Ilyasu",
					"last_name": "Umar",
					"farmer_photo": "", // Base64 buffer
					"farmer_photo_url": "https://...",
					"allocation": 2.3
				}
			]
		},
		"features": [
			{
				"type": "Feature",
				"properties": {
					"shape": "Rectangle",
					"name": "AGC Feature",
					"category": "default"
				},
				"geometry": {
					"type": "Polygon",
					"coordinates": [
						[
							[-74.009534, 40.715192],
							[-74.007089, 40.715192],
							[-74.007089, 40.716753],
							[-74.009534, 40.716753],
							[-74.009534, 40.715192]
						]
					]
				},
				"id": "1dc64de0-3678-4c07-acfd-9388beeb0080"
			}
		]
	}

}

Parcelized AGCs


Retreive A Single Parcelized AGC

The code snippet below shows how to retreive data for a single parcelized AGC from the database using asynchronous GET request. It is implemented in ES6/ES2017 JavaScript.

By passing the agcID as an argument, it returns a single parcelized AGC from the database in a promise.

// Set up the API call function
async function getParcelizedAgc(agcID) {
	try {
		const apiResponse = await fetch(`https://geoclusters.herokuapp.com/api/v1/parcelized-agcs/parcelized-agc/?${agcID}`);
		const data = await apiResponse.json();
		return data;
	} catch (error) {
		console.error(error.message);
	};
};

// Execute the API call
getParcelizedAgc('AGCABI000010')
	.then(function(data) {
		console.log(JSON.stringify(data));
		}
	);

Retreive All the Parcelzied AGCs


// Set up the API call function
async function getAllParcelizedAgcs() {
	try {
		const apiResponse = await fetch(`https://geoclusters.herokuapp.com/api/v1/parcelized-agcs/`);
		const data = await apiResponse.json();
		return data;
	} catch (error) {
		console.error(error.message);
	};
};

// Execute the API call
getAllParcelizedAgcs()
	.then(function(data) {
		console.log(JSON.stringify(data));
		}
	);

Render the Parcelized Plots Preview Map

Each parcelized AGC GeoJSON payload retreived from the /parcelized-agcsendpoint contains a unique string hash, which is required to construct URL, that in turn displays a preview map showing the parcelized plots to the user.

Get that unique string by reading the properties.preview_map_url_hash field of the GeoJSON payload. Here's a sample JSON snippet from an API call to the parcelized AGCs endpoint-

{
	"status": "success",
	"data": {
		"parcelizedAgcData": {
			"properties": {
				"agc_id": "AGCABI000010",
				"agc_extended_name": "Agc Nosa 7",
				"agc_location": "ABA,Aba South,Abia",
				"num_farmers": 10,
				"agc_area": 50.6404559187225,
				"total_allocation": 45,
				"unused_land_area": 4.417271065696374,
				"preview_map_url_hash": "XAWXEACGEBVLGDRACUGOZYBSZTCKHMMDHOYVAPRWKXRNJVWXHXZH..."
			},
			"type": "FeatureCollection",
			"_id": "5fce88c3071dac0c0c924f7d",
			"features": [ ... ]
		}
	}
}

For security, the url hash string might change periodically. Therefore, before presenting the preview map link to the user, ALWAYS query the API to obtain the most recent hash string. Do not save the string in a variable and expect it to work at a later date.

Construct the preview map url using the hash string like so-

// `https://geoclusters.herokuapp.com/parcelized-agc/?${preview_map_url_hash}`

https://geoclusters.herokuapp.com/parcelized-agc/?XAWXEACGEBVLGDRACUGOZYBSZTCKHMMDHOYVAPRWKXRNJVWXHXZHUMXTYTILBBMY

Note that for all the previously parcelized test AGCs, the preview map URLs that included the AGC IDs have now all been deprecated, and will therefore no longer work.


Geo-files


Geo-file Upload Workflow

Follow these 3 steps to upload & auto sub-divide a geo-file belonging to an AGC

  1. _1 POST the AGC farmer details JSON to the database.
  2. _2 Separately upload a geo-file; its filename must exactly match the agc_id in the JSON payload from Step 1.
  3. _3 Wait for a parcelization response.

Upload AGC Farmer Details JSON

Send a POST request containing the AGC details JSON (see example below) to this endpoint-

https://geoclusters.herokuapp.com/api/v2/geo-clusters/geo-cluster/details/

AGC Farmer Details JSON Example

{
   "properties": {
      "agc_id": "AGC_0001A",
      "extended_name": "GEOFILE_TEST_CLUSTER_DETAILS",
      "farmers": [
         {
            "photo_base64": [
               "LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQWdHQmdjR0JRZ0hCd2NKQ1FnS0RCUU5EQXNMREJrU0V3OFVIUm9mSGgwYUhCd2dKQzRuSUNJc0l4d2NLRGNwTERBeE5EUTBIeWM1UFRneVBDNHpOREwvMndCREFRa0pDUXdMREJnTkRSZ3lJUndoTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qTC93QUFSQ0FHUUFTd0RBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdEdjZYRk5IU2xKcEZpMGhGQU5Cb0FLYWV0TG5tbWswQUkxTXB4Tk56bWtBZHFLQ2ZhbTVQcFFBN0hIV205NkNUVGVhQmdUU0ZxUmljMDJnQXp6U0Z1S000cENhQkNaNTVveUtibWdtZ0IyYVF0VFNhYU9hQUpOMUdlT3RNcEtBSGdpbDNWSFMwQVM3cU4rS2p6VHNpZ0IyN05HNDlxWm1uQTBBT0RtbER0VE0wb05JQ1RlYVVNYWozQ2xEVUFTZ3NUVGhtbzk5UFZxQkR3RFMwM2RTNUZJQjZqM3A0SHZVU3RUcys5RnhDaWx4U0NnbXFOR0xpbEk0RkoycEFhQk Rpb0ZKeFJta3pURUl3SHBUY2NVcDYwMDBBQnhUVFJtbU1hQUZQU2t6aWtMR21rNW9BR2FtazBocE0wQUJwclVFMDBubWdCYVFtbWswbWFRQ2xxYnVOTlp1YU04VUFQM1VoYW84K3RJV3lhQUpkMUx2cUV0Um5Bb0FuelFXcUV0MG9EQ2dDWU5TaHVhaXpTaHFBSmQxTHVOUTdxVUhta3dKUTFPQnFNR2x6U3VCS0R6VHczRlFnMDdORnhFd2FscUlVOVRtZ0NSVHpUOCs5UTdxY0hHT2FBTEFPS0tBYU85VVhZRG5GQXpUdU1VMGRhQkFSU1U0ODBuU21JYWFZUWFseFRHNlVBUkU4VTN0VW1LYjBvQVlldElhZDFvSUZBRVJwT3RPcHBBb0FhUlREVDhVMGpOQUREU0VjVS9HS2FSUUJGam1sNkNuWXBDS1FERGlrelRpdE5Jb0FTa29veFFBdmFnVTAwVUFQelJtbVVmalFBL2NhVU56VWRMaWtCTUdwd2FvUlQxK3RGZ0pnYWRtb2g3VThVZ0g1T2FlRFRBYVh0UUJKa0Nrem1tSG1nVUNORmVsSjNvVTVGTG1xTEZ6VGFjS0NLQkNLY1VuZWxBNW9ZVXhCbW1NYWZpbXNNZzBBUjAwMDdyeFNGYUFHNXBEelM0OWFNRTBBUm4ycE50U1l4UmpOQUVKRk5JSXFZclJzb0Fnd2NVbTJwOWhwQ3RBRmNyU0ZhbklwaFUwZ0lTS1lSVTdMVVpHS0FJZWhwRFVqQ295S0FHMFpvUFNrcEFCb3pSMnB0QUR3ZUtBZWFZZU85QU5MUUNYTk9CcUlHbEJwZ1RxMVNCcXJodmVwQTFGd0p3YWRtb1FUMk5MdU5LNEVtZWFXb3dhZU0wQWFDZDZlT2FZUnRrUG9lYWtYbXFLRnhpanJTa1VtMmdRb0hOSTJLZGltNHlhQkNVbE9hbTB4RVRMODNIV25iUlRpT2MwbU9hQUdrQ200RlBJb3htZ0NNclR0dExqbW5xdWFCa1JXa0lDZ2xpQW81Skp3QlZUVk5XdDlNWERmUE9SOHNZL3I2VnhtcGE3YzNKUG15OGRvMU9GRlVvTml1ZGRjNnpZMitSNWhsWWRvK2Yxckl1UEZZVTdZcmRGOTNPYTQyVFVDY2pKejdWVmt1WGJxYXZsU0N6WjFjdmltN0pPSmtYNktLZy93Q0Vpdmp6OXAvUVZ5eGxZSGcwdm5FWTUrdFRkSXRRT3VqOFIzcWtFeUk0OUdXcjBQaVNGemllRXI3b2Mxd3EzTEx5RHhWaU85QUEzREI5cVRzeWVVOUZodXJlNkdZWmxjK25RMHJaQnJpSWJoU1FVa0liMUJ3YTE3YldabzFDUzRtVWVwdzM1MUxqMkVibjFwTTFIQmN3WFEvZFNBdC9kUEJxVXJ6VWdOSnBwcHhGTklvR0ptZ0drcERVZ1BEVUI2Wm1nVXdKZ2FlRFVJSUhXcEFhQUpReEZHODVxTUdselFCT3JVOFNESFNvRk5TVUNOcWRlRkk5YVZCeFQ1QnhTTDJxeG9jQnhTR24wMXFCWEVwQU9jMFU4RGlnTGtaV21ZeFVyVkd3b0VKaWpGS09sS0JRQWhXa0MxSUJtakhPYUFJOXVEV1hyV3NMcHNSaWl3MTB3NmYzQjZtck9yYW1tbVc1SXcxdzQrUlBUM05lZTM5MDdGbmRpMHI4dXhQV3JoSHF3M0lyeStKWjJabWQyT1N4N21zV2FaMkpOU3l2dnpVQkJweW1Xb2tlUzFLRUpOU2hRZW9wNng5S3liTFNJQ2hQdFROb0hGWGZMcERBcDlhbTQ3RkwrZE5MRUhtclpoNjRGUVNLZlRtaTQ3Q0xLMmVUVnVHOEt0akpOVU1VNVJqQnAzc1M0bTlCZDhobE9HSFFqcUszN0RWeTRFZHdTMyszM0gxcmpVM0FCbE5Yb0xoazY5YXE5eUhIVTd2SVpReWtNcDZFZDZZd3JHMDNVQkdBckhNVEhrK2hyYllWTFJKRWFhYWNSU1VoamFLRFNjMERIakZLRGpwVE0wb05BaVVHbkNvdzFPenhRQktwcDRiaW9BYWZ1b0E2a2pJcHVPYWZnaWpGYUVqYVJ1UlQ2UWlrQkdLZmppa3h6U25wUUF5bWtaRlNFWkZOQXlLQUdxS0R3Y0NuSEMvV2xRWk9UUUFxcmdWQmVYVVZoYXZjeS9kUWNEKzhmU3JZRmNoNHN2QkplSlpvM3l4RGMvMVAvd0JiK2RWRlhZR0RxR29UWGN6enpOODdkQjZEc0JYUDNNaEw0eldqZEE1TEhvS3lKRGxzOTZxVE5Jb1pSMzYwZGFrU0lzUnhtc1d6UlJHTG1yS1J0MXFlQ3kzT08xYWNWaU05dnJVM0tzWjBjV2VvcHoyL0dlM3BXeDlqUURtbDhtQlJncU0wZ01FUkx6VmFhQmMvV3VrbDhrTHdvR1BRVm1YSVJ6eGpOQVhNQ1dMWWFRQWNjMWRtUVo1cXE2Z05tZ1RaTWhHejZWS0NOb05WbzM0UDZWSUR4VkV0Rit6bUt0Z241VFhVYVhkZWJGNURITEtNcjdpdUlqa0liclcxcDl5MGJ4eXI5NUQrZFd0VVpTUjFaRk1JcVFNc2lMSW5Lc01pbU1LZ0VNTkZCcHBPS0FBbkhXamRUQ2VhTTBnSlFlYWNHcUVOaW5nMEFTQnVLWGRVVzZselFCMjFJUnhUaU1VbWVLMUpHbmlrTk9QTkczTkFETzlMU2tZRk42VUFLZWFabjBvTEU5S1ZWelFBMVJrMUlCelFGQXB3RkFEaGdBczNRREpyemFlVTNkM0xPZXNqay9obXUrMU9ieU5LdTVQU0pzZld2T1E1U0xkN1ZVZHJqUlJ2V3k1UWRBYXpXak9hdlRuOTRUNjFBMk0xRW1iUklvNFIzcTNIR0VBd0tpR01WWmlJQ2pKcURRdHdjWU5Xa2tQUVZSRXFxT3RXWVhYR1MyS0doRms1OWVhVGFEejNwcG5qSHFmcFVNbDJBRGhDZnhvRU5rWTg0NXJPdU9ISnhqMnF5YmhtSjJxQlZPZDNMY2lrQlZuSVlaRlVaVHVIdUt1dXI0SjI0SHJWQ1hoNkVGaHF1YW5Wc2pjVFZROWVLc1FuUEZWWVRKY0RnclYyMWxLamsxUkRZeU1WTkJJRDFvVHNSSTdQUlp4TFp0RVR6R2NqNkdyN0N1YjBPNDhyVUVRbjVaQVVOZE13L09tOUNDQmhUQ0ttWWNWRVZxUUk2VE5PSXBwcERBSG1uWnBsR2FCRDgwdWZlbzgwWm9BOUNJelRTdkZQelRkMWJpSXlDRFRoNzBkVFNOMXBBSTNXbUZjaW5rQTB4dWxGaERRT2NWTGoycGlEMXFUb0tRQ1V0SjFwd29BeVBFckZQRDl6L3RGVkgvZlFyaEpSaUhQYk5keDRxLzVBb0hyTXRjUGRrcGJqM2JIMHFsOEpVZHpLbWZtcTdQZzFMS01rMVhaTTFrelpEL01OV1VCQ2c1cUtPUGdaeFZ1SlFTQlVsQ3hSNVBQV3JzVUROVFYycU1uQXFlT2RXSHkwQ0F3WTdpbzJ0aGlrdVpaaytaRHg2VWtWMlpGK2JnanRUS0h4Mmh4a1l4Vlc3aHdkeDYwWE9xR0ZNRnVQYXNpYldISjR5VjdVV0VhUzJublJaemdlbFl0NUI1VWhHUmlsL3RpNHdWVnNBK2xRQ1NTNGM1SlkwQ3VSRVk1cDhUaFhCcVY0U2lnc01acURHRFFCZWNia3pUSStPbEZuSUNmTGZuMHF5OFlESEZNaGs4RW16WTY4TXBCSDFydUZZVFJKS3ZSMUREOGE0S01uT0QwcnN0SGZ6TktoNSs3bGYxcW5xak5sbGhVYkExT3dxRnMxQUVUWnFNMUt3cU0wQU5wS2RUYUxDQ2tvSnBLUTdub2g1cE1jVS9IV2tyY2tiUmpOT0l6VWJBcnlLQUJoVGNVb2JKb2FnQk1jMHBQRklEazhVcEhGSUFwNjB3QTFJdEFHTDRwVS93QmpBLzhBVFphNGErSkVJSFltdlJOZmhNMmczSUF5VTJ1UHdJSi9Tdk9kU1lLaUQySnByWXFHNWt5RVo1cUpSelVjMHd6aW9HdWluUUNzMmJYTHJTQ1ByVEJmRkdHM3JXVE5jTVNmbXhURmxLOG1wc05NNkpya1R4ZTlNaHVpajlhdy90UEdOeEZQV1k4WU5BN282NzdWYnl3a2VZQStQdW4xck11cnVOQmdFQnZZMVJ0NG51ZUE3QWowcXRkMmtzYmxXem4xb1F5SzZ1MmJPVHpWRlpaR08wRW5OU1BidVcrYzVxZEZXRk9tRDYwMEprbHBhSTdabmNnRHNEaXVqdDdPQTIvN3RBTWVsY3ViMUl6eXBOWDdUeE1JQVY4Z091UFhGSnBzUTdVc3BLRjlLenkzV25YbXN4WHMvbWVXVlBvRFVBbWpsKzZhZGhOa3NVaFZzanFLMlVmelVEWTdjMWdBYlh6bml0UzBtSVRGQkJiS2tWMW5oeHQybU9Pb0V2WDhCWExFNVRPSzZ2d3d1TktmSGVZL3lGVjBJWnBzS2haY1ZaZkF4a2daNlpPS2lZWU9EMXFMQVZtRlJFVlpZVkM0b0FpSXBwcDVGTnhTRU5JNHB1YWVhYnhTR2VqMHBGTUE5NmVUWFFTTTZHa1BQR0tVMG9HTVVBUk11QjB4VEMzR0ttYzFXSnlhQUhwNjA0MDFhZFNBVWRLbFFjVkRqbXAxNlVBSzBheXh2RS9LdXBVL2pYajJzbG81cElqMWl5djVFMTdJdjNoWGtPc29aTld2Ui8wMmIrWnFvOVJ4ZXB6Ymd0MXBJN2J6V3dUaXJWeEJzR2UxVjF1NG9Ea2t0ajByTm15TmkyMEt6RVc2U1BlVDNKcXBlYUpac2YzVytJK3h5S3B5K0lMeGsyd2tSSVBiSk5RTGZYYk1Ia2taL2JwU1Z3YlJYdXRPbHRteHVVcWVoelNSUkVZeWF2elhTWGNTZ0l5bFRubW9BZHA0cE5qU05EU1Q1ZDJ1ZWhxM3F3QWNOajhhb1dXZnRDODFvM3hFc1BYa1ZOemEyaGl1QXhBQW91WUMwZjdwQ1c3NG9PUTN2VjJ5Y01TTzlDSWtZQ1djcnlZSzV6U1NhYmNxNUN3UGl1dCt5NzIzWXdmV215V0VyS1NHSUh0VnBrSEV5VzgwYmZPaEZKSGJUTWNqajZWMUUrbG5ydno3TUtwTmJHTTBYRmE1UVJKVkh6ODFkdG4yTlRYVGFPYUVIUEZJR2pWV1VHSTRQT0tudFBFZDVaMlAyYUR5NDFCTGI5dVc1cWtuS0Q2Vm0zY2dpa1plL2FtaWJGaTcxZVI1aThzenU1UFV0MXJzL0N1clBxZG5MSElTelFFWUo5RFhsa3JGbnoxcnUvaDh4RTE1R2Y0b3czNUgvd0N2Vjd4SWtkbXdxSmhWaGhVTENzaEVCcGxTbGNHbUVjVWhrWnBwcDVwTVVBZWg1cGMweHNxYU4yYTNFU3FtYUNOcG9WdG9xTjMzVUNJMjVhbWxSVHoxcGpHZ0JWRkxRdEJOQUNyMXFZVkdncDRQTklDWkNOd3J5elY0UkhyTjR2OEEwMWIrZGRoNG44UXk2TEhERmJCRFBLTjJYR1FxL3dDTmNIZTM4bHhJMTFLUTBrbkxZR01tcmlySzQwWUd1M1Fqa1dDTThqbHNWaGdtUnUrYTByaTBlU1Y1WGJKWTV4VUsyMjA4TCtOWnV4cUZyQUdmNXVuVTFxR0JHVUJSVVZ2R2k5VFZ2ekJqQzlhaHNkaXBPb1Zkb0dLckFIT2F0VEhJeTFLd0hrakZRelJLd3kyY3JLR0k2Vk5jVE9UMTRxT05EbmluVFJTTXVRakg2Q2cxc1ZtSWFwN09WVWxDdDNOVlNHQjlLUlNWWUVkUjNvSmFPcVFobHlCbWhaQ09LellyNlF3N1k4QW5xY1V3eVNaSUpPYXE1RmpRYzczd1Jtb0o0WXlEd00xbnlTU0w5eDJCOWpTTGNPT3VTZmVoaXNSWFVBUnpqcDZWV1VEZGlwYmlaNUc1cURQTks0TkYySWdMaXNuVklXYTQzRG4xRmFFVDhpbTNTWklZbnJ4VkptYk1tRzI4MGpqQjk2N3Z3Vll0Qk5kVE4wRVlYOHovQVBXcmwwaWpBRFI4blBOZWhlR1lSSG9xeVkrYVZ5U2ZZY0QvQUQ3MVY5Q0ptazRxSmhVekhtb2owcVNVUU1LaUlxZHFqWlRRTWl4U0VWSWFiVWlQUVhIeTFYWnNjMWF6dVdvSkZHMnR4QXI3bDYwN0dGelZlTTRKcXlXekdDT2xKTUxETzFNSXpUeHpTRVV3RVduZFRUUnhTanJRQklPQlJTYnFNOXpRQncveEpnY1FXTjRuVUV4bitZL3JYSjIrWnJHSjI1NElOZW5lSk5OL3RqUTU3WlIrOEEzeC9VZjV4WG0xZ2hGaXlFWUtzZUtxL3VsUjNLRnhqY1ZIYXFiWjZkcXNYQjJ5SE5RZ2ducm1zSkd5UURJRlRSOVJpb2luRldJRTI0SlBOSzVaSE9BQ0JVa1Nib3FkTEZ2a3lmU2tNeVFMZ25udGlwQW5naEJZRHZYUjJwdG90TE1iTW01bFlNdmNtdVJTOEliSU5PbDFKc0hIV2thM0xUV0tTT1JnZmpWUzcwczI2R1FTZ2oweFdaYzZvOFhmUDQxVy90V2VUcXo3ZlJqbXFTYk0zTFUxTGVYWXdCclVVSThlVDFybTRiZ3l1UDZWczI4L0lWaU1VQW1TU1JBdHVIYW1sT0RVc3JBTGtWV2FYaWk0aXJjZkxWWGVjOUtubWJPYXJIZzlLQVpOR2FmTWYzUjlhaVE4ZEt0S29hSXJqSklxa1pzcldvWWpBN2RhOVMwcUR5TkdzNHoxOG9FL2p6L1d2TjdPSWlZS3d6a2o4ZWE5V0lBQUE3QUNxNkdVOXlCeFViQ3JCRlF2M3FTU3UxTUlxUmhUQ09LQUkyNlZIVXhGUmtjMERPOHlSU2tCZ2FZV3d2SXBCSUJXb2lHUkNvTzNpbkJ5a1M1ejA1TlBjaGh4VFdYTUorbEt3Q293STROS1R4VUtWTGtZcEFHYWNLWm5KOXFVR21BcElwUTJhaVk4MG9iQW9Ba3pnZzF3bXU2Y3RscThwakFFVS83eFFPeDdpdTMzY1ZpZUk3Y3o2ZUp3TXZBMmYrQTk2RTlScDJaNWZxQ0VTZnJWT1BPYTJMK1BKWnNmU3NjblllYVUwYnhkeTZweXVNYzB1NFJrRnVncW9KK01aNXBXa0xBRE9heUxJdFF2R0w1WE9NZEJXVTE3THVIeTVIcFdsSmJtVHNmclRvN1lKMjU5NmFzVGRtZDl1eDFHRFVpU3lUc0ZRRmlmU3RhMXNvcFpnSFVZclFOckZDUGtqVlI3Q2gyR2t6TXRkSGpIelhJTE42R25YTmxiNHdpQUFkcTE4Qmt6VlYxUTlSUjZBMFpLMjhjVEFxTVU4c0JWaVdKUnlwNDlLcU9DRDBwQWl5azNIekhpbXlPRDA2VkFyWnBHZkFvR0RITlFNM3pZcHhmbW9tNWJOQW1USlZ1STVJOWFwcTJPS3RXN0RkZy9uVkpFTTJ0QnMzdk5XalVKbU5DR2tic0FLOUE2a21zcnd4NWY5aURZb0I4d2hqNm4vT0syUHBWUHNZTjNZdzlLclNWTzVxczVwQVJOVENhZVJtbW1rQTAxR1J6VWg1cHBGQUhjbkk0TlJrWnFaeDVpaDBxRUd0UUV4UTNDNHBWUE5JNUJPS0FJdnVtbEw4YzA4QVlwako2VWdGVThVaDRQRkNEbWxjZkxRQXc1cU11ZTlLemxlb3FOcEJtZ0JTN0NvWkgzZ293QkREQnA1a0ZRdXd4bWhqUFA5UWgyeXlSLzNHSy9sWFBYU2tOejBydWRldE50eUxtTVpXVGg4ZGpYSVgwZXgyeU9LYjFSY1daZTdGWHJlSm1RRWpyVmFHSHpKZ08zV3RqYnRBck5vMHVWWFVyeFNLb3pnbW55dW81WThWVmttQis1a0QxcWJEVEw4VWtVRGZPNHo2VllNeVRqQ01jZXRZSXdXcS9heXgyNUJaaGswckZYTkFNQi9xeG4xelVVOGpnRmlpWStsS3Q3QjFNaWdlOVY3bSt0Mnl1L09mU3FTSnVWM2ZkemdENlZXZCtvcHpTSU9qZmhWYVFoaDFvc080dS9GTUwxQmgwKzkwcVJjc005cVZoWEE4MEFabzJtbmRCUUs0ZzRxWlhDa0hOVjg4MDRjbmtVMXVTejByd2N3YlRKeDZTWi9RVnZPd1d1ZDhJRXJwazdEZ05JUDBGYndCWTVxcGJtSXlSempqclVHS3Nzb0hKcUVqTklDSTB5cFNCVERpa0JHYVRGT0pGTm9BN1pHMjhIcFE2N1R4MHFGbU9Lc0lmTWhIUEk2MXFCSDBCcVBuT1NLbFphYmpOQURjMHU3MXBTdkZHMEdnQ05obHVEVFBNUGVuNHc5UlNETklCWHd3cXZJbUtma3J3YVJ6a1VBVldGUXV4R2FuY0huRlYzUFVHZ1pXbUN5S1ZJeURYRmFyYkZnM0hLa2cxMmNueWtpdWYxV0xGdzVJK1Z4dW9UR2psYkZnSnRoSEpxN2VTR0dFc0JrMVZ1WUd0N2dPQndUbmluMzdib0J0T2FMR2hudGN0S2RtZWV0UGNxc1k1NXJQdG8zYTRiSEhiTmJObkRIR3hOd04vcHVxV2d1Wi83MW15aUVqMUZPTnJkVDlHQ2lyVXJva3JlWDl6UEZJbHh6MHFHYUpGdlQvRGswOGkrZGNiUWV5ODF1NmhvZWthWllGZ1BNbTZaZHNrL2hXT21wU3NBRVlyZ2RxYklKWndTU1dQdlFEVmpPY1JnbkNqMnFNS3VDU0ttbGpFT1RLd0gwTlVKYmdFa0llS1lpUnYzclk3VTdhRkdCVmFKbVk4VllQQzhtZ1F6SXp4U01jOEU0cEQ4dE5OSVFjWnhtcDRVWjVGVUFuSjdWWEM4MTEvZzNSMnVyLzdUS013UUVOejNic1A2MWNGcmRrdDJSMmVqNmI5aDBtM2diaDl1NThlcC93QTRxNndDakZTbHNacUJqazBtN3N5dVJOelVSRlRFVkc0eFFCQzFNTlBJSnBtS1FERFRUVHlLYmlnRHJ6elN4dVY0cG9ZMGg0clVaWTNacEtoVnFlR29FUG9QU2twcG9BamI3OUlhVHFhR0dCUUJFNXljVkVUaXBHR2VhaFBOSUJqbk5WWk85V1dIRlZaVGpOQXlySldicU1CbHR0eWo1b3puOE85WDVHNXFFbmcwaG5KWENoZ1Y3MVFrNVVxZXRiZXAydmxTYjArNlQrVlpFNjU1SFdtVVpXM1pMbnBWMDNLTW9CNjRwSlloSW5IM2hXYzVLdGcwbVVpeEk2QW5jd3FIN1RFdkpicFVGeEdkdVdQTlZERWV1Q2FrZHpWVFdZWWhoSWk3ZXBxdk5xOTVPU0FkbzlGRlY0WVYzZk1LMEVSQXVWRkZoM003ZExLY3R1ejcxTEZCZy9NYXZNZ2JvQlNDSE5GeEJGR3FpbXljdGlwc2JSeFZkeVExVGNCcllCcE1VTWVNbW1iMTcwQ0xWamF0ZDNrVnNuM3BIQzU5TW12WGRQc290TnNvN1dBZktuVW5xeDdrMTVoNGRLcnE5cTUvNTZxYy9qWHFxbjVqOWEwZTFpSmJrbkpwTm9CcFIwcERrMUJBMDllS2paYzFPRnFOaFFCV1phWVZ4elV6QUUxRzNTZ0NGaFRNVTlxWmlnRHI1bEN5SEhROGlveWFzdXVSMXFFcDZHdFJrUnpRTTA4cVFLYUtCTVVTYzRwek5sYWpZYzBtZWFRRGdLUjZNNE5JV3pRQkUzWGlvaUttYW9pYUFJbjRGVlpSbk5XbmNZeGlxNzgwZ00rVVlOUUdyVW9xdVJTWlNLRjBnZFNDTTVybjd1Mk1iY2NpdWxtSFdxVXNLeUtRUlN2WXRITE1kamdrOFZXdTBSU1pGNUhYaXRDK2c4bVpsNmp0V2JJMlZLazhHbXhGWUswdzZmaFRwVVdKUU1jMGpTQ0ZDUVJtcVVseThqWlkwaHBrdTRCc2lyeU1wUUVIaXNndWMxTUdjNDVJK2xCUnBMTW9PRDE5S2tNeWdkS3luZHM5ZWZXa0RuT2QyZnhxUU5HU1pjWnpWVnBRVG1xNW5ETmpkMDlhaWVZTDM1cEN1V0pKZ0J5YWlXVGM0OUtxUE9XUHRVOEM1NXFyQ3ViRm5jZVN3ZnB0T1JYYWFINHdqbllRWHh4emhaUnorQnJ6MHR4aW9ZTHMydDBNL2RKcWxaNkNhUGQ0cFk1b2hKRElzaUhveW1uZ0d2UDlFMTZTMVpkamJrYjd5SG9hNzJDNml1SVZtaU81RzZlMUpxeERKY1UxaHhUdk1PZUJUWGZJcENJV0ZRc090VEZzMHcwWEFnS2ltVk00cHV5Z0RyQ2VlT1JUQWZteFVSVjE1QjRwNm5kZzFwY1k4Z1lxdTN5bXJRallqaW1QRG5xY1VDSU04VXdrVk41UHZSNUlvRmNpM1VPdTlPT3ZVVkl5YmUxSmdqaWdaV1lPdlVjVkgxN1lxNFZ5T2xSTXZ0UUJXWk9PQlZWd2ZTdEJscXZLQnpTQXpaQmc4MVhiaXJzZ3lPbFZtVVVtVWlqTjBxcVRWNlpjMVJmNUFTZU1jMURMUnoydFNvSldWVGtqcjdWelVseGxpS3RhdGRNdDVMSm5obUpOWWtzaExFZzFTQmxtU1JTRGsxWExyaXF6eUhOUitaaWdtNWU4eE1kZWFqTndSM3FvWkQxcFBNeWVhQXVYR3VEalBXbUdZa1pIQnFxR3owTlBWVyt0QVhKR2N0N21sWExINjArS0hJeWFuUkFwNkNnQ0pZQ1QwcTZpaFJqRkxHbTQ1cDdESFNrMlVoZ0FKNXFwZVI1RzRkUlZ2TklVRFpGSzQyVDZIZUhidFp2bVRwWGVhQnJIMldSbGtCYUtRWklIWSt0ZVgyYm0zMUZCbjVTMks2cFdib0R4VjMwSnNlankrSUxDSURQbW42S0tyUDRxMHZPTXlqNnJYRnJKdVRHZTNyVmVWRjJzVlBOVEZMcVZ5bzdzZUp0S2IvbHJJUDhBZ0JwVjhRNlc1d0xyYWY4QWFRaXZOR0RLY2RxZ2VWbGJna0Q2MVhLaWVWSHJVZC9aekg1THlBK3hjQTFhQ0VqSUlJOVFjMTVDbDFJaVlTVWpQV3A0OVV1b2tDckkyUDhBZUlwY29uRTk1VmlWNUZDSG1uc25CcGlxUWFwRTJMRVp3ZWFjd3pVWElIRlRJY2dab0VST25mRk0ybXJaVUVaRlJGTWNpbmNDdTI0Y2RSUVBtWHBVckp4a2pBOVR4VkdmVkxDekI4NjVqei9kVTdqK2xLNDBpeHRGTVpjOXF4TG54YmJqUDJhM0xmN1VoeCtsWTl6NHJ2SkNWU1JZdlpGL3FhZG1OUloxN29GVXMyRlVkUzNBRllWOXJOcEFjSVRLZjluZ2ZuWEwzbXBYTXd6Sk83NS92Tm1xQnVpM0Q5ZlhOQ2ozS1VVYnMvaUNRLzZ1Q05SL3RjMWszUGlTNlZpRlpFK2lpc3VXNFpYSUpxRjRYdVpBSTF5eG9zaDZJbWZ4QnFVOG9RU2s3amdBQVZzTTdDM3hJeFpzY21xdGhwY1Zxd2xQelRkeWVnK2xXcmpBakpxSGJvVWtjVnJTNVdSenh5YTU1SExkZXRkZnE4UW10NUFCZzRyanpsZWFDR1BJNHB1QVJ6U2c3aFJ0UHZRSVpzRk0yYzFaQ1lvQ2ZOeFFCQkhHZDJjVmVoaTV5UlRvNFV6bGorVlc0MFhJd0tMalNFRVl3TURtbnh3Rmo4d3dLdXh3TVJ3bjRtcFJCanFCVXRqc1FCVmpHQU9LcXlFQmp6VnVjN1ZOVUhPUWVLa3BJU0p0MHVNVlBJbTBaNUJxdGI1RTJhMEhHNklram5GTWFSaFNuWmNCeDJZR3V0aEc1RklPTXFLNU9ZWmtPUjNycHJOeWJhUDF4elRaQk1ybEdPUWZwVGl5a2RLWWNra21tNUlwWEdtTmNoZTFRdkdrZytaUitWU3RKazlLYVNUMHAzR1UydDJqYktIY1BRMUdkd1BRMWVBN21tbHVlbFZjbXg5RE12YW03S3JYMnQ2WFp1Vmt1MVp4MVNQNWorbGM3ZmVObUJaTENCVi8yNURrL2xWUlRleEtpenJRcHh5S3k3M3hEcG1uNUVseDVqampaRnordlN1Q3V0Y3Y3eFQ5b3VwV0RkVnpnZmtPS3lta1l0MXpWcUhjYWlqdkp2SFNZSXRyUlFmNzByZjBGWkUvamZVNUN3VjFRZHRpRCt0Y3c4bmFoVGtaSXBXaWgyUnAzV3NYZDJOMXhjeU1mUXRuOUtvdmVPNjREZEtnZHM5NllCajVxZHcySmpjRVlKSitsUnlUN3VWT0RVRWttNDFHQ003andLR3hYTFBuRUxoajFxcVd4ME5SVFNtbVFMTFBJRVhuUDZDa05NdVJ3eVhqK1dnd1IxYjByY3Q3V08yaUNLTWtkV1BVMUZieEMzUUxHUHhQZXBTN0dzcFM3RlJqM0pjMVd1Q0NoeWFkdVlkVFVNblRta2lqTnU0MWUzZmptdU9udHZuY2R3VFhieklwallaT1NLNTI2dDlzcHlNNTcxUmxMUTUxTXFjTlZoT1JVMTVabUlpVGFkcDYxREVmbW9Za1RxbTRZeFRoQ29PQ0tzeEtIQTRxMExCV083YTJhbTVkaWxGRHlEaXI4R0VHQUFLbFcxaFRxSEorcHFWSWxVY1I0OXpTdVZZVlN4SHlLVytsVHJIdVhKNHFBdkl1VlZ0bzc0cWVCQ1ZKelV0anNaZDVqc0txSU9PUldoY3hsc25GVXlyQThDbW1GaXZqeTVBYzFkV1lGY0dxelJaTktGSzQ1b0FyWFVXK1hjT0syckovOUZVKzFVV2hZSVdJRlhiZjViWlJqdFZib2hrNW1CR0Z5UHJVWmtOQUF6MHAwbU1EQW9zQkdYUHBSdk5ISHBUc2hSOTJtTVlTY2RLWnpVaGJKK1hpbUVITklEcDNtYkhCeFVRT1d6bW9pVG5yVDg0SHZYUnpDdU9ZNTcwbUFCbWtYazBNNE5LNERkbVRUbkFWZHVlYVZlQnVQU29YSmJKenpTSnVJVVBITkpJUXE0eUtWTXFDek53TzFWSkpOekgwelFOc2YxNHFPNU8xUXEvalFIMkp1UFNxanlNM1dtSWJnc2NkZmF0N1RySTI0THQ5NWgwOUtnMHZUemtUU2puK0VWdE4wNXJPVDZEUzF1UXRLeWpwVWJTTXc5UHBVamxTY1k2VXhuN2JSaW9OUmczSHZTT0RuazByTWNWQ1c1eWVsQWdraUpVL01LeUxtTSthY2p2V3FyaGlSbW9wcllPaGIrSVZTSWtybWZOYmhyTGxjaHU1ckZhdzJTWmpPUWV4N1YwMXpFUnA4UTlPdFpvQTNHazNZaTVGYlc1UlJrVnJXck1GSTk2cHBnR3JVWkdCamlzbXpXTFJiODBiZm14K1ZJN3hvaEpVWk5RK1ZLVHVVRmhTUERJNHdVSXBYTEtMRTdxdVFvM2w1SFNraDArVjN5eTRYMTlhdmlEWWdYT2NVTURPZTJlVDdvcXZKWmxjbkhOYlM4RDBwOG5seEp1ZFNjamlnTG81enlRT3FpaFlodSs2TTFjbmRaRzNZMjB4RkJvVElja2lyY0tRb0dPS2ZGeXFnZHFMZ25hUjJwc0I0RmFKbWFkMlRoUm1tT2NnODFLT0ZKcUZnRHpUS0NOUjFvT1R3ZWxPNkppb2lTVGpOTUxqc0tvNDVwTnhwejhLS2kzNHBBYmlBc3dQYWxac25Bb0h5cG51YVNOU3hGYkVqL3V4ODlUVEZ4aXBKVDgyM3NLYW1BYzlLUUN5dVZqQ2djbnJVQ3QycDBqNWtQcFRWeDk0OUJURXhiZzRVS0tvT0NXRzJyRHVXSkpwRlVZM1lvQXF6c0JoYzhDcituYWVrb1dXVGtkUU8xWjB2TGs0cWV6MUNTMStTUlMwUFlqcUtKYkRXNTBhbllObzZDbDNaT0RVVU15eVJCME81VDBOU2JRM0lPS3hOVWhHUk90UnR0WHRUZ1J5RFNNb05BRUx5Z0RrVlhrWXVod0JpaTZWZ01DcXNVNFE3ZWVhcFJFeVJPR0JCcTRNTXRVU1BtM0wwcXhDMk90REpIM1Mvd0NobjJQRmM5S3hqbHpqalBOZExlTC9BTVM5ajArWVZ6OHd6OWFobVQzRnlDQWM4VTlaY2NkcWhPRlVBOFVkZWxUWUxtaERkbU05eVBTcnNkN0czeTRJTll5NUhOYXVoUWlmVnJiY3U1VmtWbkgreURrL3BTUzFLNTJrYk1XaTYxUGFpNWppR3dqS29UaGlQcFdMUFBQSElVa0pWeHdRUmpGZXJFdVpZOWdESXgrWStnN0VWeFBqcTFpaDFDQ2RWQWVXUEwrNUJ4bWhXZWdLVDNPWkVwWS9NeE5Ycjg3YkNOL3d4V1FIQWJqdFducWhMV0Zwam93emlta1R6TXlYeTU0NlZNZ3dtT2xSeHBnODk2bDI4VkxFMlFYQ2dRdDYxQmI1Q0RubXBydi9BRkpxRzFCT0QyQnFvbFJMVEFyR0I2aW1xT2d4VGlkem5qaW5JUG1xalFaSXUzZzhWQ25MODFMTmxtTFp6VFkrNXBvQmtoK2JGTjIwckg1aWFmR01ybWhqUnF6SEIyajBxVzFHUXhQUVZIS2N1U0JuTlRJTnNPZld0MlpvZ1ppU1NhSFloS0QxcGsrQ3k0UFNwSzJJeStlS0pIOHVQSHJ6UXE3MjRJd090VmJoeXo5ZUJWRXNlWkZKcWFVN0lndUtxUUFHVWJqOG9wODBvZCt2QTZVQUp0M21rdWxDcUU5cW10WFhjV2JvQlZhZVRlNVlVTVJVaHVybXhsRHd1ZHVlVlBRMXYyZXVXdDB1MG55cEQyYnArQnJJaWlhVnNLdVNhdXc2TEVqaVdYSmJyZ2NWRFNOSXk2R294Ykp4eWFibHU5S28yRE9jMU02RHl3dzZHb0t1UXUzbXg0UFVWbFNveU1jakJxNDh1eHpVVnd3bGozQWZNQjBwcGc5Q0czdU9kakRyM3ErRktqcHdlOVk2NTNjVnNXN2g0ZHA2ME1ucVdMbkIwaDhua0VWZ1NqSys5YTF6L3dBZTdMbXMwamlwa1l5M0tCSkJ3YW5qeWVnNHBzd0c3T0trZ3dhZ1JJbzdFVnQrSGlxWGJ0LzB6YkpySFlkRFUwVjZiUzNrVkJobkdDM29LTGpTWjFOdDRxdXJTTHkxQ1NoZnVsdVNLNS9XdFVuMU9YekozTE4yOXZhcWNjbTZNRWRDS2lreVc0NlZGdGJqY3VoQms5QlcxZkF5NkpheXIvQnhXT1Z5ZUsyVkFrOE9GYzhvM1B0V2tYY1JteHVDZW5OUzVIZXE0WEhPYVBtTFlxR2hXR1hoSGtFOXMwMjA0aEJIT2FXOCtXMmIwb3RzQ0ZCVndMZ1dvMEo1QTVxZGg1Y0JKVlEzdFNSRmVCMXA5MFAzYXFPdWVsVWFGSmhubWtHVmpZZ2RhZVIwRkpJVlZRdE1DdHlhblJmbEZSQlFYQTdWSThnUTQ5cVFHZ0g1d1R6Vm1YNVlsQjYxVmpqWnBBVDBCcVM1bXkrTWRCaXR5VUlNWnFvOGhMdG4xcDNtRUE0Tk1TTU1SazBBOVNSY3JFV3pqTlUzNEpxMDVCYkE3VkNZeXowaEVPQ3E1OWFidXo5YUppUXhIcHhSYko1c3FwMHozb0VUQmdJOEE4bXJGdnBqVEx1a2ZhUDdvNm10S0t5aWhBQlJTeDdrVk1BRWJBNlVuSWNVVjRZSTRGd2k0eFU2c0grVmhTenBoUXk5RFVLSDV1dFFhSkQyVXFjWXBVY2o1Q01xYW13SkU5NmdicjFwQVZidVBCQnhWQm5Dbk9lSzJXS3VtMDllMVkxd3BTUmdldFVndU5JNTNEcFY2Mk9FOTZ6NEcydmh2dTFxUnB0VWJlaHBNQjBvM3hrRWRSV1dCMnJWNXFoSkVVYzkrYWxrU1JUblRQUTRvaEdBQlU4a1dUbW9vdUh4VUVObG9ZVVUxNGxiM3oycVVBTW94U3JGbGdNVkZ4WElJRi9kN1NNWXBqRWJ5QUt1eVFpSnNGZTNXczlpTjV4MXAyQzVKZ1lyUzA0R1N3dVkvd0FjVmtya210elNFd1dYc1J6VlEzSGN3MmZBd0traUdldEY3Q1licVJDTUROUks1QjQ2VU5EdU12bUFRS2VSbnBSYkVNQVIwRlY3MThqbXA3RUh5aDcwUlEwYU1SSG1kS2JjU0V5OGRBS2tSTnFidTlRRUZpY25tcXVXaHFITWdKTlJTbk1qY2Q2ZVJ0VWsxR1RsYWFBZEVveVdQUVZHNXkyYzA4ZjZ1bzlwb0dmLzJRPT0="
            ],
            "last_name": "Angulu",
            "first_name": "Emma",
            "farmer_id": "GEOFILE_TEST_001_583",
             "farmer_bvn": 22218XXXXXX,
            "allocation": 6,
            "photo_url": ""
         },
         {
            "photo_base64": [
               "LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQWdHQmdjR0JRZ0hCd2NKQ1FnS0RCUU5EQXNMREJrU0V3OFVIUm9mSGgwYUhCd2dKQzRuSUNJc0l4d2NLRGNwTERBeE5EUTBIeWM1UFRneVBDNHpOREwvMndCREFRa0pDUXdMREJnTkRSZ3lJUndoTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qTC93QUFSQ0FHUUFTd0RBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdEMUx2VGlPTTBocFZPUmcxUkpIM29Jb1BCeFNFNEhOQXhDS0FldnJSdUhZMG1jR2tBM05KU21rNzBYQUtEMXBhUTlSUU1EN1VnRk83VXdISnBBS1R5TVVjVW00Q21oeVQ3VUFQR0tNWjYwM2VBTVV1NFVBS3h3RFNZL2Q1enpUSnAwampMTzZxbzZrbkFGYy9xUGp2dy9wZ0tTM3l5eUQrQ0FieituSDYwQWRKamNtUlNHdk1MNzR1S2luK3o5T0o1Nnp2MUgwRlpNdnhZMWlUSmp0TFJEMis4ZjYwN0N1ZXpxY2lrUFVWNDliL0ZqVmxmOTdaMmpwNkRLL3JXN1ovRmV3azJmYTdLZUxMWUxJUXdIdjYwaG5vekhGQTVySjAzeExvK3RBQ3h2b3BXSUIyWnd3L0E4MXJLdzZVQmNVQ2xQUEFvSHpISGFuZ3FPQlFBMElTZWVsS0V5YzA0SExrVUZnS0FFMi9OaW1NTnJBRTBGaVc0cFNBVzVvRU85Nk5wYnZ4VGw1RkkzM2VLQmdNQW1qTklvenhUd3VLQkRIQkFCcHc1WE5QY1pwaXJqanRRQTVRQU9hWEZMajVhQjBvQWF3eFRNNE5TN0tZMGU0MHdHdVFSbW1qNWhRVUk0SnBxNVUwQU5JcE8xUFpjODFHZDJmYWdCYzgwcmtZRk4rYjB5S1JqeHpRTWVPUlNIcnhTWitVWW9CQit0SUIzYWtYZ1VFZTlJYzdhQUc1OXVLTUFLVFRXWUloTEVBQWNrOXE4NDhVZkV0Yll2YWFNcXlPQ1ZhNGI3by8zUjMrdE93SGM2anF0anBVQm52N21PR01kMlBKK2c2bXVCMXY0cVIvUEZwRnNXNElFOHZUNmhmOGE4NHZMNjkxUzROeGV6dk5LZXJ1MmZ5OUtxdVFPQmpOQWpTMVR4RHFtc3NmdGw1SzZIK0RkaFArK1J4V1UzeThkUjdVM2RucnhnMHgzeDM0cFhIWVVrRFBOTjh6UFNvbWZBNHBnTkZ4MkxKa0hUSnB5eTlBUlZRc2FjRzVCejBwQWFNYzBpTXJJNVVxY3FRY1lyc05GK0lXczZZVlNXUVhrSS9obTYvZzFjS2szeTR4elZtUDhBZWQ4VVhzRmozclJQSCtpNnNxUmVjYmE1YnJGTnh6N0hvYTZkWkVjYmxZTXZxSytaTnVCZ25pdWo4UDhBalBVOUFieTBrOCsxSnlZcERrZjhCUGFudUxWSHZhOVNhVTR4V0w0ZThUNmI0aHRROXJLRmxBK2VCeU42L2gzSHZXM2tINlV4Q0lwYW55QUl1UjFxUUhBNEZOWkNWcERFVDVrelRWR1NhU050dVY5NmVCOHhvRUxHcDNHcFF2T2FJK2xMbnJRQXhqbmdVWXd0SXVTVFR4elFBQWZMelRTT2FjVGtjVW1LQUZGSVRpbDVwc2g1cGdST2M4aWs3VXJEUFNvOEhGQURqeUtYR0ZwZ0o2VThuYXYxb0FqYmlrQTQ5cVE5S2N2M2NVREdrRFBGUnVDdnpEbXBTTVVBWjVOSUNOSlEzQk9EU1hFOFZ0QTgwMGl4eG9Oek94d0FQV29ydlpERTA1WUlxQXN4SndBQjNyeHJ4cjQxbjFwL3NOcXpSMk1iYzlqS2ZVKzN0VFFFL2pMeDdKckJrc2JCMmpzT2pOMGFiL0JmYXVFSEo5cUNRRDcwcTVPY2RxR3dzRHVEOHE5cWlJd1FUU3U0SGI4QlVNa3VhbTR3bGNGdUtnWnNtalBQTkJYam5nVVhHa002ZzdoelNwMDlhVS9wU3F1UVQzb0FhZVd3T25wUWVuSFVVZDZYSEhGSWFIRElxekhKZ2ppcSszT01DcEY2OXhTWXpSVmxrQUJPTzlQQ2wrTVk5S29ySVZZWXJRZ2xMSU1jSDNvVndZNjB1cnJUcnlPNXRabWpsak9WWkRnMTdMNE84Y1E2NmlXZDBWaTFCZU52UVMrNi93Q0ZlTXl4c01Nb29qWm9YV2FOM1NSVGtNcHdWUHFEVkprdUo5UHFmbEJGS2NtdUY4Q2VORTF1RVdOOUlvdjFIeW5wNW85ZnJYZGQ4OXFaQXdybHM5NlE1eU1WSmdEQm9KR2FCaXhuSEJGUHBnUFNoU1dZK2xNUW9HTWlremdVckg1c0NsSTRBeDFvQVZSeG1uQ2tDNHBhUUNkQm1vV09TYVhjY1lwaE9LWUIycGpVYitNVXhtb0FCNjA0NEk5NmpWZ1R6U0VnbmcwTVlyRHRTRElxTWtodXRMNW5yVEFsNjBkQlRRNHhYSCtQUEZZMFBUL3NkbytOUXVGd3AvNTVwM2IrZ3BBY3I4UlBGelhkdytqMlVtTGFJNG5kVC9ySEg4UDBINm12T1dmcG5rMUpJNUorWWsrNXFKSTJta0FIclF3SFJJWHl4SEhhbnlLVVFkcXRtTllJc2Q2cHpOaGVlcHFXVWluSnhrMVhQWE5TeU1PbmVvbVBTcFpWaEJ5YVUrbEowTkdhVngyRk9NVW9HS09UMnBRZU1VSmc0aVk1OWFVRHZRUmc5S2RnY1lwaFlBUFNwQU1VM3RTZzFKU1E4Z0Q2MU5DN0R2VmRXQUdLbmp3S0xnMGEwUkR4NU5NZUU5UjBwbHM0VmhqcDZWcXJHanI2ZzBYRTBaMEcrS1ZKb1pHamxqWU1yS2NGU09oRmUyK0NmRmkrSXJBd1hCQTFDM0g3d2Y4QVBSZXpqK3RlTVNRbUJ6MTJtcDlMdjdqU2RTZzFDME8yYUZzcm5vUWVvUHNhdUxNM0UramdPQjZVbVBtcWhvMnF3YXpwRnZmMjUrU1ZjbGU2c09DRDlEVjVBV0JOVVFPNE9mYWtWbDZad2FlaVlGS3lMdXppZ0JDTURjdk5JajcvQUtpbmZTbStYemtjTlRBa1hqTkppaFdJZm1sSjVvQXFBbm1tTTVVOWFWbXh3S2F4ejFxZ0dNell5cHFOcEd4bWxZN1RrVWh3eTVIWHVLTEFPV1JISEhXaHNWVFlZYzROT2FSMUFQYWl3RTdkNllwQjROUm1WajJwRmNrZE9hTEFGM2N4V1ZwTGN6UHRpaVF1eFBZQ3ZBOVoxU2JXTlh1TDZZaythM3lxVDkxZXcvS3ZSL2lQcS8yZlNZOU5SdjNsMHdaeG4vbG1weitweFhsVC9ld09vcE1DRW9XYkE2VmR0b2xoUXR3VDcweU9QR0Rna21wSlcycmlwS0lKWkF4TEUxbnp5NTZWSmNTNTRYaXFUSGptcFpTUTBuMXB0S2FTcFpZZHhTakdLS1VVcjJLQWNEdlR4Z0R2VFFNbXBBT2VhVmdFd2VlT0tYR0FNY1VwRkdPT3RESGF3ZHV0SjN6VHR2RkJVOFlvQUtlaElJcGdYRk9BSklOQWk3REp0WWV0YkZsTjgydzlPMVlVZWVLMGJKanZ6MnBBMGJieEIwd1JWQjRHakdENjhWcFFOdlNpV01NaEZVaUdqcFBodHJSc3RVYlNyaVFMYlhQS1pQQWwvd0RyaXZYMXdGTmZPYU0wVXFzcDJzckJsYnVDRGtHdmV0QTFNYXhvdHRmYmRyU29DNitqZHgrZGFveWExTkpHd1RRdzNkT0tZVytmRlNsUGx6UWhFWXlLY3JmTlRjRURpa09SOWFBSlI5N09LY2NWR3JjWm9MODhVd001MU9SdE5OYk5LNzRxTnBjKzFVQkc3RVV3U0VObXBHWUhtbzlxdDFwZ1JTdUEyUjNwWkpNd0thaWxpeDBPYUVZRmNIdDJvQVZaZ2NVL1BHNnF4NFB5ak5WOVZ2alk2UGRYUkdERkN6RDY0NC9YRkFIbEhpeS9HcCtJYnFiSjh0RDVVZWY3cThmenlheFkxQmJKcDc1SklQM3FWY0FFR29ZeFdaWTBMSGlxRWtoZjVqVDdwOHVxOWhVTWpkQUtrYUs3Z25wVWJSa2pwVmhRRDFxZFlDK05vSDFwRkl5bVgycENPbGFzOEFDNE9DVDZDcWJRa2RxbHV4YVJXQTVwNEJxWFpoaG1wVmo0eWFsc3RJcnFoeDB4VW9Ra0RJcTFGRG42Vm94V2lHTElYSk5JREY4cGpqaW03RFc1OWpBR1dJSHRWTjRRRGcwSUNqZ2tZb0FJN1pOYWF3QXBoVjRQZXBQc1B5RENrNW9UQXl3RG5HQlV2bDhBMWVXejJrQXJVcHRFYjVVQi9HbUl6WTBPZmF0V3hpNTVGQ1dmNlZwVzlzWTBBeFNBbXQxK1VIR0tzQlFjajFwaVJFdDY4ZEttVVlVajBxa1N5akt1MDhDdlJmaGxxQk52ZWFhV0dGSW5RWjU1NGI5Y2ZuWEF5RG5KNzFwZUZMMyt6dkVsbk16WVF5ZVUvd0R1dHgvVUg4S3RHY2tlMXF2emdtcCsxTVpNNEhRaWtJSzhaelZFQ291V05Na0dHcDRPM1B2UTJHRk1CaWVsUDJpb29UaVJnZXRTbHVhQU0xMVVyVUxxb1dwQ2NqaXEwcm5wVkFHOEFWRVpCaWpjQ3RWWFlBOWFMZ1dBK1FjMVZrY0ErOUtHd3A1cXJNMmNHaTR5Ynp0cS9XdVg4YjMrM1JQczZrZ3p1Rk9QUWNuK2xialA4dld1RThhenRKZXdRNStWRUxZOXlldjZVWEE1VEdQenBDMkFTU0tkTmhJOGpxYW95eUVzRkI2VkFFY3NtK1VtbU5rODBwWEJ6NjAwbm1rTkQwSEl5YTBJQ29WY2o2NHJNRERJT2NWWVdka1hnMGlpZTVBRW9ZWnhpcWo1eG5pcEd1a2NaWTgxRVdCSEZRelJERkc5aGo5YXRiQVV4M0ZReEQ1dVRWbklJNHFDaG95dkFyU3RwQ0V4akpyUHp5VFVrRTVBWTU2REZJYkxrMHdYbFR6Vkg3MG1lcHBzanM1VlZPZlUxZHRyUW1JdjZldE5BUGhqeWk0SEo2MWR4dHhrOVBTcWJ6Q1B0ajJvKzJxUVJ6UmNMRnNvR09jZmpTb3UzcFZkTHhkbUFhbGp1RnlNbm1tbVN5d21EdzNYTldvbC9LcXFrRnMrbFc0M1VLT2VLYUV5ekJobVBZVWJBN0hIYzAxSkNDRkE2bm1yQ0tSeVJ5T2xNa3F5eEZDQTFRQlNDZHJGVzdFZGo2MW9PeXNDckRyVklwaHppcVJMMlBjdEx2QmY2VmFYZWMrZEVybkhxUnordWF1bkF4WE1lQ0x0WnZETnZHYzVnWm91Zlk1SDZHdWxQekFZclF6SkdVRVZDY29jOXFuL0FJQlVST2VLQUdxb2M3aDFwU0RtbklvSFNtc01HZ0RKMlNnZmRxbktzbVQ4cHJWM1o0TlVMa0VNU0RSY0VVV0xxZWxWblkxUExKeDFxb1pmbW91T3dyemJSaXFyelpINDBrOCtXd0tvU1hISkFxYmxXTEVrdU04MXdYaVNjejYxSXBIM0ZWUitXZjYxMXJ6SEJCcmhkU2ZkcTl5d0lQejhma0tZbWpPdW5IU3M0L2V5YXVYWExacWovRlFJU1JnQnhVUmJuSkZTdGlvK00xSlNHRndhYjVoQTY0N1ZMZ2VsTU1YdFNLUkVYNHpUdk9PQU85RHhrQVVtd2s0cE1wRWlTa2RLa1c0YnpQYW9sak83UGJOVCtXRDBCejYxQlpJczI0SEpwZDNPQjBKcUlKdHpubW5SdnowcFdzVWpaMCswODRBNHdQV3RtU0pWZ0NxUVBXc0dDKzhoQUZPUDYxZmh2UFBHVHhTdURWaW5kMnNoYmg4Zyt0VVJESUg2MXRTcXJaSnpVQ3JIdjQrNkJRSzVuQzJtWGtIbWdDNGp5U3JZN210SjF4OXoxNzAzRDV4amlta0pzUzF1amdLNUk5eldva3BLZ2NFZW9yUGpYUEdPcHF5dTFGMmc4WnFpV3pSamw0QjVCcXdsd3hZYzhWbnhOM0hVMVlqOTZaTExUdHY1cHlxTnZUSnFKU1NRT21hc1JrNEk5S2FaTE82K0g3NXNyeUxQM1pnMlBUSzQvcFhaakk0cmpQaC94QnFCNCsrZy9RMTJ3SUl6V2htU3EyVXFNNElwWW5HQ0tRc000Rk1CUUJpa0M1RkNudFVtQUtBTVJzOWMxVW5mSU5TdE4xeFZTVi9la016N2hnQ1RrNHFzemdITlRUa0JqVk56U2JLU0lwVzVKcWhLd3pWeGp3YW96RDVxa3BFTEhkWEUzN2Y4VFM3SGJ6RGppdTBPT2MxeG1wREdyM0lIVElQNWdVMFRJekxqbk5VOFk1OWF1VEhrMVZJeWUrS1lpRmp6VE1qb2FrYmhxVFpoczQ0TklwYWdvR2VhbEd6am5OS0VIRk9LS3VCdHlhaHMwU0ltMkE0cU00QTk2ZTZxRGdVTkVjQWo4cWhzdElaR2VjZGEwb2tUeWNuQTV4V2ZHaEQ5S21lUXBsZWNHbHpEc1BsVEpPMmlGRklPN3RTUVNaWVo2VnBDQldYa2RlNG9iQkt4bFNIRGdacTdaTjBGVTNRK2M1UDhQRlc3TTVYbnJRRGR5NWNYQ3FNQ3FDVE1aTUtjNU5Pdm13QXVNRTk2ZFl4THYzRWRPbE1WalJSU29HNDg0cHdLbkhQMHFPWS9Ka1ZCQjV6WTdMbnJTdUZqUWpqWGJ3TTBTRUFad0JUSW96bkRPU0tqbWpSQWNEclRURTBXbzI0WG5rMWJRNTcxa1JzQmpqbjNyUWdZK2xWdVExWTAwR1I2NHFiT0Y0RlY0Y0hGWEFvQzhjNXFqTTdUd0VGYTB2U0Q4M21MbjhqWFliV0E0TmNyNERpSzZiY3lZK1Y1OEQ4RkgrTmRaMVBGYUxZZ1lyTXJaTlNkeWZXbXVOcmcrdFNEQkF5S1lDSWR0VGdnaW90Z0tudFNxaHh3MU1SejByRGJ3TVZRbGVyTXpZTlVKVDgzRlFXaUtaZ1JWT1RHS21lUWNnOWFxTy9OSXBFVXh3SzR6WGZFMHRwTVlyZEV5cDVaaG11cnZaUEx0NUpNL2RVbjhxOFp1TDJTZTZaNUd5R09hSXE0bm9kaFllTUk1WDh1OVJZLzl0ZW40MVd2NUk1ZFZtYUp3eUZGT1ZPUjAvOEFyVng4dlhOYVdpRjNhWUU1QUZWWW01YmxCNjg4MVhrK1NMZG5rMWF1ZnZoUjJyUHVuUDNhQmtSbXdhbVc2VmtBSUdlM05VQ0NlZ3dLVFl5L01DRFNzTzVvK2FBTWdqNlV6ejl6NXpWQXlNTy9OTjh3OGMxUEtVcG1nOG9KNi9qVHpMdUE1ck0zdFQxa2FvY1RTTXpUaVloczlxTGptVFBhcXFTTmlwdCs1Yzk2enRxYVhKWU1lWi9LdGkxa0RFQXYwRlljYlk1cXlMall1RjZudlNHTFB6TEpnNStZMUpiamFRRFVTbmN1N3ZTQjhNUFNpOWdzUzNxYlRHMktXMW5VTUFlbEYwZDl1RGtuRlppVE1yMExVVE9qKzFSTXVjajNwcTNTTHdEeFhQU1hEZzhHbWk3Y1lCTlh5a2MxanJZcmhQYWtsSWJuT0s1cU8rWURhRzZWT2IxeUFDYWRpV3piU0xjUnlLdlJ4TXZQT1BTdWJodTVNakdSbnJXcFozbHdzcTd4bFRWV0p2YzNvQ1ZJRlhZMnlLcHdzSFhjdUtzeGRpS1pOajBUUWJ5eDBMd3BCYzZoZHcyMFVydTRhVnd1Y25HQjY4QVZxYVg0aDByVjNaYkMraG5JNmhHNS9Ldm5UVjVyeTkxbWRKWm5kWTNhTkFUa0tvT0FCNlZzK0hieVBSOVowOEIyTjI4cUFLbzZBa0RCK3ZwV2laRmo2SG1BS2cweFh3Ums5S1ZtQU8wOXVLYXlCbHlLb1JZSHpEZzA1ZUJpcThMYlR0SnFmSTlhQkhKVDgvaFZGemxxdHlIazFTbkJCejJxR1dWYm5Lc1NPYXFNMlRWMXp1VTVxbEl2VWlrVVVOU1V5V002ZzhtTnNmWEZlS1NBcklRZW82MTdoUG5CNHJ5SHhEWU5ZYXRPaDVWbTNxZlVIbi82MzRVNGlrWjZuZXBYdjJyVzBKQUJPMlBRVmt3Y01XN0N1aTBwUXRwS3k5R2IrWC82Nm9raXVHL2VIQjZtcytkY2trMVpjNWtJT090SmNMaFB3cERLYVJFNDV3S21NUVBRZmpVWG1xbU1uRkQzcUFZQTUrdFN5a3U0eG9jdGpGU0N6VXJqSE5WbXV4bkk2MUxIZXUyRlFxQ2ZVMU5wRnB4SHRwekttNFl4VUpoWk01RlQvYjVVNWRDUVBTcFB0a2N5Y3FPZTFRN2xKb3FqQU5TQjhqTk1rQURjZERUMVVZb0t1S3ZGU0ZzcjNwbU1LQlNxck13QTcxQlJQR2NMa0dnanZtcGtzNURHR3dSU0dKbEFEVkpTR2VhV1FyVlIwK2JJcTNJQXE1cW0wMjF1UlZJbVEwb1R4VVp0M0p6bXBUTnhucFNmYUVIR1JXaXVaT3c2SzNERUVuRlhvYlJTRGdrajNxdEJjUk1jUCtZclZ0Wkl0bkRxZlFVMHlXaXNJV0I0VWdaempOYWxydVpSdUdLSWxEbm5CK2xhRU1RWHFvTkZ3c1diU1FJQXRhVURCd2NkaldVQjNBeFYyeGN0dTVwN2tuTmFuUEhhM3QwK1BtOHhqajFPYVBBc2NtbytQOUszL01XdVE1K2k1YitTMW1hODdOcWwwVHdGbFlBZmpYY2ZCblNqUDRobDFGbEpTemhJVnUyOS9seC8zenVxNGlaN2w5UnpTQWtEcHhUMnh0OTZidStVWnF5Q1JWRGRSUytXb3BpazU0cVRIcm1tSTQyUTVxcktjNUZXcEIxcW5LRG1zbWFJclo1S21xc21WSnowcWFYS3Rtb21ZTXB6U0tLYnNUa1Z5UGpEVERkMkJ1VVRNa0hKOWR2ZXV1a0hZVlN1RURvNk1NcVFRYUw2amV4NC9HTUs5ZE5ib1lOSlVIZ2xjL25XSkphZVJxc3RvMmVKQ25wME5kRmZoVWcyRG9CaXJaa2MrOHBEOGRxanVicG1UanIwcDhpako1cGdWUWZXbGNxeG5PMGpISkJxeGIySnVNY242VmNLSTRBSUdLazhqeVNIaG1DbjBOSnQ5QnBJeHBZakc1VTlRYW1obkVkcFBDWWtZeWJjT1I4eTRPZVByVXQwanlTa3RqUGNqdlRZTGNHUWJzRWU1eFJmdUxsSkliUzVGcjV5QXRIL0FFcXErQzJWR1BhdDQzRnhGYStVbmxBQmVnOUt4M2dMTnZKQU9lZ3FVMjNxVlpKRFVMSEFxMnFQZ2R4VFl3Q2d5T1JVanlCRUFCb2FLaXl6RmJsZ1Q2VWtiR081VWpIRk1qbll4bkJ4VVc4Nzg1NXJObXNXZEhET1NnempIcFRaMmpFWklBeWF5RXVHQ0FtblMzTFNJQm1wQVNjRnhsY1lyTHVBUTNOYkViYjR4a0RpcXR6R0N1ZGxYQW1iTWgySk9QMG9mY21BVkE3MVBKNWF6QXhvd1h1R3A4NFdTTU1Pb0hTdFV6RjdFTnBpVzVTT1NWWWxZOHV3eUJ4VWtVa2pzQWdKWTlBdldvVWlkaWRxTTMwR2NWMDJnYWJGQXJYVjI4YWNjQm14aWlVa2tKSnRtUkRmM0VMWURISTdIZzEwR25hMkhkVWxBQlBjMVgxS0czMVNhT0RUb0M4dTQ1a1ZjWjlxbmZ3blBERWg4eGpNQjh3SGFvaTB5M2RHODdvWXR3UEJxYlQzRE53UmpGWkVVTXF4TEU3NUM4WkhXdGpUb1FnSlVmalQyRmM0N1dvR2sxK2VDQkdrY3k0MmprczdZNC9FbXZvYndWNGNUd3hvRnZZWkRUaytiY3VQNHBEMXg3QUFBZlN2UHZCdmgzN1o0NXU5U2xUZERaRlpBVzd5c29DL2xoaitBcjEySThacldLMElreWR4Zy9XakFIYWduamtVNGtFZmhUSUJGenpVdUJUSXpqclVtUlFJNGFROWNWVWt6Vmx6ZzFXZXN6WkZPZkpxc1NlbFc1ZmFxakhCejJwRklyM0E1QnFzUUdYbnJWcWZKVTRxbUQyTlNNNG5YdE9NZmlXMm5BSlNaZ1RqMUhYK2xNMUhPVDJycU5TaFNWRWR3TXh0dVUraDZWeStvTmxUV2kyTTVLek1Kc0Ewd2s0cVVnTlRkblBXa094R0daZSthVXp1TzFPS2dIMSt0UmxRVDBBcGFNcEVieUFrY0drODdhT090T01BSTYwQ0FBZXBGTFFyVVZaVGp2eUtiaHV1T0ttRWFoZ2VjZDZrWk9NQVpwY3d1WHVWOTVqL0FJYWo1Wjl6R3BuVTk2ang3VW14cUpJallRaWhldE5GUEhTb2JOVWlRTWVsVzdVQ1FoYXBkS25nWmczQzVwWEcwV0pVTnU1SzhwVFpjU3A4dldyU0laY3FSelNlUThad3k0SHFhcFNJY1REbFI0enlEdG9pWUhqUDUxc1RXZ1pOdzVxaStuWTVHYTBVa3pOeFpMYk0wYWxOcU1DT2MxWmloUng4OEtuZDArWTFtQzFsUS9LVFZtRkpjOHRpa3hvNm5UcmhJbFZCRkdxQS9jRlhwYnN5T1h6ejdWemx0d3FuY1RtckptS0RDazgxTmhNMGxrM3lzY3JnVnBXR0h5VU9WOWM4Vnp0c3J1NU9NNTR4WFMyU2lPTlZ4Z3IzSFNyMklQU3ZDTm9rV2hOTWd3ODB6TS92Z0JSK2dyZGhPVUE3ZzFqZURDWDBCZ2VpenVCOU1BLzFyYVViWHJWYkdiTGEvTUtBdEluMXA0SE5VSUFLTnVlOVNLdE8yMEFlZlM1RlF0eUt0U0FFVlYyZGF5WnFpcEwrbFZXNXpWeVVIcFZhUWUxVDZsRlNRanBWV1JjTWF0ekRPUUtxdjcwcmpNL1VNK1FhNDYvWWhUMHgzcnM5UlA4QW9yWUhXdU12UmtISFdyanNUTGN5eHowcFRrRE5JTytPdEtlb05ERVJrRW5pbTUydGc0em1wbUJwcFFEcDE5S2twTWpjN1IweFNLakU1RlRrWlVGbElGQzR4a1ZEWnRGRGRtTzlQODlZeG5IUVZETE1BQ281OTZxc1dZRHJRazJKdm9UUEtIYm1nYzFDcU4xSXExR2hPT090TmdOTVp3S1VLU2NWZGt0U3R2dlBYMHFPM2dlU1FLcTVKN1ZtelNKR0U0SGVyVUVKTHIyT2EwSXRMWWpuQVAxcVZMQUkrQmppb2FaYWFIcGI3VkJCK3B4VjRJa3R2eUJudlVja0I4Z2dFZ2dkQldJdDFORk1jTWM1d2MwMFExY3V5eGtINU1NTTlCVEdRUHd5YzQ3VkZIY0dLVE9mbFk5NjBqSDVrZVJuUFdySU12eTQyT1BlbnJhS1V6ZzVxUVJGZHhJNzV6U0IyQTU0SHJURXhxUnN2UTQrdGFOckNqTHVkY2tkTTFURXBaZHVCK0lxL2J6WlFCbHhqMHBwRU45QzNERXFOa0FZclZnQTJiUjJyT2pPL2dEaXRHRmhHdnFPeHBvbG5vL2dva2FHK2VobmJINUtLM1d4dkZaUGhTUHkvRE51Mk9YWjMvTmovZ0sxaU56RDFyb1JpVHFRTVZLSEdhZ0F4eFQxR1FmV21Jc3FmbG96VUtOaklwKzcyb0E0ZHFpMjV6VXd3YU52elZrYWxLV1BqT0txU0p3ZUsxSFdxMGlEQnBNZHpFbVVnNXF1Y0d0SzVpSE5VbWlJTlMwVVpkK01XNzF4VjJlVzlxN25VRUsyMG5HVGcvblhCWGJBU01NMWNTWmJtWVcydjcxSXBCNjlhamNmTVRUQVQ2MGhvdGhPUWQxUEpSQm5BelZRU0VkZWxJMG1hbGxKRXNrbThjY1ZHWk5pSEhlbUJnS2N5NUZSYTdOSG9pTUFaQlk5ZWFuajhrRExjK2dxcksyRDlLZ0xzMmNHcnNaM05PU1dGbUcxUUtrU2RSanNCeldDN1NnOGswK081WWNNVGlqa0QyaDBVOTZrc0FVRG4xcDJuekxHKzRqakZZcVNBaklPYXRSU2tkRGlzNUkyaXpwb2RTalFrc3Y0MDV0VGdKR0Fldld1Y0VoWS9lcUtXN1dMZ2trKzFTazJVMmtkUTkvR3k0RDR6VVVkakRPMjRPdUQxNXJrR3ZwaWNxcHFTMzFHWHpPVGlyOW0wakwyaWJPdm4wdG9vejAybm9hcFdWNDlyS1luR1ZKNlU2ejFLV2VIeTJZa1ZGZlE4ZVlPUFdwR2FZeGNJWFZjYzlLaENEYVFjWitsVXJLKzJIYXh4azg4OWEwMUtzU3dIRlVKa1FqVUtUZ25weFUwVVJ6M0JwKzNPTVZPaEFHQ2NtcVRJWllnWGFnQlA0VmFVbklCYjVUMUZVQkpoaHptcjFoQWJ5N2d0ME9ESzZvRDZaT0thV29uc2V4Nk9nZzBhempQYUZNajN4elYwTG5rVTFVQVFJQndPS1ZDVWZHZURXNWdUQUUwcWdnNXBBeEhhcEZ4bm1tSVFqQnlLZGluRk1yVVlSajNvRWNZcTBIZzAwOGMwdFptb1BnajNxckpqbXBIT0RnVlhrY0hPZXRBeXBjYzFWSUJGVHpISFBhcXJ0M0JwTW9xYWxIbTBmR01rZDY4enZHK2M0UEZlb3VWbGpLTWNaNHpYbUdwb1VuZGNuNVNSZzBJVWpPWWc5YWpiaWxJSjRQU28yUFByU2FCTWNHUHJRVHgwcGd6bkovS25uQnFXYUllZ0xjWXdLbjIvS0JUSStGUEZLR09PYVNRN2lQQ2pEQkhXby9zaUFnNU9La1lraW9pektBZWMweWJvZjhBWm84ZmQvRTFESmJwemhRRFQvTzdNVDlLUm5CSjcwMG1Kc3BxcnEyTnBxeEVIejA0OWFlb0JJSGVyREpzQXdmd3BOalExWkVVNDZtcDBXSmprcU0xVlNNc2FzQmtUQXBjbzFLekxubFJ5eGdLaXFmcFZiK3hIZVhjQ2dIdFV5U3FDT2F1Sk9NY1ZPcUx1bUVGdWxzZ0c3SkhVMU96aDF3MkRtb0FTN1pKeFQxSHpja1k5S2tGc1o5ekQ1TXdPRHRQU3J0dEo4Z082bHU0dDhXUnppcU1VaFU5ZWxVaE02S0tRTW9QV3BXQTIreDcxbjJVd0o1UEIvU3I0YmdqR1Izb1c0aHNia0VCaDNycFBDcUxKNGdzMVk0QVl0ejdBbXViUnR4SFBRNHJxL0JzVHlhNGhUSHlJekVuMDZmMXJTQzFNNTdIcTBUN1dBSjRxeGdFNXFGUUdSVGpuRlN4OU1HdHpFa1ZlZWFlVnBvTzBnOTZlSHlmZWdRQjJBNUZBY2VsR2NHbDJBOGcwQ09IYnBpa3oycWQxRHJ4Vlo4cWVhek5iREplbFU1T1Fhc1N0VlNRMERLMHVTQ00xVkp5Y1ZaY2dtcWM3S256RmdvSGNuRklxeEJJY1pGZWY2OUdFMUdkZHBBM1pIMHJ1VFBGSkpnU0tmbzFjbjRyUUxleHZnZ011TSs0b1E1THVjdEpVSlA1MUxKOTRpb0dPQ0RRU2lZREFCSXhTWndlT3RESEtqSHBTUjRQekdsMUhjc0kyMGNpaVJndURVTHlmM090Vm1hUmpnOWFFcmcyV3pNTWVvN1ZCTEoySXBFVmpqUHBUMmh5Y2c1cGsyWkVCd1QzcHlCaVRVd2l3TVlwNklBT2FWeWxFaWpVK1p3T3RXMkRBRmMxSGhRQ000TktJbVBLSEpxTGwyQldiUDBxRmlON05nZ0NyY05xN05sOExqMXF5MXBHVkEzS1NhYVluRXpVa0pZRURJRmFjUnlBeDRPT2xOU3cyRFBVRDBwNlJiWXlRRG5QU20yaVVuY3NSN1pIQ2hzSDBxOUZBcVl5QmsxanBONWM0QkdNYzFlUzdHYzU0RlJZcm1OS09GWDNKamc4VnoxN0FiTzhaRDA2aXR5QzlWc01COHZTcWV2SUpZWXJnWTY3U1JTVzQ3bEsxbnc0UHBXOUZNUEt6MjYxeWx1NTNZeld6Rk9WaUMwN0ROS0hETVNCZ0UxMjNnaU4vdDA4aUFiVmpDc2UvSnlQNVZ3MXE0WlFlL2V2UmZCRWV5d3VKMXlXa2wyL2dvSDlTYTBodVp6MlBRclpzUXFTYXM3d2NZck5oTEdBRTlLdVFZS2pGYkdKWUl4VGVWcC9WYWFhQkNoL1dsM0h0VFFPQ1RTRjhkS0FPUlZpdkJwWENzS3dycnhUWXhFckdza3JEMHdCK2Y4QTlhc082OFlYUXlzUWppOThiait0WXVTUjBxbE5uVVhaV0ZXa1pnRVVaSlBhdU51L0dObUpXVzN6SUFjYmljRDhLNTd4RDRxdTdxMU5vOXlYREg1aGdBZm9LNWdNSk5vM1pxNHg1a1JKK3pldXAzWC9BQW0xdHVLTkEyVDkwZ2pGYzdyT3NYRjB4azNzMGZaTThDdWV2SlVFd01iY2ppcElwWlpJc012eSt0VE9OaTZVK2JvV1lkVWxEN2ZtVWVtY1UrKzFhUzdWWXBNc0VQQjk2emkrL1lnKzluRlg0SVZCS01NMCtaS093dlp5bFBjb3VkM05RT2FzWENHT1lyempQRlZucEozRTFiUWtMWmlHS0Z4NWVlbE1pT1ZJcEQ5d2ozb0VHL0I2MG9reDk2b2lUMHBmSjNMbkp6UUZ5d2JoRkhGTU53emRQMHF0NVRaNjA0QmdlQm1peUM1WkVoeU1ubW43L2Vxb1YrdUtQM2kvdzByRHV5MlhPM3J6VTlyY2JaTnAvT3MweW51Q0ttZ2tHY1VOQW16WEV2ekhKeUtsU1pjQUFDc2N6a1BqY2NVcHVRR3lHT0tsSmd6Yk1oVlFVT0RUWTlRVVNGWlVBOXhXY2w1OG95YzVwNUtTL1UwbWhvMTVQc3NpNzFLbGlLeDUyYUxJUnVEVmFSNVkzeEh6MnBHZVpYMnlEOGFFbURhTDhGMlZJVW44S3YzZHdrK21NT2gzQ3NOWCtjVmVkdjNDcG5xYzAyTkZlRmNObjNxMzV1Wk1MMEZSTU5vQUhXbndMemswdHlqWHRYSWo0UHpIdDYxNjNva2tXbTJFRnJnbnkxK1p1dVQxSi9Pdko5TXRWbjNOSVRnY0RCcmZzdFpmVExoVU1yVHFPR1JoMjlqNjFzcVUrWG1Sbkd2UjUrU1o2L0Jkd1NSNFNaRGs5Q2NIOHF2VzVBUDFyeWUvdmxrWU9HR3hsM0xtcTFwcm1wV2NoRnJjU3hyN3NkdjVWbkd0M1IxVHdhM2d6MnhXeU9LVW5BNjgxNWpaK1A3MnpLaTdpUzZqL2lJd2pEM0dPUDBycDdUeHJwZHlxbHhMRm5ubGNnZmlLMVU0czVaWWFvbmF4MGhKUDBvcUszdTdXN2pEUVRwSmtkQWVhbHlCVlhNWEZyUm56Y0o1bGVSUGxiYjZuQk5VTG01TWpGWEJRK2xUNmZ2bXQybFpzc3g2MUhlUkNST1J6MnJrYnM3SHF4WE5EbVJuelF4S21Tb0o5NnlaTnl1Q3ZBYmlyOXl6b0RHM1hzZldvUWdMQUVacWxKb3huQ005Q0JvL0picGtWWlJ3VXFPWURtbzFPeHV2eW1sZTVYTHlENEVDdnU5VFY1UVNkNjhsYXBMbFFLMEllSVNhVEhGYUdmZVNxNTQ0STdWVExCaFUxNXkyY2MxV0hRVnBIWXdxTFVjbkRmenBjRGNmU205ODVwZHhKQnBtTmhSSHVxUUx0R2MwMVd3TTFKdXBEc05aUXc1NjA1RkE0TkJQdFRndzZkNkV4V0pmS0RZcGp4N1AvclVvWXJnWjRxWXliajBwTXFMS3hqVWpKVVVpUklHSksxY0FETDA2bnJVaXdSbGdTZU1Ha1dVbWhCNkQ5S2ZEYlpQSTRyVGpzMWJuUEJGV2tnaFZ3UmxoamtVcnNMSXB3V2lPQUdVZGU0clFpdG80bzl4UlFmcFNneG9OcWdldE9EcmprOFVDWlJTeGo4MXBYSEdlQlZhNWdMTmtxQVBhdFI1QTV3RDhvNlZYbEdWNmo2VVhGYnVaSWhBZXB6amRuc0tWc0t2VEpKcUxxY1U3M0dsWVFaWjg5cXR3eE5Jd1ZNNU5SVzF2SmNUSkJCR3p5T2NLcWprMXFXTVR3WFRSdU9SUnNhUWc1c3RXZWtTRWgybkt2MjI5QlRib3oyMHFUTU42SWNic2ZleFd2Ykh6R1NFRDVwRHRIdFYrOHRGU0pVQXlvSE5EclNpdFRvK3BVNXU2M0o5c1YzcDYzQUFMYmNack5HVDhvcWUza1lLSVUrNzZWTnVTT1haRWdrbXgwN0w5YXh2Yzd1UkpGUzRnRVZ1V2tJRE53QWFKN3p5SUZqdGxMNFhHN0dBUHpxZWRWVStaSzNteitwSEMvUWRxejVYM2NWU2FzUTAwN3JRMU5GMVM0dDVrRWs3RVo2RG9LNnFUeGJyTm0vbEJZSmx4bFdhTWs0L092UG9tMnRrZHE2U3oxQlBzNmlRQWtjYzArZHJZeWRPRTFhUjVlOGtscmxJYmdrWjZMVnEyRjdKZ3VNcjZ0U2FSQXJoNUNOeHpnRTF0bkNnWUZhMXBxOWtqaXdsR1hLcE5tQmZ3Wm1qejF4VkJ3VWt3YTI3dE0za1o5QWF6cnFINXlRT2MxbHphSFZ5YXNxekQ1UWFybkJqYk5XNUVJWGsxUWNuZDVZL0doYWtUMDNMZTNLcUFLdklTTGZuRlZMWUI0bFlucFZwenRoSUhXaDdqUzB1Wjg0NUo0clBtTzFnUitWVzVHUEpQU3FNbnpOV2tXYzh5MUpEdHQwbHp5MVJEcm1ybDBkdHJFQVBRVlN6am50VGlaVk5HUHlLVlNSMnBnSXAyYWJSQ0pjOFV4ampCRkprNHpTZ2pHQ09LbDZGRGhNY2dNTTA5WmNuclVKNTlLYTJNOFVDc1hsbHdPRFU2eUxqakFyS3l3NXljVTVaWk83ZlNpeFhNYlVkd1Z4elR2UElOWktOSm5rMVlVa25yUzVSM0wvMmpBejFOSG1OSmdrOGVsVjBCTlRBR29ZMGlVeWtLS2pra3oxbzJFL1Qxb2NoUjA1cG9HUVB4em5KTkpFalNOaFJVaVJHUnM5QlZ6NVlJRGpzS29oczFQQVRsOVcxRkNBZkxWUURqbnFhbDFDSVFhMU1vQlVaemdtcW53NFptMVBVbi9oS0xrL1ZqVjN4S3hHc0habmRJQUtpWHhIZmh2NGR5VFRTWHZUY2NsVStWUFQzcnBaY1RROWVUV0xwMFlqZ1JGQUtxSzA0SjQyY3hxNFlnNElIYXNwNnM3NlNVVnIxS2pCNEpCSEZ4SytRcFBZZXRUcjVOckg1Y1gzdXBZOVNmYzAyZi9rSk8yVGhZMUE5czV6VlIySWs1TlU5ckNqYm1jbUVoM0VuTlUzOUtzWERxbUR1QUI5Nm9QY29ISVVsdlplYWNZbWRXUk1oNXB6MzBFTGJIa0FZZFJtcUR5VHlPSWtBajM5K3BBclFnc2xTTUJWejZrOVNhclJiblB6TnUwVEQwWldSR2hjYldCemcxcXNvSXhWSGZ2dlI1U25lbkRaNEdLdVpmR1NCOU0xRTNkbWxHUExHeUtWMnZseXhTSG9EZzFWdVl0eE5XcnVkSEVrREtRL0dNZnBVREF5UWJYK1JzWU5PenRxQ2E1bll5N3VSVVVESXllS3hwWk5wS3FjNTZtcEoxeGNNcGJJQjY1cUVJTnh3YTZJd1NQTnIxbkpsNnpsd2lnbnFhczNrNWkycW8zRTlRS3lsVjRuQndRZW9yVmlnS1JHV1U1ZHVlYW1jYmFsVWFqbEhsUm15U2tydFBCcUVEYzRGT25iTTVwMXRIdWtKYm9LRm9yajNkaTNjak5wN3JWQUVIcldydDh5QXFCd2VLeUJrTVZQVUhGRUhjV0lqWnBqczg4VktPZzlhaDY4MDRNVGdkNnQ2bk9pWGtnQ2lrQk5QRzAxSlNZeWp2MDRxWGF2SE5NTzJrTWFNWXFSRnlSeG1taGhqcFVpRUEwRDNKQXZIdlU4YW5PS1lqTHh4Vm1QYVJnbnBVTmxKRXFMakhGV0FoS1p4VUtsUXROZVkvZEhTbHVVeWJjY2xlbFYrWkpNbjdvcE41UEdhbGp4Z2VncTByR1VtU0tkdU9LcWFqY0ZMWnVldkZUTytPbFkrb3piMkMxVVZxUTJkYjhQRmFGTHE0TFlSMlZEbi9BRDYxZTE1R2JXL09PQ3FyakE3SHZWandYWUdEUUEwdi9MYkxZOUI2L3JWVnA1WnBiaVNZQXN2eThEZzQ0ckdUYmxkSHNZU0h1Sk12NlhOdk8xVFVPcUpMWjZqSFBDU0M0N0hyVmZSNVFnTGtnQUhQMHAycDZyRmVPa2NLYm5SdUc5ZnBWMG8zbVRqS2lqU2QzWmpKTmVLeVNOTkdSSWNEcGdjVlNrMVlQa2xIay8zdUYvSVZmdTBobVFHZUpkK09lS3JDeEUxdVVpVUxqcHhYZThMSGM4SlpsVWFzeTNHc2MwRWNoaFJXSzlGRk1mNU9RdnVhaWl2NG90dHZMbEpGR0R1cVdRN29uS25QR1FhNFpwcVZqMnFNNHlncExWaWFlcG5rYVFqbGpnZlN1cGp0a2pqVmNkcTUvU0l0bHRBVDNVRTExTVhNWUpOWlMzMU9paXJSdWNTZHNkMENlNDYwOTU0MFV1N0FLT1RWVFZJUzZBS1NDZlN1YmQ1bWRvbmM0VTRJSnFxY09ZeHhGYjJYUTFvTGxiM1ZpNEFDaFR0QnJUY0JsSXdDZlN1WnRaL3NkMkpOdVFPMWRCYTM4RjBTRjRiSFExVlNEV3hPRHJSbGRQYzU3VXJMeW44MUYrVTlRTzFOdElvSmdQa3c2ajg2M0w5VkZwTGowTllVVjFIYTI3WVhNalYwVUpYV3B3WmhSVVplNzFKaEdzbHpHaEhHYXRYZ0N4TVQ5MENxZHJiM1RTUnp1amJTZXRhTTBRdW5ZRGxJK3VPNXJPczA1R21FaTR3czFxYzRpbGl6bnVhczI2OG5pbmlQYTdyNk5VME1ZQVk0NHJKczdJVTdJU0xNYkZjOEdzKy9qTVZ4dkhScXZPck51MjRBOTZpdUlaSklOckRjUnlDS3FKamlJM1ZyRkRPYVE4ODk2WURnNE5QclU4OGVHSVduQmlPS2k1eHhUZ2VhVmlreVRlUWFDMmVhanlTZWFYZHoxcFdLVEhrN1JTNU9CaW01Qlh2aW5JUm1nTGp4SXlnVllqbCtVWk5RQWc4QVZJa1RFOGRLVmtPOWkya3ZIUE5HNHlOZ0NranQrTW5PS2xZZ2NBOFZQS0RsY2NvQ0FHbDM1NlV6akZOWnhHdWYwcXJYSUdYVTRSU283MWtJclhOMGtZejh6QWZoVWwxTVdKSGMxdWVITkx4YXphbE1od0Z4Rm51ZTVyU01HOUVaeW1vNnM5SGo4dTBzVVNNWWpDQkYvTHJYTkNDU043bDNsVmxta1pnb0gzUjJINVZzV2wxSGVXa2V6c0FDUFExVnVZMWZLNDRyamQ0eWFQcDZWT01xY1pJd283YWE0dC9LU1VScWZtSXhuTlN3YWRMYUtzeXpEZmtBREZWMUpHcGVWdVpVVmVSbjNyUmxqWVhNUjh4dkl6Z2tub2UxYlFsSmJIQmlLTk9kK1pHYnFON2R3WGJSWEtqajBIYjFwa2wvSzZvSUdaZjkwNHlhMmI2QmJ4L0xrY2NqZzQ1RlFXMmptSUNUaHR2TzA4VnVzUzdhbm52TFBlOXpZcFhXbFhrOEt6dklyTjM1T1FLdDZYWVNRUU96eXN3Sy9kN1ZaZ3Z2dEc2RXg3R3o5ME5uaXIwbVk3UjQxUnNzTWNEdFdFcWttOVR2bzRTbWxlUFFsMDhLTlBpWWQxSGF0YTJtQWhHUm5tczIyTWEyd2gzREk0QUpxWk42akhYQnJHU3V6c1h1eFNPZDFCY1JCaDJya3BHZVc0bFpGSjU5SzZ2elROWnNyZmZUaHZyV1RiRld2WHdCZzhDcnB2a09YRTAvYXBJekxhUHo1U3BBenRKRmRMYnd3ckFyeG9xNUhZYzFYR2xHSzdTYUVqYVQ4dzlLbnM4b2trSkdDamtENlZWU1NrdEF3bEIwbjd5SXI2THpMZVJRUU1yV05CWkp0akJHWFk4bjBGYmVvTUk3UndPR1liUjlUVmUwaXdRM3B3QlVSbGFKdFdweGMwMzBMTGJiYXo0NmdZQTlUU1FRN0lpaEh6ZC9yU3F2Mm03T2Y5VkFmemFwWS9tbVlZeFRsb3JDcHE4cm1IZHcrVlA1Z0h5dHcxQ1JBS1dyYXVyWlpFWlN1YzFpVDc0Rit5bmtzY0szdFNYdkZUL2Q2OUNHMkJmZWY3eHlLVXl4cUdMRTRBN1ZPNmZaM0FYb0JVVU50bTMzNCs4ZHdCcHUyNUNqSjZJd3JraDVTNmpBcGlzRDFyVnVZMU1MZktBd3JOK3p1MFpsUVpVZFFPMWJwcG84bXRTbENkZ3hTNDRGTlU1RlNBZStSUnNaRFIwR2FObmNjMUp0SDQwQmVjZHFBc05ISFVIRlRxQXhHQVJUUUNPQWFsUm14UU1ralFub0tuUlFvOVRVS014cVJjMGdKV1luak5OVWdVM29hQzRVNVBQdFNzTWV6aFJ1YnBXZlBQem5QTk9ubjZrbjZWRFoyVnpxdDRzRnVoZHp5Y2RGSHFhcEsyNUx1OUNUU3ROazFXK1dJWkVZNWtmMEZlbFJ3d1d0bDVlMExBaTR3UjBGYzNaYWJlV01Ud1c2Tnh5eEhjMWVnZWE3MHFDTm5PNFRnTjc4MTFVWndpbXpucTRhclVtbGJRM2RQdGt0b0Q1WUkzZk5nMVR1WlVqWm5kc0FkVFdqTk9sdkE4akVLaWp2MnJtSWM2dmVNMHBJdHg5MU9tNzNOZWEvZWs1TStzVnFWTlU0N2xPSmpMZFNYQlU0ZHNKOUsycmxTTkltUGZidS9MbW9yaTE4dDBLZ1lVMVl1bURhZk12WXhucDlLcE83T2FjTFJkeWxwODdYVWlGdXE5YTJQTkRTaVBPRlBXdWRnZHJTV09UK0dWUVB4clh0ZDBzbzY4MHByVW1oSjh0aWFIVFFaR1lmS3dQeU5WNTVCTEdwVUFPQnRkZTROVGxmTGFNQS9XcXVwTjluWDdUR3BHUHZZN2lwWHZhRzcvZCs4Tm5nM3RiQVl5Q3hZZjUvR25rUmhpT1Y5Z1RVRUYvQlA1VGlRQWh1UWVvSGVzZTgxcHpkUDVDanl4d0NSMXJSVTVNd25pcWNkYmxTK2xhQzVrampIelNxQVByMHFzeUMzbFFZcTlQSDV1cXhnOGhFTEdvTlRRaGxjOWpVbFcxYk5pMllOQ1BwVk5BQmZ6cjI0YXBOT2ZmRUIzcU5sUDhBYWN1RGdCQURVSld1ZFdqc1ZiMzVybU1OeW95ZnhwV2NSUUZ4L0NQek5SM2d4ZUlQOWswNHA1alc4Ui9pY0VqNmMxVVRDbzlXYU52QjVGc3Evd0FXTXQ2NXFGVHR1aDJCcThCbHF6WjhwY2Z5cE4zTFVlVkl2eXJuR01WajZ2aUkyOG1PajgxdFJNSFFBam5IV3M3VW94UGVSUTRPRlVzZjVVNmVyREVQOTJWTHlOV2dTUmZ4cXhCQ3ZsSWNjYmVCVVVTbVd4a2hiTzVDUVB3cWV4YmZhai9aT09hVXJsVWJPek0yL3QwR1dCQXlPZUtwV3ErUkdRMkJnOWZXdFRVbC9jNUhUT0tyWG1uTkxIR3lOZ0RHNFU0dlRVaXZTdk84VVoxMXA2eWt6VzMzanlVN0g2VlIzRVpEQWdqcm10eFFFT0hIQTlLaXVMYU82R2R2emRtSFdxalV0b3pocTRPL3ZSM01vZW9wUWZhcFpiT2FJa2hTeWVxODFBQ2NuUGF0VTA5amdsR1VYWm9sQUdENjFJbzRxSkdYSFBGUERLTWZOUVRjbVRpcE8zcFZYemdwNHByVEVqa2lnTGxsNVZVWUhKOWFyU3pqSFhtb3pJU2RxQXN4NkFESnJYMHp3dmQzN2lTOExXMEhvUjg3ZlFkdnhvYlMxWlVZU2s3SkdicCttWGVzWFBsMjZIYVB2eUg3cUQzcjBmUjlJZzBxeUVVQXlHT1pKRDFjL3dDRlMydGxiMk5qNU52RDVjU25oZTVQcVRVczkwa01lZHdVQWMrMVl1Ym5zZXJSd3FwTG1sdVY3dTh0N1A3WmRTSGdNQUIzWTRBQUgrZldzK0RVclVHTjBRNVQ1aEdveVM1N0Q5YW9YRC9hNW5Mc1dRc1NBZmVzNjRoOGs3MWtLODhjMXZDbHBkbkxVeHI1clJXaU9pbmdtdTBNbDYzdXNLL2RYNitwcGxoSDVjbWVuUFNzdlRHdjdwLzljM2txZm1MYy9oVzFiS0JJZnJXVTA5anVvVkZOYzFpelBqeWowckdsdUQ5bWtRODd5RUg0MXRTamRHUUt4a2lFdXB4UWcvNnM3Mjl2U29wb3JFUHNTWGxtVGE3VkhLcmtmaFdscEE4MVkzSGRlYW5hTDVjNDYwM1FWQ1d6S09pdVY0K3ROdThXS01PV2FOUmdCbW9wNHhMQXlzTWdqQkZUc2VCVVp3cU1Ud01jMUVkenBxUnZHek9RdGJRUzNzdHNYMk9BY0UrdFg3ZlFJeEYrL1ltUW5uYWVLcVJYVU1tc3ZjazdZOGtqanIyRmJDYWpCSXU1WkZ4WHVVSXdjZmVQaU1aS3BHbytUWXlyWlExM2N5K2hDRDhQL3dCZFFhbHRsaFlyZ2tlbEtzLzJYVFhuSTViTGZuV0ZhMzdJN0xLY28vWDJOZVFvT1R1ZlV5cnhwcFJmVTFkTnVWaVVzeDRRYzFvV3NUR0JyaVFZZWR0LzBIWVZ6MXVSSmNKR0RoV1lacnIzQThnQWRBTUNvbm9qb3d6NTM1SXdib0U2Z2k0SDNDZXRQalhPb1FEUEFVbWxrVGRxWTY0OHMvbm1pSC9rSkFlaUUvclF0aFNXcjlUV1VESE5abCtwM3F3OWEwUmtxYXAzeS91czk4MUhVM2E5MG1nZkVXN1BBSGVzV1hVRERmbTRQK3JrNC9BVmNlVnBZa3RZejg4bjNqL2RIZXFmaUMxRVZwQVU0Q25GYlUxWjZuRmlaT1VieDZGMnlaSmJxNTJuS3R0WWZpS1pweHhlWGNCNDJOd0t4OUt2dnNVaDMvY2ZxZlNoZFYrelgwMHNXSE1oNHpWU3BPK2hsU3hjVkZObXpxVU9iWngrTk90aUpyUlBwVExXU1c3c3hKTGdsZ2VncVBTV0lqa2lQVkc0ckNTYTBQUXBUVXBjNjZrVnpBUzUyZ2JzZEtwQ2J5bndUdFBvYTNwNE4yU090WVYxRXd1NC9OR1ZIQlByNlVRdExSaXhGNDZ4SmhQQzJON2NucGppb0pyQjdtWlBMaERMMU9PcHJObTNRM1BHUnRhdXRzVU0wcGRtYVBBQVhhUjZWVmxIVkhGVWs2ajVXakRtMEM1Mi91YmFYSjlTTWZ6cU1lSE5UUFBrcXZzemdWMm9qd3ZNak45ZUtjNWdCd3dISXh5YVBhc2xZS01ucXpqRThMNmc0eTdReGovYWJQOEFJVmIwdnc3YTNBWjU1SlpBdkJWT0FUOWEzTDI5dDdleWtDS3BrWUZWQUhVbXB0UGFLMnNvNFdaUVNNbjYxWE8rVzdDT0VoN1JSV3FGU3dpdElGRnJDa0M1R2RnNVAxUGVyOFFqalF0enVJNms1cXRQZENLRExzRVVkV1k0Rk9qWXlxQ0Q4dU1na1kvU3NOWHVlbkdFWS9DaVkzTEpHMjdPMERQdWE1VnRRbjFDNFlzZHNhL2RRZEIvaWExcjZDVUZwYlZqdkkrZGY3MVlsdHA4OHBVZzdGZDlnUFRtdXVqRkxVOHZIVkp5dEJJczVDakM5YXBUaFd1b3hJVHNKSFN0U1h3OWNScUdpblZtNjQ1RlpkMVozcUVHV0YrTzRHUitsYktjWHN6Z2xRcVExbEU2b0pIRENxUnFCR0J4aXN2VUlaL0xhZTNrWlN2SkFQYXIyblQvQUduVG8ySU84Zkt3UHFLaHZwdnN0cTVBeTcvS0FLNWxmbVBWbGIyTjFzWWNlcDN6QWdTTWUxUDB1K1cwdkdlYk9YNEpQYW9vMWxnK2N4Tmc5Y2lvWmY4QVNMaFZqWDVtd0I3bXVteXNlUnp6VXIzTzhTZUdlRGVqZ3I3VXVoeC82R1pDYzczWnYxcm1yZlRMNjNna21MZVdxS1NSdTYvaFhWYVpFMEZqQ2hJeW9HY0N1YWNWRmFIc1llcktySmN5dFl0U2NITlp1cUpjVFdvZ3QxenZQek1UMEZhTXB5dlhwVVFJWmdNL0tLempvN25iVVNsSGxPZU9nQ0JZdk5sRFBKSUYycm5wM3JHdkxSNEx1U01FZ0E4WnJyNW5NdXFReFpHMkpESWZxZUIvS29yaTNqbG1MT3FrKzRyb1ZacmM4eVdCaEsvS2YvL1o="
            ],
            "last_name": "Aguma",
            "first_name": "Abdullahi",
            "farmer_id": "GEOFILE_TEST_001_584",
             "farmer_bvn": 22218XXXXXX,
            "allocation": 9,
            "photo_url": ""
         },
      ]
   }
}

Select the Geo-file

Select a geofile in any of these 4 formats .kml / .kmz / .gpx / .shp. Ensure that the name of the file exactly matches the agc_id value in the JSON payload that was just previously POSTed. ie., if the agc_id is AGC_0001A", then the file name must be: AGC_0001A.kmlor AGC_0001A.kmz.


Upload the Geo-file

Using Postman, set the form-datakey value to file(see the graphic below).

Geo-file Postman Upload Example

Send a POST request to -

https://geoclusters.herokuapp.com/api/v2/geofiles/geofile/upload/


Geo-file Parcelization Response

If parcelization is successful, you'll get a success message from the API. However, if land size validation fails, or any other validation fails, you'll get an informative message of why it failed.


Legacy AGCs

Retreive Legacy AGC Data

// To download all the data, send a FETCH request to-
https://geoclusters.herokuapp.com/api/v2/legacy-agcs/

// To limit the fields in each call, use-
https://geoclusters.herokuapp.com/api/v2/legacy-agcs/?fields=properties.geo_cluster_id,properties.geo_cluster_name,features.properties.plot_owner_bvn

Returning a Processed Legacy AGC

To return back legacy AGC data that has been successfully processed (ie., the farmer base64 image strings, and other biometric info. has been acquired from NIBBS), send a POST request to-

https://geoclusters.herokuapp.com/api/v2/legacy-agcs/legacy-agc/processed/

Processed Legacy AGC JSON Data StructureUpdated

After acquiring the farmers' biometric data from NIBBS, use the following JSON structure to return a successfully processed legacy AGC back to our database.

Populate the unprocessed_farmersarray with BVNs for farmers whose base64 image strings you were unable to acquire for that particular legacy AGC.

{
   "agc_name": "warwade",
   "agc_id": ": "warwade_dutse_99250",
   "processing_metadata": {
      "unprocessed_farmers": [""]
   },
   "farmers": [
      {
         "farmer_id": "warwade_dutse_99250-001",
         "farmer_bvn": 22218XXXXXX,
         "farmer_last_name": "Belema",
         "farmer_first_name": "Moses",
         "farmer_photo_base64": "LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQW..",
         "farmer_dob": "1956-03-02",
         "farmer_id_document_type": "National Voters Card",
         "farmer_id_document_no": "1234567890",
         "farmer_country_origin": "Nigeria",
         "farmer_state_origin": "Kogi",
         "farmer_lga_origin": "Farade",
         "farmer_home_address": "Plot 123 Rockview Estate, Lokoja, Kogi State",
      },
      {
         "farmer_id": "warwade_dutse_99250--2",
         "farmer_bvn": 22219XXXXXX,
         "farmer_last_name": "Columbo",
         "farmer_first_name": "Sotonye",
         "farmer_photo_base64": "LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQWd..",
         "farmer_dob": "1956-03-02",
         "farmer_id_document_type": "National Voters Card",
         "farmer_id_document_no": "1234567890",
         "farmer_country_origin": "Nigeria",
         "farmer_state_origin": "Ogun",
         "farmer_lga_origin": "Osugbe",
         "farmer_home_address": "Plot 123 Hillcrest Industrial Park, Ore, Ogun State",
      },
      {
         "farmer_id": "warwade_dutse_99250--3",
         "farmer_bvn": 2220XXXXXXX,
         "farmer_last_name": "Adako",
         "farmer_first_name": "Justice",
         "farmer_photo_base64": "LzlqLzRBQVFTa1pKUmdBQkFnQUFBUUFCQUFELzJ3QkRBQWdH..",
         "farmer_dob": "1956-03-02",
         "farmer_id_document_type": "National Identity Card",
         "farmer_id_document_no": "1234567890",
         "farmer_country_origin": "Nigeria",
         "farmer_state_origin": "Adamawa",
         "farmer_lga_origin": "Dutse",
         "farmer_home_address": "No. 5 DDPA Housing Estate, Adamawa",
      }
   ]
}