This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

library(rgamer)
library(utf8)
game0<- normal_form(players = c("S","s"),
                    s1=c("A","B"),
                    s2=c("A","B"),
                    cells = list(c(3,3),
                                 c(0,1),
                                 c(1,1),
                                 c(2,3)),
                                 byrow = T)

s_game0<- solve_nfg(game0,show_table = T,mixed = TRUE)
s_game0$br_plot
game01<- normal_form(players = c("S","s"),
                    s1=c("A","B"),
                    s2=c("a","b"),
                    cells = list(c(3,2),
                                 c(5,5),
                                 c(0,0),
                                 c(7,4)),
                    byrow = T)

s_game01<- solve_nfg(game01,show_table = T)#mixed = TRUE)
Pure-strategy NE: [B, b]
s
strategy a b
S A 3^, 2 5, 5^
B 0, 0 7^, 4^
s_game01$br_plot



game02<- normal_form(players = c("j1","j2"),
                     s1=c("Alto","Baixo"),
                     s2=c("Esquerda","Direita"),
                     cells = list(c(4,2),
                                  c(-1,0),
                                  c(0,-1),
                                  c(1,3)),
                     byrow = T)

s_game02<- solve_nfg(game02,show_table = T,mixed = TRUE)
Pure-strategy NE: [Alto, Esquerda], [Baixo, Direita]

Mixed-strategy NE: [(2/3, 1/3), (1/3, 2/3)]

The obtained mixed-strategy NE might be only a part of the solutions.
Please examine br_plot (best response plot) carefully.
j2
strategy Esquerda Direita
j1 Alto 4^, 2^ -1, 0
Baixo 0, -1 1^, 3^
s_game02$br_plot



game03<- normal_form(players = c("Mulher","Homem"),
                     s1=c("Jantar","Cinema"),
                     s2=c("Jantar","Cinema"),
                     cells = list(c(4,3),
                                  c(1,1),
                                  c(1,1),
                                  c(3,4)),
                     byrow = T)

s_game03<- solve_nfg(game03,show_table = T,mixed = TRUE)
Pure-strategy NE: [Jantar, Jantar], [Cinema, Cinema]

Mixed-strategy NE: [(3/5, 2/5), (2/5, 3/5)]

The obtained mixed-strategy NE might be only a part of the solutions.
Please examine br_plot (best response plot) carefully.
Homem
strategy Jantar Cinema
Mulher Jantar 4^, 3^ 1, 1
Cinema 1, 1 3^, 4^
s_game03$br_plot


