diff options
-rw-r--r-- | app/Main.hs | 27 | ||||
-rw-r--r-- | birb.cabal | 3 | ||||
-rw-r--r-- | readme.md | 29 | ||||
-rw-r--r-- | samples/helloworld.birb | 9 | ||||
-rw-r--r-- | src/Lib.hs | 76 | ||||
-rw-r--r-- | src/Term.hs | 140 | ||||
-rw-r--r-- | src/Transpile.hs | 94 | ||||
-rw-r--r-- | src/Utils.hs | 6 |
8 files changed, 299 insertions, 85 deletions
diff --git a/app/Main.hs b/app/Main.hs index 6e1c43f..60a44f0 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -4,16 +4,31 @@ module Main import Lib import System.Environment ( getArgs ) +import Term +import Transpile -main :: IO () --- main = mapM_ (bruteForce "...") [1 .. 10] -main = do - args <- getArgs - file <- readFile (head args) +transpile :: String -> IO () +transpile path = do + file <- readFile path + let term = fromBLC file + let ski = transpileSKI term + let birb = transpileBirb ski + putStrLn $ concatMap show birb + +reduce :: String -> IO () +reduce path = do + file <- readFile path let termified = fromBirbs file let rebirbified = fromTerm termified putStrLn $ "input: " ++ rebirbified normalBirbs <- nf termified let retermified = fromTerm normalBirbs putStrLn $ "reduced: " ++ retermified - return () + +main :: IO () +main = do + args <- getArgs + case args of + ["transpile", path] -> transpile path + ["reduce" , path] -> reduce path + _ -> putStrLn "Usage: birb [transpile|reduce] <file>" @@ -24,6 +24,9 @@ source-repository head library exposed-modules: Lib + Term + Transpile + Utils other-modules: Paths_birb hs-source-dirs: @@ -28,7 +28,7 @@ Unfortunately, the Unicode standard does not yet have many | π¦’ | swan | substitution | $\lambda abc.ac(bc)$ | | 𦩠| flamingo | cardinal | $\lambda abc.acb$ | -Lonely/unmatched birbs: ππ¦π +Lonely/unmatched birbs: ππ¦ππͺΏ # Syntax @@ -109,13 +109,32 @@ Contestants: - *The touring eagle*: `[π¦]βΏ[π¦
π€]βΏ` ($n=3$: 9 birbs, ~20M BLC bits) - better? PR! +# Transpiler + +I created a lambda calculus to Birb transpiler. It works by converting +binary lambda calculus to SKI combinators, which then get converted to +Jot and back to SKI combinators. The resulting SKI combinators then get +converted to Birbs. + +The reason I convert to Jot first is that Birbs semantics donβt allow +trivial transpilation from arbitrary SKI expressions. With Jot however, +applications with non-associative expressions like `((s k) (k s))` are +impossible, as only a single non-associative application exists (the +innermost/deepest expression). + +With all these conversions, the resulting transpiled Birb code is big, +ugly and slow. There should be a way to optimize the transpilation +process, but itβs probably a bit more complicated. + # Usage Install [Haskellβs stack](https://docs.haskellstack.org/en/stable/install_and_upgrade/). Then, -- `stack run -- file.birb` or `stack run <(echo π§π§)` +- `stack run -- reduce file.birb` or `stack run -- reduce <(echo π§π§)` +- `stack run -- transpile <(echo 01000110100000011100111001110011100111010)` + to generate a birb program that calculates $5^5$ - `stack install` so you can enjoy `birb` from anywhere If the output cannot be translated to birbs, the raw lambda calculus @@ -126,10 +145,8 @@ sometimes manually converted the term back to birbs. Birb is Turing complete, since one can construct any term of the [Jot](https://esolangs.org/wiki/Jot) variant of Iota. A Jot term -`((X s) k)` is equivalent to `π¦Xπ¦’π₯`. Similarly, `(s (k X))` is -equivalent to `π¦π¦π§π¦’π₯X`. This can be extended for arbitrary long terms -using increasingly more complicated construction of composition -combinators. +`((X s) k)` is equivalent to `π¦π¦Xπ¦’π₯`. Similarly, `(s (k X))` is +equivalent to `π¦π¦Xπ₯π¦’`. ------------------------------------------------------------------------ diff --git a/samples/helloworld.birb b/samples/helloworld.birb new file mode 100644 index 0000000..dbba689 --- /dev/null +++ b/samples/helloworld.birb @@ -0,0 +1,9 @@ +this was generated using the blc to birb transpiler + +the lambda calculus expression is + +[((0 [[[(0 (0 (0 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(1 (0 (1 (0 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (0 (1 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (0 (1 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(1 (1 (1 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (0 (1 (1 (0 (1 (0 (0 2))))))))]]]) [((0 [[[(0 (0 (0 (0 (0 (1 (0 (0 2))))))))]]]) [((0 [[[(1 (1 (1 (0 (1 (1 (1 (0 2))))))))]]]) [((0 [[[(1 (1 (1 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (1 (0 (0 (1 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (0 (1 (1 (0 (1 (1 (0 2))))))))]]]) [((0 [[[(0 (0 (1 (0 (0 (1 (1 (0 2))))))))]]]) [[0]])])])])])])])])])])])])] + +-> a Church encoded list of chars encoded as bistate expressions + +π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π¦π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯π₯π¦’π₯π¦’π₯π¦’π¦’π₯π¦’π₯ @@ -3,40 +3,21 @@ module Lib ( fromBirbs , fromTerm - , nf ) where -import Control.Concurrent.Async ( mapConcurrently ) -import Control.Monad ( void ) import Data.Bifunctor ( first , second ) import Data.Char ( digitToInt , isDigit ) -import Data.IORef ( IORef - , modifyIORef - , newIORef - , readIORef - , writeIORef - ) import Data.Map ( Map ) import qualified Data.Map as Map - -data Term = Abs Term | App Term Term | Idx Int - deriving (Eq, Ord) +import Term +import Utils type Birb = Char -invalid :: a -invalid = error "invalid program state" - -instance Show Term where - showsPrec _ (Abs body) = showString "[" . shows body . showString "]" - showsPrec _ (App lhs rhs) = - showString "(" . shows lhs . showString " " . shows rhs . showString ")" - showsPrec _ (Idx i) = shows i - birbify :: Term -> Map Term Birb -> String birbify t m | t `Map.member` m = [Map.findWithDefault invalid t m] | (Abs a) <- t = "[" ++ birbify a m ++ "]" @@ -59,45 +40,6 @@ termify m s = foldlr (odd $ length lst) lst foldlr False (x : xs) = let t = foldlr True xs in App x t foldlr _ _ = invalid -shift :: Int -> Term -> Term -shift i (Idx j) | i <= j = Idx $ j + 1 - | otherwise = Idx j -shift i (App a b) = App (shift i a) (shift i b) -shift i (Abs a ) = Abs (shift (i + 1) a) - -subst :: Int -> Term -> Term -> Term -subst i (Idx j) c | i == j = c - | j > i = Idx $ j - 1 - | otherwise = Idx j -subst i (App a b) c = App (subst i a c) (subst i b c) -subst i (Abs a ) c = Abs (subst (i + 1) a (shift 0 c)) - -nf :: Term -> IO Term -nf o = do -- TODO: pointfree?? - -- i <- newIORef 1000 - i <- newIORef 100000000 - go i o - where - go :: IORef Integer -> Term -> IO Term - go i t = do -- oracle - readIORef i >>= \case - -- 0 -> writeIORef i (-1) >> return (Idx 0) - 0 -> do - putStrLn "π₯ potential infinite loop, continue? [yn]" - getLine >>= \case - "y" -> writeIORef i (-2) >> re i t - "n" -> writeIORef i (-1) >> return t - _ -> go i t - (-1) -> return t - _ -> modifyIORef i (subtract 1) >> re i t - - re :: IORef Integer -> Term -> IO Term - re i (App l r) = go i l >>= \case - Abs t -> go i (subst 0 t r) - t -> App t <$> go i r - re i (Abs t) = Abs <$> go i t - re _ t = pure t - fromBirbs :: String -> Term fromBirbs s = let birbsies = Map.fromList $ second parse <$> birbs @@ -111,18 +53,6 @@ fromTerm t = termsies = Map.fromList $ first parse <$> flipped in birbify t termsies -bruteForce :: String -> Integer -> IO () -bruteForce s n = - let combos = mapM (const $ map fst birbs) [1 .. n] - birbsies = Map.fromList $ second parse <$> birbs - termified = termify birbsies <$> combos - target = parse s - huh t = nf t >>= \case - r | r == target -> putStrLn (fromTerm t) - | otherwise -> return () - go ts = void $ mapConcurrently huh ts - in putStrLn ("trying " ++ show n) >> go termified - -- this isn't really relevant but I'm too lazy to type the terms manually parse :: String -> Term parse = fst . go @@ -143,7 +73,7 @@ birbs = , ('\x1F425', "!!1") -- front chick , ('\x1F423', "!!!@0@21") -- hatching chick , ('\x1F989', "!!@0@10") -- owl - , ('\x1F986', "!!@0@12") -- duck + , ('\x1F986', "!!!@0@12") -- duck , ('\x1F9A4', "!@!@1@00!@1@00") -- dodo , ('\x1F9A9', "!!!@@201") -- flamingo , ('\x1F9A2', "!!!@@20@10") -- swan diff --git a/src/Term.hs b/src/Term.hs new file mode 100644 index 0000000..a84b6c5 --- /dev/null +++ b/src/Term.hs @@ -0,0 +1,140 @@ +{-# LANGUAGE LambdaCase #-} + +module Term + ( Term(..) + , fromBLC + , nf + ) where + +import Control.Concurrent.MVar +import Data.List ( elemIndex ) +import Data.Map.Strict ( Map ) +import qualified Data.Map.Strict as Map +import Data.Maybe ( fromMaybe ) +import Utils + +data Term = Abs Term | App Term Term | Idx Int + deriving (Eq, Ord) + +instance Show Term where + showsPrec _ (Abs body) = showString "[" . shows body . showString "]" + showsPrec _ (App lhs rhs) = + showString "(" . shows lhs . showString " " . shows rhs . showString ")" + showsPrec _ (Idx i) = shows i + +fromBLC' :: String -> (Term, String) +fromBLC' inp = case inp of + '0' : '0' : rst -> let (e, es) = fromBLC' rst in (Abs e, es) + '0' : '1' : rst -> + let (exp1, rst1) = fromBLC' rst + (exp2, rst2) = fromBLC' rst1 + in (App exp1 exp2, rst2) + '1' : _ : rst -> binaryBruijn rst + _ -> invalid + where + binaryBruijn rst = + let idx = length (takeWhile (== '1') inp) - 1 + in case rst of + "" -> (Idx idx, "") + _ -> (Idx idx, drop idx rst) + +fromBLC :: String -> Term +fromBLC = fst . fromBLC' + +-- RKNL abstract machine, call-by-need reducer +-- written for my bruijn programming language + +type Store = Map Int Box +type Stack = [Redex] + +newtype NameGen = NameGen Int +data BoxValue = Todo Redex | Done Redex | Empty +newtype Box = Box (MVar BoxValue) +data Ridx = Num Int | Hole +data Redex = Rabs Int Redex | Rapp Redex Redex | Ridx Ridx | Rclosure Redex Store | Rcache Box Redex +data Conf = Econf NameGen Redex Store Stack | Cconf NameGen Stack Redex | End + +nextName :: NameGen -> (Int, NameGen) +nextName (NameGen x) = (x, NameGen $ x + 1) + +toRedex :: Term -> Redex +toRedex = convertWorker (NameGen 1) [] + where + convertWorker g ns (Abs e) = + let (v, g') = nextName g + t = convertWorker g' (v : ns) e + in Rabs v t + convertWorker g ns (App l r) = + let lhs = convertWorker g ns l + rhs = convertWorker g ns r + in Rapp lhs rhs + convertWorker _ ns (Idx i) = + Ridx $ Num (if i < 0 || i >= length ns then i else ns !! i) + +fromRedex :: Redex -> Term +fromRedex = convertWorker [] + where + convertWorker es (Rabs n e) = Abs $ convertWorker (n : es) e + convertWorker es (Rapp l r) = + let lhs = convertWorker es l + rhs = convertWorker es r + in App lhs rhs + convertWorker es (Ridx (Num n)) = Idx $ fromMaybe n (elemIndex n es) + convertWorker _ _ = invalid + +transition :: Conf -> IO Conf +transition (Econf g (Rapp u v) e s) = + pure $ Econf g u e (Rapp (Ridx Hole) (Rclosure v e) : s) +transition (Econf g (Rabs x t) e s) = do + box <- newMVar Empty + pure $ Cconf g s (Rcache (Box box) (Rclosure (Rabs x t) e)) +transition (Econf g (Ridx (Num x)) e s) = do + def <- newMVar $ Done $ Ridx $ Num x + let b@(Box m) = Map.findWithDefault (Box def) x e + rd <- readMVar m + case rd of + Todo (Rclosure v e') -> pure $ Econf g v e' (Rcache b (Ridx Hole) : s) + Done t -> pure $ Cconf g s t + _ -> invalid +transition (Cconf g ((Rcache (Box m) (Ridx Hole)) : s) t) = do + modifyMVar_ m (\_ -> pure $ Done t) + pure $ Cconf g s t +transition (Cconf g ((Rapp (Ridx Hole) ve) : s) (Rcache _ (Rclosure (Rabs x t) e))) + = do + box <- newMVar (Todo ve) + pure $ Econf g t (Map.insert x (Box box) e) s +transition (Cconf g s (Rcache (Box m) (Rclosure (Rabs x t) e))) = do + rd <- readMVar m + case rd of + Done v -> pure $ Cconf g s v + Empty -> do + let (x1, g') = nextName g + box <- newMVar $ Done $ Ridx $ Num x1 + pure $ Econf g' + t + (Map.insert x (Box box) e) + (Rabs x1 (Ridx Hole) : Rcache (Box m) (Ridx Hole) : s) + Todo _ -> invalid +transition (Cconf g ((Rapp (Ridx Hole) (Rclosure v e)) : s) t) = + pure $ Econf g v e (Rapp t (Ridx Hole) : s) +transition (Cconf g ((Rapp t (Ridx Hole)) : s) v) = pure $ Cconf g s (Rapp t v) +transition (Cconf g ((Rabs x1 (Ridx Hole)) : s) v) = + pure $ Cconf g s (Rabs x1 v) +transition (Cconf _ [] _) = pure End +transition _ = invalid + +forEachState :: Conf -> (Conf -> IO Conf) -> IO Conf +forEachState conf trans = trans conf >>= \case + End -> pure conf + next -> forEachState next trans + +-- TODO: NameGen is arbitrary to not conflict with toRedex +loadTerm :: Redex -> Conf +loadTerm t = Econf (NameGen 1000000) t Map.empty [] + +nf :: Term -> IO Term +nf e = do + let redex = toRedex e + forEachState (loadTerm redex) transition >>= \case + Cconf _ [] v -> pure $ fromRedex v + _ -> invalid diff --git a/src/Transpile.hs b/src/Transpile.hs new file mode 100644 index 0000000..d1dc077 --- /dev/null +++ b/src/Transpile.hs @@ -0,0 +1,94 @@ +-- This code partly uses algorithms (drip/abstract) created by John Tromp. +-- Since they did not license their code (afaik), I assume it's okay to reuse it. + +module Transpile + ( transpileSKI + , transpileBirb + ) where + +import Term +import Utils + +data SKI = S | K | I | AppSKI SKI SKI | IdxSKI Int + deriving (Eq, Ord) + +data Birb = Swan | Kool | Idiot | Quacky + deriving (Eq, Ord) + +instance Show Birb where + showsPrec _ Swan = showString "\x1F9A2" + showsPrec _ Kool = showString "\x1F425" + showsPrec _ Idiot = showString "\x1F426" + showsPrec _ Quacky = showString "\x1F986" + +instance Show SKI where + showsPrec _ S = showString "s" + showsPrec _ K = showString "k" + showsPrec _ I = showString "i" + showsPrec _ (AppSKI x y) = + showString "(" . shows x . showString " " . shows y . showString ")" + showsPrec _ (IdxSKI i) = shows i + +drip :: SKI -> SKI +drip i@(AppSKI (AppSKI S K) _) = i +drip ( IdxSKI 0 ) = invalid +drip ( IdxSKI i ) = IdxSKI (i - 1) +drip ( AppSKI x y ) = AppSKI (drip x) (drip y) +drip x = x + +abstract :: SKI -> SKI +abstract (AppSKI sk@(AppSKI S K) _) = sk +abstract e = if freeIn (== 0) e then occabstract e else AppSKI K (drip e) where + freeIn _ (AppSKI (AppSKI S K) _) = False + freeIn fv (AppSKI x y) = freeIn fv x || freeIn fv y + freeIn fv (IdxSKI i ) = fv i + freeIn _ _ = False + isConst = not . freeIn (const True) + occabstract (IdxSKI 0) = I + occabstract (AppSKI m (IdxSKI 0)) | not (freeIn (== 0) m) = drip m + occabstract (AppSKI (AppSKI l m) l') | l == l' = + occabstract (AppSKI (AppSKI (AppSKI (AppSKI S S) K) l) m) + occabstract (AppSKI m (AppSKI n l)) | isConst m && isConst n = + occabstract (AppSKI (AppSKI (AppSKI S (abstract m)) n) l) + occabstract (AppSKI (AppSKI m n) l) | isConst m && isConst l = + occabstract (AppSKI (AppSKI (AppSKI S m) (abstract l)) n) + occabstract (AppSKI (AppSKI m l) (AppSKI n l')) + | l == l' && isConst m && isConst n = occabstract + (AppSKI (AppSKI (AppSKI S m) n) l) + occabstract (AppSKI e1 e2) = AppSKI (AppSKI S (abstract e1)) (abstract e2) + occabstract _ = invalid + +transpileSKI :: Term -> SKI +transpileSKI (Idx i ) = IdxSKI i +transpileSKI (App m n) = AppSKI (transpileSKI m) (transpileSKI n) +transpileSKI (Abs m ) = abstract (transpileSKI m) + +fromSKI :: SKI -> Birb +fromSKI S = Swan +fromSKI K = Kool +fromSKI I = Idiot +fromSKI _ = invalid + +jotify :: SKI -> [Bool] +jotify = reverse . go + where + go S = [True, True, True, True, True, False, False, False] + go K = [True, True, True, False, False] + go I = go $ AppSKI (AppSKI S K) K + go (AppSKI a b) = True : (go a ++ go b) + go _ = invalid + +dejotify :: [Bool] -> SKI +dejotify (False : js) = AppSKI (AppSKI (dejotify js) S) K +dejotify (True : js) = AppSKI S (AppSKI K (dejotify js)) +dejotify _ = I + +transpileBirb :: SKI -> [Birb] +transpileBirb = go . dejotify . jotify + where + go (AppSKI a b) = case [a, b] of + [AppSKI x l, r] -> [Idiot, Idiot] ++ go x ++ [fromSKI l, fromSKI r] + [l, AppSKI r x] -> [Idiot, Quacky] ++ go x ++ [fromSKI r, fromSKI l] + [l, r] -> [fromSKI l, fromSKI r] + go (IdxSKI _) = invalid + go s = [fromSKI s] diff --git a/src/Utils.hs b/src/Utils.hs new file mode 100644 index 0000000..27ddb69 --- /dev/null +++ b/src/Utils.hs @@ -0,0 +1,6 @@ +module Utils + ( invalid + ) where + +invalid :: a +invalid = error "invalid program state" |