Let’s try to map the movement of Freelancer drivers in Dhaka. We can divide the area into three zones – North Dhaka, Middle Dhaka and South Dhaka.
The movement of drivers from one zone to another zone will depend only on their current zone. We’ve determined the following probabilities for the movement of a driver:
- Among the North Dhaka’s Freelancer drivers, 30% will remain in North Dhaka, 30% will move to Middle Dhaka, while the remaining 40% will go to South Dhaka.
- Of all the drivers in Middle Dhaka, 50% and 30% will move to North Dhaka and South Dhaka, respectively; 20% will remain in Middle Zone.
- In the South Dhaka, drivers have a 40% chance of moving to North Dhaka, 40% chance of staying in the South Dhaka; 20% drivers will move to Middle Dhaka.
Once a driver is in a particular zone, he can either move to the next zone or stay back in the same zone. His movement will be decided only by his current state and not the sequence of past states.
The state space in this example includes North Dhaka, South Dhaka and Middle Dhaka. It follows all the properties of Markov Chains because the current state has the power to predict the next stage.
> zone <- c("North","Middle","South")
> zoneTPM <- matrix(c(0.3,0.3,0.4,
+ 0.5,0.2,0.3,
+ 0.4,0.2,0.4),
+ nrow=3, byrow=T, dimnames = list(zone,zone))
> zoneTPM
North Middle South
North 0.3 0.3 0.4
Middle 0.5 0.2 0.3
South 0.4 0.2 0.4
Using markovchain package
The package named “markovchain” can help us in implementing Markov Chains in R.
Install and load the package in R -
> # install.packages("markovchain")
> library(markovchain)
Now using create a Markov Chain object -
> driverzone <- new("markovchain",
+ states = zone,
+ transitionMatrix = zoneTPM,
+ name = "Driver Movement")
> driverzone
Driver Movement
A 3 - dimensional discrete Markov Chain defined by the following states:
North, Middle, South
The transition matrix (by rows) is defined as follows:
North Middle South
North 0.3 0.3 0.4
Middle 0.5 0.2 0.3
South 0.4 0.2 0.4
Using diagram package
To plot the above transition matrix we can use R package, “diagram.” The “diagram” package has a function called plotmat() that can help us plot a state space diagram of the transition matrix in an easy-to-understand manner.
Install and load the package -
> # install.packages("diagram")
> library(diagram)
Now to plot the transition probability diagram -
> plotmat(A = zoneTPM,
+ box.type = "circle", # shape of box
+ box.lwd = 1, # border density of box
+ relsize = 0.9, # scaling factor for size of graph
+ cex.txt = 0.7, # size of probabilities
+ lwd = 1, # border density of state to state arrows
+ lcol = "black",
+ box.col = "cornsilk1",
+ box.size = 0.1, # size of box
+ box.prop = 0.6, # height to width ratio of box
+ arr.length = 0.5, arr.width = 0.2,
+ self.cex = 0.5, # size of self probability box
+ self.shifty = -0.03, self.shiftx = 0.13, # location of self prob. box
+ # name = c("North Dhaka","Middle Dhaka","South Dhaka"), # Optional
+ main = "Transition Diagram",
+ cex.main = 1.3 # relative size of main title
+ )