jogo4 <- normal_form(
  players = c("A", "B"),
  s1 = c("Producao_alta", "Producao_baixa"), 
  s2 = c("Producao_alta", "Producao_baixa"), 
  cells = list(c(8,8),
               c(12,6),
               c(6,12),
               c(10,10)),
  byrow = T)

 s_jogo4 <- solve_nfg(jogo4, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [Producao_alta, Producao_alta]

The payoff matrix is degenerate; No full support mixed-strategy NE exist (or infinitely many exist).
Please examine br_plot (best response plot).
B
strategy Producao_alta Producao_baixa
A Producao_alta 8^, 8^ 12^, 6
Producao_baixa 6, 12^ 10, 10
  s_jogo4$br_plot

  
  
politica<- normal_form( 
  players = c("AB","CD"),
  s1=c("Moderado","Cinico","Agressivo"),
  s2=c("Moderado","Cinico","Agressivo"),
  payoffs1 = c(-0.7, 0.5, -0.4,0.5,-0.3,0,-0.3,0.2,0.7),
  payoffs2 = c(-0.7,0.5,-0.3,0.5,-0.3,0.2,-0.4,0,0.7))
  
s_politica <- solve_nfg(politica, show_table = TRUE,mixed = T)
Pure-strategy NE: [Cinico, Moderado], [Moderado, Cinico], [Agressivo, Agressivo]

Mixed-strategy NE: [(55/196, 15/28, 9/49), (55/196, 15/28, 9/49)]

The obtained mixed-strategy NE might be only a part of the solutions.
CD
strategy Moderado Cinico Agressivo
AB Moderado -0.7, -0.7 0.5^, 0.5^ -0.3, -0.4
Cinico 0.5^, 0.5^ -0.3, -0.3 0.2, 0
Agressivo -0.4, -0.3 0, 0.2 0.7^, 0.7^
s_politica
$psNE
[1] "[Cinico, Moderado]"     "[Moderado, Cinico]"    
[3] "[Agressivo, Agressivo]"

$msNE
$msNE$s1
[1] 0.2806122 0.5357143 0.1836735

$msNE$s2
[1] 0.2806122 0.5357143 0.1836735


$table
CD
strategy Moderado Cinico Agressivo
AB Moderado -0.7, -0.7 0.5^, 0.5^ -0.3, -0.4
Cinico 0.5^, 0.5^ -0.3, -0.3 0.2, 0
Agressivo -0.4, -0.3 0, 0.2 0.7^, 0.7^

$br_plot
NULL

$msNE_df

$msNE_prob
$msNE_prob$p
[1] 0.2806122 0.5357143 0.1836735

$msNE_prob$q
[1] 0.2806122 0.5357143 0.1836735
s_politica$br_plot
NULL
supermercado<- normal_form(players = c("ABC","XYZ"),
                     s1=c("Preco_alto","Preço_baixo"),
                     s2=c("Agressivo","Conservador"),
                     payoffs1 = c(80000,45000,45000,40000),
                     payoffs2 = c(70000,30000,60000,80000))
                     #cells = list(c(80000,70000),
                                 # c(45000,60000),
                                  #c(45000,30000),
                                 # c(40000,80000)),
                     #byrow = T)
s_super <- solve_nfg(supermercado, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [Preco_alto, Agressivo]

The payoff matrix is degenerate; No full support mixed-strategy NE exist (or infinitely many exist).
Please examine br_plot (best response plot).
XYZ
strategy Agressivo Conservador
ABC Preco_alto 80000^, 70000^ 45000^, 60000
Preço_baixo 45000, 30000 40000, 80000^
s_super$br_plot

s_super
$psNE
[1] "[Preco_alto, Agressivo]"

$msNE
NULL

$table
XYZ
strategy Agressivo Conservador
ABC Preco_alto 80000^, 70000^ 45000^, 60000
Preço_baixo 45000, 30000 40000, 80000^

$br_plot

$msNE_df

$msNE_prob
$msNE_prob$p
[1] 0.8333333 0.1666667

$msNE_prob$q
[1] -0.1666667  1.1666667

game1<- normal_form(
  players = c("A","B"),
  s1=c("Confessar","calar"),
  s2=c("Confessar","calar"),
  cells = list(c(5,5),
               c(0,10),
               c(10,0),
               c(2,2)),
  byrow = T)

s_game1 <- solve_nfg(game1, show_table = T)

s_game1

jogo1 <- normal_form(
  players = c("Bonnie", "Clyde"),
  s1 = c("Confessar", "Não Confessar"), 
  s2 = c("Confessar", "Não Confessar"), 
  cells = list(c(-8, -8), 
               c(0, -15),
               c(-15, 0), 
               c(-1, -1)),
  byrow = T)
s_jogo1 <- solve_nfg(jogo1, show_table = T)


jogo2 <- normal_form(
  players = c("OilFlex", "EconoGas"),
  s1 = c("Manter Preço", "Reduzir Preço"), 
  s2 = c("Manter Preço", "Reduzir Preço"), 
  payoffs1 = c(50, 60, 30, 40), 
  payoffs2 = c(50, 30, 60, 40))

s_jogo2 <- solve_nfg(jogo2, show_table = TRUE)
s_jogo2

jogo4 <- normal_form(
  players = c("Governo", "Pobre"),
  s1 = c("Ajuda", "Não Ajuda"), 
  s2 = c("Trabalha", "Vadia"), 
  payoffs1 = c(3, -1, -1, 0), 
  payoffs2 = c(2, 1, 3, 0))

s_jogo4 <- solve_nfg(jogo4, 
                     mixed = TRUE, 
                     show_table = T)

s_jogo4$br_plot

jogo5 <- normal_form(
  players = c("cidade_A", "Cidade_B"),
  s1 = c("Apoia", "Rejeita"), 
  s2 = c("Apoia", "Rejeita"), 
  payoffs1 = c(8, -1, 9, 0), 
  payoffs2 = c(8, 9, -1, 0))

s_jogo5 <- solve_nfg(jogo5, 
                     mixed = TRUE, 
                     show_table = T)

s_jogo5$br_plot



jogo4 <- normal_form(
  players = c("A1", "A2"),
  s1 = c("Ajuda", "Não Ajuda"), 
  s2 = c("Ajuda", "Não Ajuda"), 
  payoffs1 = c(3, 4,5,1), 
  payoffs2 = c(3, 4,5,1))

s_jogo4 <- solve_nfg(jogo4, 
                     mixed = TRUE, 
                     show_table = T)

s_jogo4$br_plot
game4 <- normal_form(
  players = c("A1","A2"),
  s1 = c("Futebol", "Filmes","Auditorio"), 
  s2 = c("Futebol", "Filmes","Auditorio"), 
  payoffs1 = c(7,5,2,9,3,4,2,4,6), 
  payoffs2 = c(7,5,2,9,3,4,2,4,6))

s_game4 <- solve_nfg(game4, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [Futebol, Filmes], [Auditorio, Auditorio]

Mixed-strategy NE: [(1/6, 1/2, 1/3), (7/18, 1/18, 5/9)]

The obtained mixed-strategy NE might be only a part of the solutions.
A2
strategy Futebol Filmes Auditorio
A1 Futebol 7^, 7 9^, 9^ 2, 2
Filmes 5, 5^ 3, 3 4, 4
Auditorio 2, 2 4, 4 6^, 6^
s_game4
$psNE
[1] "[Futebol, Filmes]"      "[Auditorio, Auditorio]"

$msNE
$msNE$s1
[1] 0.1666667 0.5000000 0.3333333

$msNE$s2
[1] 0.38888889 0.05555556 0.55555556


$table
A2
strategy Futebol Filmes Auditorio
A1 Futebol 7^, 7 9^, 9^ 2, 2
Filmes 5, 5^ 3, 3 4, 4
Auditorio 2, 2 4, 4 6^, 6^

$br_plot
NULL

$msNE_df

$msNE_prob
$msNE_prob$p
[1] 0.1666667 0.5000000 0.3333333

$msNE_prob$q
[1] 0.38888889 0.05555556 0.55555556
game5 <- normal_form(
  players = c("A1","A2"),
  s1 = c("Musica", "Filmes","series"), 
  s2 = c("Musica", "Filmes","series"), 
  payoffs1 = c(2,1,-1,-1,4,1,-2,-3,1), 
  payoffs2 = c(2,1,-1,-1,4,1,-2,-3,1))

s_game5 <- solve_nfg(game5, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [Musica, Musica], [Filmes, Filmes], [series, series]

The payoff matrix is degenerate; No full support mixed-strategy NE exist (or infinitely many exist).
It might be useful to check 'msNE_df'.
A2
strategy Musica Filmes series
A1 Musica 2^, 2^ -1, -1 -2, -2
Filmes 1, 1 4^, 4^ -3, -3
series -1, -1 1, 1^ 1^, 1^
s_game5$br_plot
NULL
s_game5
$psNE
[1] "[Musica, Musica]" "[Filmes, Filmes]" "[series, series]"

$msNE
NULL

$table
A2
strategy Musica Filmes series
A1 Musica 2^, 2^ -1, -1 -2, -2
Filmes 1, 1 4^, 4^ -3, -3
series -1, -1 1, 1^ 1^, 1^

$br_plot
NULL

$msNE_df

$msNE_prob
$msNE_prob$p
[1]  0.38888889 -0.05555556  0.66666667

$msNE_prob$q
[1] 0.4722222 0.1666667 0.3611111
game5 <- normal_form(
  players = c("Tijolos","Chuva"),
  s1 = c("T1", "T2","T3"), 
  s2 = c("C1", "C2","C3"), 
  payoffs1 = c(80,60,80, 30,90,80,75,70,50), 
  payoffs2 = c(80,60,80, 30,90,80,75,70,50))

s_game5 <- solve_nfg(game5, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [T1, C1], [T3, C1], [T2, C2]

Mixed-strategy NE: [(18/55, 6/11, 7/55), (5/11, 2/11, 4/11)]

The obtained mixed-strategy NE might be only a part of the solutions.
Chuva
strategy C1 C2 C3
Tijolos T1 80^, 80^ 30, 30 75^, 75
T2 60, 60 90^, 90^ 70, 70
T3 80^, 80^ 80, 80^ 50, 50
s_game5$br_plot
NULL
s_game5
$psNE
[1] "[T1, C1]" "[T3, C1]" "[T2, C2]"

$msNE
$msNE$s1
[1] 0.3272727 0.5454545 0.1272727

$msNE$s2
[1] 0.4545455 0.1818182 0.3636364


$table
Chuva
strategy C1 C2 C3
Tijolos T1 80^, 80^ 30, 30 75^, 75
T2 60, 60 90^, 90^ 70, 70
T3 80^, 80^ 80, 80^ 50, 50

$br_plot
NULL

$msNE_df

$msNE_prob
$msNE_prob$p
[1] 0.3272727 0.5454545 0.1272727

$msNE_prob$q
[1] 0.4545455 0.1818182 0.3636364
game1<- normal_form(
  players = c("Ladrao","Policia"),
  s1=c("Assaltos_noturnos","Assaltos_diurnos"),
  s2=c("Ronda_Noturna","Ronda_diurna"),
  payoffs1 = c(5,8,10,6), 
  payoffs2 = c(5,8,10,6))

s_game1 <- solve_nfg(game1, 
                     mixed = TRUE, 
                     show_table = T)
Pure-strategy NE: [Assaltos_diurnos, Ronda_Noturna], [Assaltos_noturnos, Ronda_diurna]

Mixed-strategy NE: [(2/7, 5/7), (4/7, 3/7)]

The obtained mixed-strategy NE might be only a part of the solutions.
Please examine br_plot (best response plot) carefully.
Policia
strategy Ronda_Noturna Ronda_diurna
Ladrao Assaltos_noturnos 5, 5 10^, 10^
Assaltos_diurnos 8^, 8^ 6, 6
s_game1
$psNE
[1] "[Assaltos_diurnos, Ronda_Noturna]"
[2] "[Assaltos_noturnos, Ronda_diurna]"

$msNE
$msNE$s1
[1] 0.2857143 0.7142857

$msNE$s2
[1] 0.5714286 0.4285714


$table
Policia
strategy Ronda_Noturna Ronda_diurna
Ladrao Assaltos_noturnos 5, 5 10^, 10^
Assaltos_diurnos 8^, 8^ 6, 6

$br_plot

$msNE_df

$msNE_prob
$msNE_prob$p
[1] 0.2857143 0.7142857

$msNE_prob$q
[1] 0.5714286 0.4285714

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.

LS0tDQp0aXRsZTogIlRlb3JpYSBkb3MgSm9nb3MtQW5laXJzb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KYGBge3J9DQpsaWJyYXJ5KHJnYW1lcikNCmxpYnJhcnkodXRmOCkNCmdhbWUwPC0gbm9ybWFsX2Zvcm0ocGxheWVycyA9IGMoIlMiLCJzIiksDQogICAgICAgICAgICAgICAgICAgIHMxPWMoIkEiLCJCIiksDQogICAgICAgICAgICAgICAgICAgIHMyPWMoIkEiLCJCIiksDQogICAgICAgICAgICAgICAgICAgIGNlbGxzID0gbGlzdChjKDMsMyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKDAsMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKDEsMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKDIsMykpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnlyb3cgPSBUKQ0KDQpzX2dhbWUwPC0gc29sdmVfbmZnKGdhbWUwLHNob3dfdGFibGUgPSBULG1peGVkID0gVFJVRSkNCnNfZ2FtZTAkYnJfcGxvdA0KYGBgDQpgYGB7cn0NCmdhbWUwMTwtIG5vcm1hbF9mb3JtKHBsYXllcnMgPSBjKCJTIiwicyIpLA0KICAgICAgICAgICAgICAgICAgICBzMT1jKCJBIiwiQiIpLA0KICAgICAgICAgICAgICAgICAgICBzMj1jKCJhIiwiYiIpLA0KICAgICAgICAgICAgICAgICAgICBjZWxscyA9IGxpc3QoYygzLDIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyg1LDUpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygwLDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyg3LDQpKSwNCiAgICAgICAgICAgICAgICAgICAgYnlyb3cgPSBUKQ0KDQpzX2dhbWUwMTwtIHNvbHZlX25mZyhnYW1lMDEsc2hvd190YWJsZSA9IFQpI21peGVkID0gVFJVRSkNCnNfZ2FtZTAxJGJyX3Bsb3QNCg0KDQpnYW1lMDI8LSBub3JtYWxfZm9ybShwbGF5ZXJzID0gYygiajEiLCJqMiIpLA0KICAgICAgICAgICAgICAgICAgICAgczE9YygiQWx0byIsIkJhaXhvIiksDQogICAgICAgICAgICAgICAgICAgICBzMj1jKCJFc3F1ZXJkYSIsIkRpcmVpdGEiKSwNCiAgICAgICAgICAgICAgICAgICAgIGNlbGxzID0gbGlzdChjKDQsMiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygtMSwwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKDAsLTEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoMSwzKSksDQogICAgICAgICAgICAgICAgICAgICBieXJvdyA9IFQpDQoNCnNfZ2FtZTAyPC0gc29sdmVfbmZnKGdhbWUwMixzaG93X3RhYmxlID0gVCxtaXhlZCA9IFRSVUUpDQpzX2dhbWUwMiRicl9wbG90DQoNCg0KZ2FtZTAzPC0gbm9ybWFsX2Zvcm0ocGxheWVycyA9IGMoIk11bGhlciIsIkhvbWVtIiksDQogICAgICAgICAgICAgICAgICAgICBzMT1jKCJKYW50YXIiLCJDaW5lbWEiKSwNCiAgICAgICAgICAgICAgICAgICAgIHMyPWMoIkphbnRhciIsIkNpbmVtYSIpLA0KICAgICAgICAgICAgICAgICAgICAgY2VsbHMgPSBsaXN0KGMoNCwzKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKDEsMSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygxLDEpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoMyw0KSksDQogICAgICAgICAgICAgICAgICAgICBieXJvdyA9IFQpDQoNCnNfZ2FtZTAzPC0gc29sdmVfbmZnKGdhbWUwMyxzaG93X3RhYmxlID0gVCxtaXhlZCA9IFRSVUUpDQpzX2dhbWUwMyRicl9wbG90DQoNCmpvZ280IDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiQSIsICJCIiksDQogIHMxID0gYygiUHJvZHVjYW9fYWx0YSIsICJQcm9kdWNhb19iYWl4YSIpLCANCiAgczIgPSBjKCJQcm9kdWNhb19hbHRhIiwgIlByb2R1Y2FvX2JhaXhhIiksIA0KICBjZWxscyA9IGxpc3QoYyg4LDgpLA0KICAgICAgICAgICAgICAgYygxMiw2KSwNCiAgICAgICAgICAgICAgIGMoNiwxMiksDQogICAgICAgICAgICAgICBjKDEwLDEwKSksDQogIGJ5cm93ID0gVCkNCg0KIHNfam9nbzQgPC0gc29sdmVfbmZnKGpvZ280LCANCiAgICAgICAgICAgICAgICAgICAgIG1peGVkID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICBzaG93X3RhYmxlID0gVCkNCiAgc19qb2dvNCRicl9wbG90DQogIA0KICANCnBvbGl0aWNhPC0gbm9ybWFsX2Zvcm0oIA0KICBwbGF5ZXJzID0gYygiQUIiLCJDRCIpLA0KICBzMT1jKCJNb2RlcmFkbyIsIkNpbmljbyIsIkFncmVzc2l2byIpLA0KICBzMj1jKCJNb2RlcmFkbyIsIkNpbmljbyIsIkFncmVzc2l2byIpLA0KICBwYXlvZmZzMSA9IGMoLTAuNywgMC41LCAtMC40LDAuNSwtMC4zLDAsLTAuMywwLjIsMC43KSwNCiAgcGF5b2ZmczIgPSBjKC0wLjcsMC41LC0wLjMsMC41LC0wLjMsMC4yLC0wLjQsMCwwLjcpKQ0KICANCnNfcG9saXRpY2EgPC0gc29sdmVfbmZnKHBvbGl0aWNhLCBzaG93X3RhYmxlID0gVFJVRSxtaXhlZCA9IFQpDQpzX3BvbGl0aWNhDQoNCnNfcG9saXRpY2EkYnJfcGxvdA0KYGBgDQoNCmBgYHtyfQ0Kc3VwZXJtZXJjYWRvPC0gbm9ybWFsX2Zvcm0ocGxheWVycyA9IGMoIkFCQyIsIlhZWiIpLA0KICAgICAgICAgICAgICAgICAgICAgczE9YygiUHJlY29fYWx0byIsIlByZcOnb19iYWl4byIpLA0KICAgICAgICAgICAgICAgICAgICAgczI9YygiQWdyZXNzaXZvIiwiQ29uc2VydmFkb3IiKSwNCiAgICAgICAgICAgICAgICAgICAgIHBheW9mZnMxID0gYyg4MDAwMCw0NTAwMCw0NTAwMCw0MDAwMCksDQogICAgICAgICAgICAgICAgICAgICBwYXlvZmZzMiA9IGMoNzAwMDAsMzAwMDAsNjAwMDAsODAwMDApKQ0KICAgICAgICAgICAgICAgICAgICAgI2NlbGxzID0gbGlzdChjKDgwMDAwLDcwMDAwKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYyg0NTAwMCw2MDAwMCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2MoNDUwMDAsMzAwMDApLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjKDQwMDAwLDgwMDAwKSksDQogICAgICAgICAgICAgICAgICAgICAjYnlyb3cgPSBUKQ0Kc19zdXBlciA8LSBzb2x2ZV9uZmcoc3VwZXJtZXJjYWRvLCANCiAgICAgICAgICAgICAgICAgICAgIG1peGVkID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICBzaG93X3RhYmxlID0gVCkNCnNfc3VwZXIkYnJfcGxvdA0Kc19zdXBlcg0KYGBgDQoNCmBgYHtyfQ0KZ2FtZTE8LSBub3JtYWxfZm9ybSgNCiAgcGxheWVycyA9IGMoIkEiLCJCIiksDQogIHMxPWMoIkNvbmZlc3NhciIsImNhbGFyIiksDQogIHMyPWMoIkNvbmZlc3NhciIsImNhbGFyIiksDQogIGNlbGxzID0gbGlzdChjKDUsNSksDQogICAgICAgICAgICAgICBjKDAsMTApLA0KICAgICAgICAgICAgICAgYygxMCwwKSwNCiAgICAgICAgICAgICAgIGMoMiwyKSksDQogIGJ5cm93ID0gVCkNCg0Kc19nYW1lMSA8LSBzb2x2ZV9uZmcoZ2FtZTEsIHNob3dfdGFibGUgPSBUKQ0KDQpzX2dhbWUxDQoNCmpvZ28xIDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiQm9ubmllIiwgIkNseWRlIiksDQogIHMxID0gYygiQ29uZmVzc2FyIiwgIk7Do28gQ29uZmVzc2FyIiksIA0KICBzMiA9IGMoIkNvbmZlc3NhciIsICJOw6NvIENvbmZlc3NhciIpLCANCiAgY2VsbHMgPSBsaXN0KGMoLTgsIC04KSwgDQogICAgICAgICAgICAgICBjKDAsIC0xNSksDQogICAgICAgICAgICAgICBjKC0xNSwgMCksIA0KICAgICAgICAgICAgICAgYygtMSwgLTEpKSwNCiAgYnlyb3cgPSBUKQ0Kc19qb2dvMSA8LSBzb2x2ZV9uZmcoam9nbzEsIHNob3dfdGFibGUgPSBUKQ0KDQoNCmpvZ28yIDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiT2lsRmxleCIsICJFY29ub0dhcyIpLA0KICBzMSA9IGMoIk1hbnRlciBQcmXDp28iLCAiUmVkdXppciBQcmXDp28iKSwgDQogIHMyID0gYygiTWFudGVyIFByZcOnbyIsICJSZWR1emlyIFByZcOnbyIpLCANCiAgcGF5b2ZmczEgPSBjKDUwLCA2MCwgMzAsIDQwKSwgDQogIHBheW9mZnMyID0gYyg1MCwgMzAsIDYwLCA0MCkpDQoNCnNfam9nbzIgPC0gc29sdmVfbmZnKGpvZ28yLCBzaG93X3RhYmxlID0gVFJVRSkNCnNfam9nbzINCg0Kam9nbzQgPC0gbm9ybWFsX2Zvcm0oDQogIHBsYXllcnMgPSBjKCJHb3Zlcm5vIiwgIlBvYnJlIiksDQogIHMxID0gYygiQWp1ZGEiLCAiTsOjbyBBanVkYSIpLCANCiAgczIgPSBjKCJUcmFiYWxoYSIsICJWYWRpYSIpLCANCiAgcGF5b2ZmczEgPSBjKDMsIC0xLCAtMSwgMCksIA0KICBwYXlvZmZzMiA9IGMoMiwgMSwgMywgMCkpDQoNCnNfam9nbzQgPC0gc29sdmVfbmZnKGpvZ280LCANCiAgICAgICAgICAgICAgICAgICAgIG1peGVkID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICBzaG93X3RhYmxlID0gVCkNCg0Kc19qb2dvNCRicl9wbG90DQoNCmpvZ281IDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiY2lkYWRlX0EiLCAiQ2lkYWRlX0IiKSwNCiAgczEgPSBjKCJBcG9pYSIsICJSZWplaXRhIiksIA0KICBzMiA9IGMoIkFwb2lhIiwgIlJlamVpdGEiKSwgDQogIHBheW9mZnMxID0gYyg4LCAtMSwgOSwgMCksIA0KICBwYXlvZmZzMiA9IGMoOCwgOSwgLTEsIDApKQ0KDQpzX2pvZ281IDwtIHNvbHZlX25mZyhqb2dvNSwgDQogICAgICAgICAgICAgICAgICAgICBtaXhlZCA9IFRSVUUsIA0KICAgICAgICAgICAgICAgICAgICAgc2hvd190YWJsZSA9IFQpDQoNCnNfam9nbzUkYnJfcGxvdA0KDQoNCg0Kam9nbzQgPC0gbm9ybWFsX2Zvcm0oDQogIHBsYXllcnMgPSBjKCJBMSIsICJBMiIpLA0KICBzMSA9IGMoIkFqdWRhIiwgIk7Do28gQWp1ZGEiKSwgDQogIHMyID0gYygiQWp1ZGEiLCAiTsOjbyBBanVkYSIpLCANCiAgcGF5b2ZmczEgPSBjKDMsIDQsNSwxKSwgDQogIHBheW9mZnMyID0gYygzLCA0LDUsMSkpDQoNCnNfam9nbzQgPC0gc29sdmVfbmZnKGpvZ280LCANCiAgICAgICAgICAgICAgICAgICAgIG1peGVkID0gVFJVRSwgDQogICAgICAgICAgICAgICAgICAgICBzaG93X3RhYmxlID0gVCkNCg0Kc19qb2dvNCRicl9wbG90DQpgYGANCg0KDQpgYGB7cn0NCmdhbWU0IDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiQTEiLCJBMiIpLA0KICBzMSA9IGMoIkZ1dGVib2wiLCAiRmlsbWVzIiwiQXVkaXRvcmlvIiksIA0KICBzMiA9IGMoIkZ1dGVib2wiLCAiRmlsbWVzIiwiQXVkaXRvcmlvIiksIA0KICBwYXlvZmZzMSA9IGMoNyw1LDIsOSwzLDQsMiw0LDYpLCANCiAgcGF5b2ZmczIgPSBjKDcsNSwyLDksMyw0LDIsNCw2KSkNCg0Kc19nYW1lNCA8LSBzb2x2ZV9uZmcoZ2FtZTQsIA0KICAgICAgICAgICAgICAgICAgICAgbWl4ZWQgPSBUUlVFLCANCiAgICAgICAgICAgICAgICAgICAgIHNob3dfdGFibGUgPSBUKQ0Kc19nYW1lNA0KDQoNCmdhbWU1IDwtIG5vcm1hbF9mb3JtKA0KICBwbGF5ZXJzID0gYygiQTEiLCJBMiIpLA0KICBzMSA9IGMoIk11c2ljYSIsICJGaWxtZXMiLCJzZXJpZXMiKSwgDQogIHMyID0gYygiTXVzaWNhIiwgIkZpbG1lcyIsInNlcmllcyIpLCANCiAgcGF5b2ZmczEgPSBjKDIsMSwtMSwtMSw0LDEsLTIsLTMsMSksIA0KICBwYXlvZmZzMiA9IGMoMiwxLC0xLC0xLDQsMSwtMiwtMywxKSkNCg0Kc19nYW1lNSA8LSBzb2x2ZV9uZmcoZ2FtZTUsIA0KICAgICAgICAgICAgICAgICAgICAgbWl4ZWQgPSBUUlVFLCANCiAgICAgICAgICAgICAgICAgICAgIHNob3dfdGFibGUgPSBUKQ0Kc19nYW1lNSRicl9wbG90DQpzX2dhbWU1DQoNCg0KDQpnYW1lNSA8LSBub3JtYWxfZm9ybSgNCiAgcGxheWVycyA9IGMoIlRpam9sb3MiLCJDaHV2YSIpLA0KICBzMSA9IGMoIlQxIiwgIlQyIiwiVDMiKSwgDQogIHMyID0gYygiQzEiLCAiQzIiLCJDMyIpLCANCiAgcGF5b2ZmczEgPSBjKDgwLDYwLDgwLCAzMCw5MCw4MCw3NSw3MCw1MCksIA0KICBwYXlvZmZzMiA9IGMoODAsNjAsODAsIDMwLDkwLDgwLDc1LDcwLDUwKSkNCg0Kc19nYW1lNSA8LSBzb2x2ZV9uZmcoZ2FtZTUsIA0KICAgICAgICAgICAgICAgICAgICAgbWl4ZWQgPSBUUlVFLCANCiAgICAgICAgICAgICAgICAgICAgIHNob3dfdGFibGUgPSBUKQ0Kc19nYW1lNSRicl9wbG90DQpzX2dhbWU1DQoNCmdhbWUxPC0gbm9ybWFsX2Zvcm0oDQogIHBsYXllcnMgPSBjKCJMYWRyYW8iLCJQb2xpY2lhIiksDQogIHMxPWMoIkFzc2FsdG9zX25vdHVybm9zIiwiQXNzYWx0b3NfZGl1cm5vcyIpLA0KICBzMj1jKCJSb25kYV9Ob3R1cm5hIiwiUm9uZGFfZGl1cm5hIiksDQogIHBheW9mZnMxID0gYyg1LDgsMTAsNiksIA0KICBwYXlvZmZzMiA9IGMoNSw4LDEwLDYpKQ0KDQpzX2dhbWUxIDwtIHNvbHZlX25mZyhnYW1lMSwgDQogICAgICAgICAgICAgICAgICAgICBtaXhlZCA9IFRSVUUsIA0KICAgICAgICAgICAgICAgICAgICAgc2hvd190YWJsZSA9IFQpDQpzX2dhbWUxDQpgYGANCg0KQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkN0cmwrQWx0K0kqLg0KDQpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4NCg0KVGhlIHByZXZpZXcgc2hvd3MgeW91IGEgcmVuZGVyZWQgSFRNTCBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZWRpdG9yLiBDb25zZXF1ZW50bHksIHVubGlrZSAqS25pdCosICpQcmV2aWV3KiBkb2VzIG5vdCBydW4gYW55IFIgY29kZSBjaHVua3MuIEluc3RlYWQsIHRoZSBvdXRwdXQgb2YgdGhlIGNodW5rIHdoZW4gaXQgd2FzIGxhc3QgcnVuIGluIHRoZSBlZGl0b3IgaXMgZGlzcGxheWVkLg0K