The above Markov Chain can be used to answer some of the future state questions.
Question: Assuming that a driver is currently in the North Zone, what is the probability that the driver will again be in the North Zone after two trips?
Get R Programming assignment help at www.homeworkhelponline.net.
Answer:
Manually: A driver can reach the North Zone again in his second trip in three different ways: 1. Staying in the same zone i.e. North Dhaka to North Dhaka Probability: P(N-N) = 0.30.3 = 0.09 2. Middle Dhaka to North Dhaka Probability: P(M-N) = 0.40.4 = 0.12 3. South Dhaka to North Dhaka Probability: P(S-N) = 0.5*0.4 = 0.2
Therefore, Probability of second trip to North = 0.09 + 0.12 + 0.20 = 0.41 (0.40 approximately)
Using Markov Chain in R:
> driverzone^2
Driver Movement^2
A 3 - dimensional discrete Markov Chain defined by the following states:
North, Middle, South
The transition matrix (by rows) is defined as follows:
North Middle South
North 0.40 0.23 0.37
Middle 0.37 0.25 0.38
South 0.38 0.24 0.38
This gives us the direct probability of a driver coming back to the North Zone after two trips.
The calculation can be done for subsequent trips as well. The probability of coming back to North Zone in 4th trip :
> driverzone^3
Driver Movement^3
A 3 - dimensional discrete Markov Chain defined by the following states:
North, Middle, South
The transition matrix (by rows) is defined as follows:
North Middle South
North 0.383 0.240 0.377
Middle 0.388 0.237 0.375
South 0.386 0.238 0.376
However if we increase n (No. of trips) the predictive power tends to go down, where the Markov Chain reaches an equilibrium called stationary state. In the above case, after 9 trips the state becomes stationary -
> driverzone^9
Driver Movement^9
A 3 - dimensional discrete Markov Chain defined by the following states:
North, Middle, South
The transition matrix (by rows) is defined as follows:
North Middle South
North 0.3853211 0.2385321 0.3761468
Middle 0.3853211 0.2385321 0.3761468
South 0.3853211 0.2385321 0.3761468
The stationary state can be calculated using some linear algebra methods; however, R has a direct function, steadyStates() -
> steadyStates(driverzone)
North Middle South
[1,] 0.3853211 0.2385321 0.3761468
So we can say that, in the stationary state, a driver has a probability of 0.385 of ending up in the North Dhaka.
If there were 100 drivers in all and each completes 9 trips in a day, how many of them will end up in the Middle Dhaka?
> steadyStates(driverzone)*100
North Middle South
[1,] 38.53211 23.85321 37.61468
So, around 38 drivers will end up in North Dhaka, 24 in the Middle Dhaka and 37 in the South Dhaka.
This is a replication of this article. Thanks to author CHAITANYA SAGAR.
LS0tDQp0aXRsZTogIk1hcmtvdiBDaGFpbnMiDQphdXRob3I6ICJNRCBBSFNBTlVMIElTTEFNIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0aGVtZTogY2VydWxlYW4NCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgaW5jbHVkZXM6DQogICAgICAgaW5faGVhZGVyOiBHQV9TY3JpcHQuaHRtbA0KLS0tDQo8IS0taHRtbF9wcmVzZXJ2ZS0tPg0KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9Ry01RUtKRDJIWjVQIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOw0KICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9DQogIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7DQoNCiAgZ3RhZygnY29uZmlnJywgJ0ctNUVLSkQySFo1UCcpOw0KPC9zY3JpcHQ+DQo8IS0tL2h0bWxfcHJlc2VydmUtLT4NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoDQogIGNvbW1lbnQgPSAiIiwgcHJvbXB0ID0gVFJVRSwgbWVzc2FnZT1GLCB3YXJuaW5nID0gRg0KKQ0KYGBgDQoNCi0tLQ0KDQpMZXTigJlzIHRyeSB0byBtYXAgdGhlIG1vdmVtZW50IG9mIEZyZWVsYW5jZXIgZHJpdmVycyBpbiBEaGFrYS4gV2UgY2FuIGRpdmlkZSB0aGUgYXJlYSBpbnRvIHRocmVlIHpvbmVzIOKAkyBOb3J0aCBEaGFrYSwgTWlkZGxlIERoYWthIGFuZCBTb3V0aCBEaGFrYS4gICANClRoZSBtb3ZlbWVudCBvZiBkcml2ZXJzIGZyb20gb25lIHpvbmUgdG8gYW5vdGhlciB6b25lIHdpbGwgZGVwZW5kIG9ubHkgb24gdGhlaXIgY3VycmVudCB6b25lLiBXZeKAmXZlIGRldGVybWluZWQgdGhlIGZvbGxvd2luZyBwcm9iYWJpbGl0aWVzIGZvciB0aGUgbW92ZW1lbnQgb2YgYSBkcml2ZXI6DQoNCiogQW1vbmcgdGhlIE5vcnRoIERoYWthJ3MgRnJlZWxhbmNlciBkcml2ZXJzLCAzMCUgd2lsbCByZW1haW4gaW4gTm9ydGggRGhha2EsIDMwJSB3aWxsIG1vdmUgdG8gTWlkZGxlIERoYWthLCB3aGlsZSB0aGUgcmVtYWluaW5nIDQwJSB3aWxsIGdvIHRvIFNvdXRoIERoYWthLg0KKiBPZiBhbGwgdGhlIGRyaXZlcnMgaW4gTWlkZGxlIERoYWthLCA1MCUgYW5kIDMwJSB3aWxsIG1vdmUgdG8gTm9ydGggRGhha2EgYW5kIFNvdXRoIERoYWthLCByZXNwZWN0aXZlbHk7IDIwJSB3aWxsIHJlbWFpbiBpbiBNaWRkbGUgWm9uZS4NCiogSW4gdGhlIFNvdXRoIERoYWthLCBkcml2ZXJzIGhhdmUgYSA0MCUgY2hhbmNlIG9mIG1vdmluZyB0byBOb3J0aCBEaGFrYSwgNDAlIGNoYW5jZSAgb2Ygc3RheWluZyBpbiB0aGUgU291dGggRGhha2E7ICAyMCUgZHJpdmVycyB3aWxsIG1vdmUgdG8gTWlkZGxlIERoYWthLg0KDQpPbmNlIGEgZHJpdmVyIGlzIGluIGEgcGFydGljdWxhciB6b25lLCBoZSBjYW4gZWl0aGVyIG1vdmUgdG8gdGhlIG5leHQgem9uZSBvciBzdGF5IGJhY2sgaW4gdGhlIHNhbWUgem9uZS4gSGlzIG1vdmVtZW50IHdpbGwgYmUgZGVjaWRlZCBvbmx5IGJ5IGhpcyBjdXJyZW50IHN0YXRlIGFuZCBub3QgdGhlIHNlcXVlbmNlIG9mIHBhc3Qgc3RhdGVzLiAgDQpUaGUgc3RhdGUgc3BhY2UgaW4gdGhpcyBleGFtcGxlIGluY2x1ZGVzIE5vcnRoIERoYWthLCBTb3V0aCBEaGFrYSBhbmQgTWlkZGxlIERoYWthLiBJdCBmb2xsb3dzIGFsbCB0aGUgcHJvcGVydGllcyBvZiBNYXJrb3YgQ2hhaW5zIGJlY2F1c2UgdGhlIGN1cnJlbnQgc3RhdGUgaGFzIHRoZSBwb3dlciB0byBwcmVkaWN0IHRoZSBuZXh0IHN0YWdlLg0KDQpgYGB7cn0NCnpvbmUgPC0gYygiTm9ydGgiLCJNaWRkbGUiLCJTb3V0aCIpDQp6b25lVFBNIDwtIG1hdHJpeChjKDAuMywwLjMsMC40LA0KICAgICAgICAgICAgICAgICAgICAwLjUsMC4yLDAuMywNCiAgICAgICAgICAgICAgICAgICAgMC40LDAuMiwwLjQpLCANCiAgICAgICAgICAgICAgICAgIG5yb3c9MywgYnlyb3c9VCwgZGltbmFtZXMgPSBsaXN0KHpvbmUsem9uZSkpDQp6b25lVFBNDQpgYGANCg0KIyMgVXNpbmcgYG1hcmtvdmNoYWluYCBwYWNrYWdlDQoNClRoZSBwYWNrYWdlIG5hbWVkIOKAnG1hcmtvdmNoYWlu4oCdIGNhbiBoZWxwIHVzIGluIGltcGxlbWVudGluZyBNYXJrb3YgQ2hhaW5zIGluIFIuDQoNCkluc3RhbGwgYW5kIGxvYWQgdGhlIHBhY2thZ2UgaW4gUiAtIA0KYGBge3IsIHdhcm5pbmc9Rn0NCiMgaW5zdGFsbC5wYWNrYWdlcygibWFya292Y2hhaW4iKQ0KbGlicmFyeShtYXJrb3ZjaGFpbikNCmBgYA0KDQpOb3cgdXNpbmcgY3JlYXRlIGEgTWFya292IENoYWluIG9iamVjdCAtDQpgYGB7cn0NCmRyaXZlcnpvbmUgPC0gbmV3KCJtYXJrb3ZjaGFpbiIsDQogICAgICAgICAgICAgICAgICBzdGF0ZXMgPSB6b25lLA0KICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbk1hdHJpeCA9IHpvbmVUUE0sDQogICAgICAgICAgICAgICAgICBuYW1lID0gIkRyaXZlciBNb3ZlbWVudCIpDQpkcml2ZXJ6b25lDQpgYGANCg0KIyMgVXNpbmcgYGRpYWdyYW1gIHBhY2thZ2UNCg0KVG8gcGxvdCB0aGUgYWJvdmUgdHJhbnNpdGlvbiBtYXRyaXggd2UgY2FuIHVzZSBSIHBhY2thZ2UsIOKAnGRpYWdyYW0u4oCdIFRoZSDigJxkaWFncmFt4oCdIHBhY2thZ2UgaGFzIGEgZnVuY3Rpb24gY2FsbGVkIGBwbG90bWF0KClgIHRoYXQgY2FuIGhlbHAgdXMgcGxvdCBhIHN0YXRlIHNwYWNlIGRpYWdyYW0gb2YgdGhlIHRyYW5zaXRpb24gbWF0cml4IGluIGFuIGVhc3ktdG8tdW5kZXJzdGFuZCBtYW5uZXIuDQoNCkluc3RhbGwgYW5kIGxvYWQgdGhlIHBhY2thZ2UgLQ0KYGBge3IsIHdhcm5pbmc9Rn0NCiMgaW5zdGFsbC5wYWNrYWdlcygiZGlhZ3JhbSIpDQpsaWJyYXJ5KGRpYWdyYW0pDQpgYGANCg0KTm93IHRvIHBsb3QgdGhlIHRyYW5zaXRpb24gcHJvYmFiaWxpdHkgZGlhZ3JhbSAtDQpgYGB7cn0NCnBsb3RtYXQoQSA9IHpvbmVUUE0sDQogICAgICAgIGJveC50eXBlID0gImNpcmNsZSIsICAgICAgICAgICMgc2hhcGUgb2YgYm94DQogICAgICAgIGJveC5sd2QgPSAxLCAgICAgICAgICAgICAgICAgICMgYm9yZGVyIGRlbnNpdHkgb2YgYm94DQogICAgICAgIHJlbHNpemUgPSAwLjksICAgICAgICAgICAgICAgICMgc2NhbGluZyBmYWN0b3IgZm9yIHNpemUgb2YgZ3JhcGgNCiAgICAgICAgY2V4LnR4dCA9IDAuNywgICAgICAgICAgICAgICAgIyBzaXplIG9mIHByb2JhYmlsaXRpZXMNCiAgICAgICAgbHdkID0gMSwgICAgICAgICAgICAgICAgICAgICAgIyBib3JkZXIgZGVuc2l0eSBvZiBzdGF0ZSB0byBzdGF0ZSBhcnJvd3MNCiAgICAgICAgbGNvbCA9ICJibGFjayIsDQogICAgICAgIGJveC5jb2wgPSAiY29ybnNpbGsxIiwNCiAgICAgICAgYm94LnNpemUgPSAwLjEsICAgICAgICAgICAgICAgIyBzaXplIG9mIGJveA0KICAgICAgICBib3gucHJvcCA9IDAuNiwgICAgICAgICAgICAgICAjIGhlaWdodCB0byB3aWR0aCByYXRpbyBvZiBib3gNCiAgICAgICAgYXJyLmxlbmd0aCA9IDAuNSwgYXJyLndpZHRoID0gMC4yLA0KICAgICAgICBzZWxmLmNleCA9IDAuNSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2l6ZSBvZiBzZWxmIHByb2JhYmlsaXR5IGJveA0KICAgICAgICBzZWxmLnNoaWZ0eSA9IC0wLjAzLCBzZWxmLnNoaWZ0eCA9IDAuMTMsICMgbG9jYXRpb24gb2Ygc2VsZiBwcm9iLiBib3gNCiAgICAgICAgIyBuYW1lID0gYygiTm9ydGggRGhha2EiLCJNaWRkbGUgRGhha2EiLCJTb3V0aCBEaGFrYSIpLCAgIyBPcHRpb25hbA0KICAgICAgICBtYWluID0gIlRyYW5zaXRpb24gRGlhZ3JhbSIsDQogICAgICAgIGNleC5tYWluID0gMS4zICAgICAgICAgICAgICAgICMgcmVsYXRpdmUgc2l6ZSBvZiBtYWluIHRpdGxlDQogICAgICAgICkNCmBgYA0KDQoNClRoZSBhYm92ZSBNYXJrb3YgQ2hhaW4gY2FuIGJlIHVzZWQgdG8gYW5zd2VyIHNvbWUgb2YgdGhlIGZ1dHVyZSBzdGF0ZSBxdWVzdGlvbnMuDQoNCi0tLQ0KDQoqKlF1ZXN0aW9uOioqIEFzc3VtaW5nIHRoYXQgYSBkcml2ZXIgaXMgY3VycmVudGx5IGluIHRoZSBOb3J0aCBab25lLCB3aGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBkcml2ZXIgd2lsbCBhZ2FpbiBiZSBpbiB0aGUgTm9ydGggWm9uZSBhZnRlciB0d28gdHJpcHM/DQoNCioqKg0KDQpHZXQgUiBQcm9ncmFtbWluZyBhc3NpZ25tZW50IGhlbHAgYXQgW3d3dy5ob21ld29ya2hlbHBvbmxpbmUubmV0XShodHRwczovL3d3dy5ob21ld29ya2hlbHBvbmxpbmUubmV0L3Byb2dyYW1taW5nL3ItcHJvZ3JhbW1pbmcgIlIgcHJvZ3JhbW1pbmcgaG9tZXdvcmsgaGVscCIpLg0KDQoqKioNCg0KKipBbnN3ZXI6KiogDQoNCk1hbnVhbGx5Og0KQSBkcml2ZXIgY2FuIHJlYWNoIHRoZSBOb3J0aCBab25lIGFnYWluIGluIGhpcyBzZWNvbmQgdHJpcCBpbiB0aHJlZSBkaWZmZXJlbnQgd2F5czoNCjEuIFN0YXlpbmcgaW4gdGhlIHNhbWUgem9uZSBpLmUuIE5vcnRoIERoYWthIHRvIE5vcnRoIERoYWthDQpQcm9iYWJpbGl0eTogUChOLU4pID0gMC4zKjAuMyA9IDAuMDkNCjIuIE1pZGRsZSBEaGFrYSB0byBOb3J0aCBEaGFrYQ0KUHJvYmFiaWxpdHk6IFAoTS1OKSA9IDAuNCowLjQgPSAwLjEyDQozLiBTb3V0aCBEaGFrYSB0byBOb3J0aCBEaGFrYQ0KUHJvYmFiaWxpdHk6IFAoUy1OKSA9IDAuNSowLjQgPSAwLjINCg0KVGhlcmVmb3JlLCBQcm9iYWJpbGl0eSBvZiBzZWNvbmQgdHJpcCB0byBOb3J0aCA9IDAuMDkgKyAwLjEyICsgMC4yMCA9IDAuNDEgKDAuNDAgYXBwcm94aW1hdGVseSkNCg0KVXNpbmcgTWFya292IENoYWluIGluIFI6DQpgYGB7cn0NCmRyaXZlcnpvbmVeMg0KYGBgDQpUaGlzIGdpdmVzIHVzIHRoZSBkaXJlY3QgcHJvYmFiaWxpdHkgb2YgYSBkcml2ZXIgY29taW5nIGJhY2sgdG8gdGhlIE5vcnRoIFpvbmUgYWZ0ZXIgdHdvIHRyaXBzLg0KDQpUaGUgY2FsY3VsYXRpb24gY2FuIGJlIGRvbmUgZm9yIHN1YnNlcXVlbnQgdHJpcHMgYXMgd2VsbC4gVGhlIHByb2JhYmlsaXR5IG9mIGNvbWluZyBiYWNrIHRvIE5vcnRoIFpvbmUgaW4gNHRoIHRyaXAgOg0KYGBge3J9DQpkcml2ZXJ6b25lXjMNCmBgYA0KDQoNCkhvd2V2ZXIgaWYgd2UgaW5jcmVhc2UgbiAoTm8uIG9mIHRyaXBzKSB0aGUgcHJlZGljdGl2ZSBwb3dlciB0ZW5kcyB0byBnbyBkb3duLCB3aGVyZSB0aGUgTWFya292IENoYWluIHJlYWNoZXMgYW4gZXF1aWxpYnJpdW0gY2FsbGVkIGBzdGF0aW9uYXJ5IHN0YXRlYC4gDQpJbiB0aGUgYWJvdmUgY2FzZSwgYWZ0ZXIgOSB0cmlwcyB0aGUgc3RhdGUgYmVjb21lcyBzdGF0aW9uYXJ5IC0gDQpgYGB7cn0NCmRyaXZlcnpvbmVeOQ0KYGBgDQoNClRoZSBzdGF0aW9uYXJ5IHN0YXRlIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIHNvbWUgbGluZWFyIGFsZ2VicmEgbWV0aG9kczsgaG93ZXZlciwgUiBoYXMgYSBkaXJlY3QgZnVuY3Rpb24sIGBzdGVhZHlTdGF0ZXMoKWAgLSANCmBgYHtyfQ0Kc3RlYWR5U3RhdGVzKGRyaXZlcnpvbmUpDQpgYGANClNvIHdlIGNhbiBzYXkgdGhhdCwgaW4gdGhlIHN0YXRpb25hcnkgc3RhdGUsIGEgZHJpdmVyIGhhcyBhIHByb2JhYmlsaXR5IG9mIDAuMzg1IG9mIGVuZGluZyB1cCBpbiB0aGUgTm9ydGggRGhha2EuDQoNCioqSWYgdGhlcmUgd2VyZSAxMDAgZHJpdmVycyBpbiBhbGwgYW5kIGVhY2ggY29tcGxldGVzIDkgdHJpcHMgaW4gYSBkYXksIGhvdyBtYW55IG9mIHRoZW0gd2lsbCBlbmQgdXAgaW4gdGhlIE1pZGRsZSBEaGFrYT8qKg0KDQpgYGB7cn0NCnN0ZWFkeVN0YXRlcyhkcml2ZXJ6b25lKSoxMDANCmBgYA0KU28sIGFyb3VuZCAzOCBkcml2ZXJzIHdpbGwgZW5kIHVwIGluIE5vcnRoIERoYWthLCAyNCBpbiB0aGUgTWlkZGxlIERoYWthIGFuZCAzNyBpbiB0aGUgU291dGggRGhha2EuDQoNCi0tLQ0KDQpUaGlzIGlzIGEgcmVwbGljYXRpb24gb2YgW3RoaXMgYXJ0aWNsZV0oaHR0cHM6Ly9kYXRhY29ub215LmNvbS8yMDE4LzAzL2FuLWludHJvZHVjdGlvbi10by1tYXJrb3YtY2hhaW5zLXVzaW5nLXIvIzp+OnRleHQ9SW4lMjB0aGUlMjBhYm92ZSUyMGNvZGUlMkMlMjBEcml2ZXJab25lLGltcGxlbWVudGluZyUyME1hcmtvdiUyMENoYWlucyUyMGluJTIwUi4pLiBUaGFua3MgdG8gYXV0aG9yIFtDSEFJVEFOWUEgU0FHQVJdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9jaGFpdGFueWFzYWdhci8pLg==