Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PERF-#4182, FIX-#4059: Add cell-wise execution for binary ops, fix bin ops for empty dataframes #4391

Merged
merged 12 commits into from
Jun 16, 2022

Conversation

prutskov
Copy link
Contributor

@prutskov prutskov commented Apr 15, 2022

Signed-off-by: Alexey Prutskov [email protected]

What do these changes do?

PR adds cell-wise execution for binary operations as attempt to improve performance.

Performance results

Hardware info: OS: Windows11 21H2, CPU: AMD Ryzen 7 5800HS 3.2 GHz 8 cores (16 threads) RAM: 16 GB DDR4 3200 MHz

  1. Benchmarks results for binary opeartions. Command asv continuous -f 1.01 master HEAD -b TimeBinaryOp.time_binary_op --launch-method=spawn is used with different MODIN_NPARTITIONS.

MODIN_NPARTITIONS=16 (default)

shape (rows x cols left, rows x cols right), ms 250x250, 250x250 10k x 20, 20k 10 5k x 250, 5k x 250 5k x 5k, 5k x 5k 500k x 20, 1m x 10 1m x 100, 1m x 100 500 x 10k, 500 x 10k
modin #4391 27 181 56 208 916 228 138
modin master 28 60 54 275 787 711 150

MODIN_NPARTITIONS=4 (optimal number of partitions for cell-wise execution)

shape (rows x cols left, rows x cols right), ms 250x250, 250x250 10k x 20, 20k 10 5k x 250, 5k x 250 5k x 5k, 5k x 5k 500k x 20, 1m x 10 1m x 100, 1m x 100 500 x 10k, 500 x 10k
modin #4391 9 60 18 62 744 185 30
modin master 12 40 21 166 695 681 78
  1. Benchmarks for fillna function where binary_op is used as internal implementation (asv bench TimeFillnaSeries.time_fillna). Parameters are self=Series, value has Series type:

MODIN_NPARTITIONS=16 (default)

shape rows x cols, ms 10k x 1 100k x 1 1m x 100 10m x 10
modin #4391 24.5 26.1 5.1 s 13.4 s
modin master 54.6 46.9 5.3 s 14.7 s

MODIN_NPARTITIONS=4 (optimal number of partitions for cell-wise execution)

shape rows x cols, ms 10k x 1 100k x 1 1m x 100 10m x 10
modin #4391 8.1 9.5 1.5 s 6.82 s
modin master 9.43 10.8 1.6 s 6.81 s
  1. Benchmark for df.where where binary_op is used as internal impl.
Benchmark code for `df.where` testing
import time

import ray
ray.init(num_cpus=16)

import numpy as np
import modin.pandas as pd
import modin.config as cfg

# cfg.NPartitions.put(4)
cfg.BenchmarkMode.put(True)

def generate_data(nrows=5000, ncols=100):
    data = {f"col{i}":  np.random.rand(nrows) for i in range(ncols)}
    return pd.DataFrame(data), pd.DataFrame(data)

def get_time(op):
    start = time.time()
    result = op()
    return time.time() - start


if __name__ == "__main__":
    print("Generating data...")
    df1, df2 = generate_data(nrows=10_000, ncols=10)

    print(f"Original shape: {df1.shape}")

    def operation():
        return df1.where(df1 < 0.5, -df2)

    n_runs = 3
    all_time = 0
    get_time(operation)

    for i in range(n_runs):
        t = get_time(operation)
        print(f"Iteration #{i}: {t} s")
        all_time += t

    print(f'Time where op: {all_time / n_runs} s')

Results:
MODIN_NPARTITIONS=16 (default)

shape rows x cols, s 10k x 10 10k x 100 100k x 10 1m x 100
modin #4391 0.05 0.38 0.21 23.45
modin master 0.12 0.39 0.3 27.86

MODIN_NPARTITIONS=4 (optimal number of partitions for cell-wise execution)

shape rows x cols, s 10k x 10 10k x 100 100k x 10 1m x 100
modin #4391 0.045 0.21 0.23 24.8
modin master 0.053 0.37 0.25 31.3
  1. Benchmark for df.update where binary_op is used as internal impl.
Benchmark code for `df.update` testing
import time

import ray
ray.init(num_cpus=16)

import numpy as np
import modin.pandas as pd
import modin.config as cfg

# cfg.NPartitions.put(4)
cfg.BenchmarkMode.put(True)

def generate_data(nrows=5000, ncols=100):
    data1 = {f"col{i}":  np.random.rand(nrows) for i in range(ncols)}
    data2 = {f"col{i}":  np.random.rand(nrows) for i in range(ncols)}
    return pd.DataFrame(data1), pd.DataFrame(data2)

def get_time(op):
    start = time.time()
    result = op()
    return time.time() - start


if __name__ == "__main__":
    print("Generating data...")
    df1, df2 = generate_data(nrows=1000_000, ncols=100)

    print(f"Original shape: {df1.shape}")

    def operation():
        df1.update(df2)
        return df1

    n_runs = 3
    all_time = 0
    get_time(operation)

    for i in range(n_runs):
        t = get_time(operation)
        print(f"Iteration #{i}: {t} s")
        all_time += t

    print(f'Time where op: {all_time / n_runs} s')

Results:
MODIN_NPARTITIONS=16 (default)

shape rows x cols, s 10k x 10 10k x 100 100k x 100 1m x 100
modin #4391 0.019 0.14 0.5 6.9
modin master 0.057 0.12 1.61 15.43

MODIN_NPARTITIONS=4 (optimal number of partitions for cell-wise execution)

shape rows x cols, s 10k x 10 10k x 100 100k x 100 1m x 100
modin #4391 0.007 0.045 0.65 5.73
modin master 0.016 0.12 1.3 14.52

@codecov
Copy link

codecov bot commented Apr 15, 2022

Codecov Report

Merging #4391 (5d2d79f) into master (4ec7f63) will increase coverage by 3.18%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master    #4391      +/-   ##
==========================================
+ Coverage   86.22%   89.40%   +3.18%     
==========================================
  Files         228      229       +1     
  Lines       18451    18723     +272     
==========================================
+ Hits        15909    16740     +831     
+ Misses       2542     1983     -559     
Impacted Files Coverage Δ
modin/core/dataframe/pandas/dataframe/dataframe.py 95.19% <100.00%> (+<0.01%) ⬆️
...dataframe/pandas/partitioning/partition_manager.py 90.52% <100.00%> (+3.97%) ⬆️
...ns/pandas_on_ray/partitioning/partition_manager.py 83.48% <100.00%> (ø)
...re/dataframe/pandas/partitioning/axis_partition.py 86.00% <0.00%> (-2.00%) ⬇️
modin/experimental/batch/test/test_pipeline.py 100.00% <0.00%> (ø)
modin/pandas/base.py 94.81% <0.00%> (+0.08%) ⬆️
modin/core/storage_formats/pandas/parsers.py 90.22% <0.00%> (+1.26%) ⬆️
...mentations/pandas_on_ray/partitioning/partition.py 93.57% <0.00%> (+1.83%) ⬆️
...tations/pandas_on_python/partitioning/partition.py 93.75% <0.00%> (+2.08%) ⬆️
...entations/pandas_on_dask/partitioning/partition.py 91.46% <0.00%> (+2.43%) ⬆️
... and 18 more

📣 Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

@modin-bot
Copy link

modin-bot commented Apr 15, 2022

TeamCity Python test results bot

Tests FAILed

Tests Logs
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.2, pluggy-1.0.0
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /modin, configfile: setup.cfg
plugins: benchmark-3.4.1, cov-2.11.0, forked-1.4.0, xdist-2.5.0
collected 2464 items

modin/pandas/test/test_io.py ........................................... [  1%]
........................................................................ [  4%]
.............................................ssssssssssssssssssss.ss.ss. [  7%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 10%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 13%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss. [ 16%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 19%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 22%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss............................ [ 25%]
........................................................................ [ 28%]
........................................................................ [ 30%]
........................................................................ [ 33%]
........................................................................ [ 36%]
........................................................................ [ 39%]
........................................................................ [ 42%]
........................................................................ [ 45%]
........................................................................ [ 48%]
.................................s...................................... [ 51%]
........................................................................ [ 54%]
........................................................................ [ 57%]
........................................................................ [ 60%]
........................................................................ [ 63%]
........................................................................ [ 66%]
........................................................................ [ 68%]
........................................................................ [ 71%]
........................................................................ [ 74%]
........................................................................ [ 77%]
........................................................................ [ 80%]
................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 83%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 86%]
xxxxxxxx................................................................ [ 89%]
...........................................................F............ [ 92%]
........................................................................ [ 95%]
.............................................................X.......ss. [ 98%]
...x....................xx.........ss........                            [100%]

=================================== FAILURES ===================================
________________________ TestCsv.test_read_csv_s3[None] ________________________
Traceback (most recent call last):
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/httpsession.py", line 178, in send
    response = await self._session.request(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/client.py", line 559, in _request
    await resp.start(conn)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 898, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/streams.py", line 616, in read
    await self._waiter
aiohttp.client_exceptions.ServerTimeoutError: Timeout on reading data from socket

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/modin/modin/pandas/test/utils.py", line 728, in execute_callable
    pd_result = fn(pandas_df, **pd_kwargs)
  File "/modin/modin/pandas/test/utils.py", line 812, in applyier
    result = getattr(module, fn_name)(*args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 680, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 575, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 933, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 1217, in _make_engine
    self.handles = get_handle(  # type: ignore[call-overload]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/common.py", line 670, in get_handle
    ioargs = _get_filepath_or_buffer(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/common.py", line 385, in _get_filepath_or_buffer
    file_obj = fsspec.open(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/core.py", line 141, in open
    out = self.__enter__()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/core.py", line 104, in __enter__
    f = self.fs.open(self.path, mode=mode)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1037, in open
    f = self._open(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 605, in _open
    return S3File(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 1911, in __init__
    super().__init__(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1385, in __init__
    self.size = self.details["size"]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1398, in details
    self._details = self.fs.info(self.path)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 86, in wrapper
    return sync(self.loop, func, *args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 66, in sync
    raise return_result
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 26, in _runner
    result[0] = await coro
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 1140, in _info
    out = await self._call_s3(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 325, in _call_s3
    await self.set_session()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 473, in set_session
    self._s3 = await s3creator.__aenter__()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 22, in __aenter__
    self._client = await self._coro
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 102, in _create_client
    credentials = await self.get_credentials()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 133, in get_credentials
    self._credentials = await (self._components.get_component(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/credentials.py", line 814, in load_credentials
    creds = await provider.load()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/credentials.py", line 486, in load
    metadata = await fetcher.retrieve_iam_role_credentials()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 176, in retrieve_iam_role_credentials
    role_name = await self._get_iam_role(token)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 200, in _get_iam_role
    return await (await self._get_request(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 127, in _get_request
    response = await session.send(request.prepare())
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/httpsession.py", line 212, in send
    raise ReadTimeoutError(endpoint_url=request.url, error=e)
botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/modin/modin/pandas/test/test_io.py", line 936, in test_read_csv_s3
    eval_io(
  File "/modin/modin/pandas/test/utils.py", line 835, in eval_io
    call_eval_general()
  File "/modin/modin/pandas/test/utils.py", line 818, in call_eval_general
    eval_general(
  File "/modin/modin/pandas/test/utils.py", line 767, in eval_general
    values = execute_callable(
  File "/modin/modin/pandas/test/utils.py", line 734, in execute_callable
    repr(fn(modin_df, **md_kwargs))
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/_pytest/python_api.py", line 966, in __exit__
    fail(self.message)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/_pytest/outcomes.py", line 196, in fail
    raise Failed(msg=reason, pytrace=pytrace)
Failed: DID NOT RAISE <class 'Exception'>

---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml

=========================== short test summary info ============================
FAILED modin/pandas/test/test_io.py::TestCsv::test_read_csv_s3[None] - Failed...
= 1 failed, 1998 passed, 341 skipped, 123 xfailed, 1 xpassed, 3914 warnings in 137.61s (0:02:17) =
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.2, pluggy-1.0.0
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /modin, configfile: setup.cfg
plugins: benchmark-3.4.1, cov-2.11.0, forked-1.4.0, xdist-2.5.0
collected 2464 items

modin/pandas/test/test_io.py ........................................... [  1%]
........................................................................ [  4%]
.............................................ssssssssssssssssssss.ss.ss. [  7%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 10%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 13%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss. [ 16%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 19%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 22%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss............................ [ 25%]
........................................................................ [ 28%]
........................................................................ [ 30%]
........................................................................ [ 33%]
........................................................................ [ 36%]
........................................................................ [ 39%]
........................................................................ [ 42%]
........................................................................ [ 45%]
........................................................................ [ 48%]
.................................s...................................... [ 51%]
........................................................................ [ 54%]
........................................................................ [ 57%]
........................................................................ [ 60%]
........................................................................ [ 63%]
........................................................................ [ 66%]
........................................................................ [ 68%]
........................................................................ [ 71%]
........................................................................ [ 74%]
........................................................................ [ 77%]
........................................................................ [ 80%]
................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 83%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 86%]
xxxxxxxx................................................................ [ 89%]
...........................................................F............ [ 92%]
........................................................................ [ 95%]
.............................................................X.......ss. [ 98%]
...x....................xx.........ss........                            [100%]

=================================== FAILURES ===================================
________________________ TestCsv.test_read_csv_s3[None] ________________________
Traceback (most recent call last):
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/httpsession.py", line 178, in send
    response = await self._session.request(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/client.py", line 559, in _request
    await resp.start(conn)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 898, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiohttp/streams.py", line 616, in read
    await self._waiter
aiohttp.client_exceptions.ServerTimeoutError: Timeout on reading data from socket

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/modin/modin/pandas/test/utils.py", line 728, in execute_callable
    pd_result = fn(pandas_df, **pd_kwargs)
  File "/modin/modin/pandas/test/utils.py", line 812, in applyier
    result = getattr(module, fn_name)(*args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 680, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 575, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 933, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/parsers/readers.py", line 1217, in _make_engine
    self.handles = get_handle(  # type: ignore[call-overload]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/common.py", line 670, in get_handle
    ioargs = _get_filepath_or_buffer(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/pandas/io/common.py", line 385, in _get_filepath_or_buffer
    file_obj = fsspec.open(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/core.py", line 141, in open
    out = self.__enter__()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/core.py", line 104, in __enter__
    f = self.fs.open(self.path, mode=mode)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1037, in open
    f = self._open(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 605, in _open
    return S3File(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 1911, in __init__
    super().__init__(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1385, in __init__
    self.size = self.details["size"]
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/spec.py", line 1398, in details
    self._details = self.fs.info(self.path)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 86, in wrapper
    return sync(self.loop, func, *args, **kwargs)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 66, in sync
    raise return_result
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/fsspec/asyn.py", line 26, in _runner
    result[0] = await coro
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 1140, in _info
    out = await self._call_s3(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 325, in _call_s3
    await self.set_session()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/s3fs/core.py", line 473, in set_session
    self._s3 = await s3creator.__aenter__()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 22, in __aenter__
    self._client = await self._coro
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 102, in _create_client
    credentials = await self.get_credentials()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/session.py", line 133, in get_credentials
    self._credentials = await (self._components.get_component(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/credentials.py", line 814, in load_credentials
    creds = await provider.load()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/credentials.py", line 486, in load
    metadata = await fetcher.retrieve_iam_role_credentials()
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 176, in retrieve_iam_role_credentials
    role_name = await self._get_iam_role(token)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 200, in _get_iam_role
    return await (await self._get_request(
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/utils.py", line 127, in _get_request
    response = await session.send(request.prepare())
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/aiobotocore/httpsession.py", line 212, in send
    raise ReadTimeoutError(endpoint_url=request.url, error=e)
botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/modin/modin/pandas/test/test_io.py", line 936, in test_read_csv_s3
    eval_io(
  File "/modin/modin/pandas/test/utils.py", line 835, in eval_io
    call_eval_general()
  File "/modin/modin/pandas/test/utils.py", line 818, in call_eval_general
    eval_general(
  File "/modin/modin/pandas/test/utils.py", line 767, in eval_general
    values = execute_callable(
  File "/modin/modin/pandas/test/utils.py", line 734, in execute_callable
    repr(fn(modin_df, **md_kwargs))
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/_pytest/python_api.py", line 966, in __exit__
    fail(self.message)
  File "/home/ray/anaconda3/envs/modin/lib/python3.8/site-packages/_pytest/outcomes.py", line 196, in fail
    raise Failed(msg=reason, pytrace=pytrace)
Failed: DID NOT RAISE <class 'Exception'>

---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml

=========================== short test summary info ============================
FAILED modin/pandas/test/test_io.py::TestCsv::test_read_csv_s3[None] - Failed...
= 1 failed, 1998 passed, 341 skipped, 123 xfailed, 1 xpassed, 3914 warnings in 137.61s (0:02:17) =

@modin-bot
Copy link

modin-bot commented Apr 15, 2022

TeamCity Ray test results bot

Tests PASSed

Tests Logs
lternates
�[2m�[36m(pid=7029)�[0m fatal: bad object HEAD
�[2m�[36m(pid=6791)�[0m error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates
�[2m�[36m(pid=6791)�[0m fatal: bad object HEAD
�[2m�[36m(deploy_ray_func pid=8296)�[0m FutureWarning: Passing None for skipna is deprecated and will raise in a futureversion. Pass True instead. Only boolean values will be allowed in the future.
�[2m�[36m(deploy_ray_func pid=8296)�[0m FutureWarning: reindexing with a non-unique Index is deprecated and will raise in a future version.
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.1, pluggy-1.0.0
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /modin, configfile: setup.cfg
plugins: benchmark-3.4.1, cov-2.11.0, forked-1.4.0, xdist-2.5.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [49549] / gw1 [49549] / gw2 [49549] / gw3 [49549] / gw4 [49549] / gw5 [49549] / gw6 [49549] / gw7 [49549] / gw8 [49549] / gw9 [49549] / gw10 [49549] / gw11 [49549] / gw12 [49549] / gw13 [49549] / gw14 [49549] / gw15 [49549] / gw16 [49549] / gw17 [49549] / gw18 [49549] / gw19 [49549] / gw20 [49549] / gw21 [49549] / gw22 [49549] / gw23 [49549] / gw24 [49549] / gw25 [49549] / gw26 [49549] / gw27 [49549] / gw28 [49549] / gw29 [49549] / gw30 [49549] / gw31 [49549] / gw32 [49549] / gw33 [49549] / gw34 [49549] / gw35 [49549] / gw36 [49549] / gw37 [49549] / gw38 [49549] / gw39 [49549] / gw40 [49549] / gw41 [49549] / gw42 [49549] / gw43 [49549] / gw44 [49549] / gw45 [49549] / gw46 [49549] / gw47 [49549]

......�[2m�[36m(deploy_ray_func pid=3481)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=3481)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=3481)�[0m 
�[2m�[36m(deploy_ray_func pid=3481)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=3481)�[0m 
�[2m�[36m(deploy_ray_func pid=3481)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=3481)�[0m 
�[2m�[36m(deploy_ray_func pid=3481)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=3481)�[0m 
............�[2m�[36m(deploy_ray_func pid=3503)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=3503)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=3503)�[0m 
�[2m�[36m(deploy_ray_func pid=3503)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=3503)�[0m 
�[2m�[36m(deploy_ray_func pid=3503)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=3503)�[0m 
�[2m�[36m(deploy_ray_func pid=3503)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=3503)�[0m 
..............�[2m�[36m(deploy_ray_func pid=6865)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=6865)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=6865)�[0m 
�[2m�[36m(deploy_ray_func pid=6865)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=6865)�[0m 
�[2m�[36m(deploy_ray_func pid=6865)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=6865)�[0m 
�[2m�[36m(deploy_ray_func pid=6865)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=6865)�[0m 
........�[2m�[36m(deploy_ray_func pid=6936)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=6936)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=6936)�[0m 
�[2m�[36m(deploy_ray_func pid=6936)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=6936)�[0m 
�[2m�[36m(deploy_ray_func pid=6936)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=6936)�[0m 
�[2m�[36m(deploy_ray_func pid=6936)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=6936)�[0m 
................................ [  0%]
......................................................................... [  0%]
........................................................................ [  0%]
........................................................................ [  0%]
.....................................x.................................. [  0%]
..........................................�[2m�[36m(deploy_ray_func pid=6845)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=6845)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=6845)�[0m 
�[2m�[36m(deploy_ray_func pid=6845)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=6845)�[0m 
�[2m�[36m(deploy_ray_func pid=6845)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=6845)�[0m 
�[2m�[36m(deploy_ray_func pid=6845)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=6845)�[0m 
.............................. [  0%]
...............................................x........................ [  1%]
.....................�[2m�[36m(deploy_ray_func pid=5485)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=5485)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=5485)�[0m 
�[2m�[36m(deploy_ray_func pid=5485)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=5485)�[0m 
�[2m�[36m(deploy_ray_func pid=5485)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=5485)�[0m 
�[2m�[36m(deploy_ray_func pid=5485)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=5485)�[0m 
........x.......................................... [  1%]
............................................................�[2m�[36m(deploy_ray_func pid=8296)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=8296)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=8296)�[0m 
�[2m�[36m(deploy_ray_func pid=8296)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=8296)�[0m 
�[2m�[36m(deploy_ray_func pid=8296)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=8296)�[0m ............ [  1%]
........................................................................ [  1%]
................x....................................................... [  1%]
........................................�[2m�[36m(deploy_ray_func pid=5099)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=5099)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=5099)�[0m 
�[2m�[36m(deploy_ray_func pid=5099)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=5099)�[0m 
�[2m�[36m(deploy_ray_func pid=5099)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=5099)�[0m 
�[2m�[36m(deploy_ray_func pid=5099)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=5099)�[0m ................................ [  1%]
......................................................................... [  1%]
........................................................................ [  2%]
....................................�[2m�[36m(deploy_ray_func pid=5099)�[0m FutureWarning: Dropping invalid columns in DataFrameGroupBy.agg is deprecated. In a future version, a TypeError will be raised. Before calling .agg, select only columns which should be valid for the function.
.................................... [  2%]
.......................................................................... [  2%]
......................................................................... [  2%]
............................................................................ [  2%]
........................................................................ [  2%]
......................................................................... [  2%]
........................................................................ [  3%]
........................................................................ [  3%]
......................................................................... [  3%]
...�[2m�[36m(deploy_ray_func pid=8229)�[0m FutureWarning: 'base' in .resample() and in Grouper() is deprecated.
�[2m�[36m(deploy_ray_func pid=8229)�[0m The new arguments that you should use are 'offset' or 'origin'.
�[2m�[36m(deploy_ray_func pid=8229)�[0m 
�[2m�[36m(deploy_ray_func pid=8229)�[0m >>> df.resample(freq="3s", base=2)
�[2m�[36m(deploy_ray_func pid=8229)�[0m 
�[2m�[36m(deploy_ray_func pid=8229)�[0m becomes:
�[2m�[36m(deploy_ray_func pid=8229)�[0m 
�[2m�[36m(deploy_ray_func pid=8229)�[0m >>> df.resample(freq="3s", offset="2s")
�[2m�[36m(deploy_ray_func pid=8229)�[0m 
..................................................................... [  3%]
............................................................................ [  3%]
........................................................................ [  3%]
........................................................................ [  3%]
........................................................................ [  4%]
......................................................................... [  4%]
.......................................................................... [  4%]
........................................................................ [  4%]
......................................................................... [  4%]
......................................................................... [  4%]
........................................................................ [  4%]
..............................................x.............x............. [  5%]
........................................................................ [  5%]
......................................................................... [  5%]
.............x.......................................................... [  5%]
........................................................................ [  5%]
........................................................................ [  5%]
......................................................................... [  5%]
..x..................................................................... [  6%]
......................................................................... [  6%]
.x...................................................................... [  6%]
........................................................................ [  6%]
x......s...s........s....s..s....s...s....s.....s.s.s....s.s..sssss.ssss [  6%]
ssss..ssssssssssssss.ssssssssss.ss..sss.sssss..ss..ssssxssss.sssssssssss [  6%]
.sssssss.s.ssssssssssssss.ss.s.s.s..ssss.ssss.ss.ssssssssssss.ss.sss.s..s [  7%]
..sssssssssssssssssssssssssss...ssssss.ss..ssss.ssss.sss.sssssss.s.s.s.s [  7%]
ssss.ssssss.sssss.sss.sss.ssssss..sss..ssssssss.s.sss.sssssssss.sssss.ssss [  7%]
.sssssssssssssssssssss.s.ssssssssssssssssssssssssss.sssssssss..sssssssss [  7%]
ssssssssssssssssss.ssssss.ssssss.sssssssss.sssssssssssssssssssssss.ssssss [  7%]
ssssssssssssssssssssss.sssssssssssssssssssssss.s.sss.sssssssssssssssssss [  7%]
ss..ss...ssss.ssss.sssssssssssssssssss.sssss.sss.ssssssssss....ssssss.ss [  7%]
s.sss.sssss..s.ss.sss..sss..sssss.ssss..ssss..sssss.s..sssssss.ssss.ssss [  8%]
sssssssssssss..ssss.ssssssssss..s.ssssss..ssssss.ssssssss.ssssssssss.sss. [  8%]
ssss.sssssssssssssss.ssss.ssssssss.ssss...ss.sssssssssssssssssssssss..ss [  8%]
ss.sss.s..ssssssssssssssssssssssss..ssssssssssssss..ssssss.s.ssssssssss.s [  8%]
.sssssssss.sssssssssssssss.ssss....sssssssssssssssssss.ss.s..ssssssssss. [  8%]
sssss.ss.ss.ssssssssssss....ssssssss..ssssss..ssssssss..sssss...ssssss.. [  8%]
s.ss.ssssssss.ssssssssss...sssssssssssssssss..sss.ssssssssssssssssssssss [  8%]
sssssss.s..ssssssssssssssssss.ssssssssssssssssss.sss.sssssssss....ssss.s [  9%]
sssssssss.s.ssss.sssssssssssssssssssssss..ssssssssss.ssssssssssssssss.ss [  9%]
.ss.sssssssssssss.sssssssss.ssssssssssssssssssssssssssssssssssss.sss.sss [  9%]
ssssss..ss.ssssss...ss..sss.ssss.s..ssssss..sss..sssssssssssssssssssssss [  9%]
ssssssssss.ssssss.sssssssss.sss.ssssssssssssss.s.sssssss..ssss...ssssssss [  9%]
ssssssssssssssssssssssss.ssssss.ssssss.sssssssssssssssssssssssssssssssss [  9%]
sssssss...ss.ssssssssssssss.sssss.ss.sssss.sssssss...ssss.ssssssssssssssss [  9%]
s.ssssssssssssssssss.ssss.ssss..ssssssssssssss.ss.ss.ssss.ssssssssss.s.sss [ 10%]
sss..sssss.sssss.sssssssssssssssssss.ssssss.ssss.ssssssssssssss..ssss.ss [ 10%]
ssssssssssssssssss.ssssssssssssss..sssssss..sssssssss.ssssssssssssssssss [ 10%]
sssssss.ss.sssssssssss.ssssss.s.ss.sss....ssssss.ssssssssss.ssssss.sssss [ 10%]
sssssssssssss.sssssss.sssssssssss.sssss.sssssssssssss.ssss.sss.ssssssssss.s [ 10%]
sssssssssssssssssssssssss.sssss.ssssssssssss..ss..sssssssssssssssssssssss [ 10%]
ssssss.sssssssssssss.ssssss.sssss.sssss.s.s.ss.ssssssss.ssssssssssssssss [ 10%]
sss.sssss.sssssss.ssssssssssssssssssssssssss.sssssssss.ss.sssssssss.ssss [ 11%]
sssssssssss.sssssssssssssssssssssssss.ssssssssss..sssssss.s.sssssssssssss [ 11%]
sss.sssss.sssssssssssssssss.sss.ss.sss..sss.sss..ssssssssss.ss.ss..sssss [ 11%]
s..ss.ssssssssssss.ssssssssssssssssssss.ssssssssssssss.ssss.sssssssssss..ss.s [ 11%]
s.sssssssssss.s.sssssssss.sss.sssssssssss.ssss...sssssssssssss..ssssssss [ 11%]
ss.ssss.sssssssssssssssss.s.sssssssssssssss.sss.ss.sssssssss.s.sssssssssss [ 11%]
ssssssssss.sssssssssssssssssssssssss.ssss.sssssssssssss.sss.s.sssssssssssssss [ 12%]
sssss.ssssssssssssssssssssss.ssssss.ssssssssssssssssssssss.ssssssssssssss [ 12%]
ssssss.sss.ssssssssssssssssss.sssssssss.ssssssssssssss..sssssss.s.ssssss [ 12%]
ss.sssssss.sss.ss.ssss.s.s.s.sssssssss.s..sssssssssssss.sss.ssssssssssss [ 12%]
.sssssssssss.ss.sssss..sssssss.ss.ssssssssssssss..ss.ssssssssss.ssssssss [ 12%]
ss.ssss.ss.ssxss.s.sssssss.sssssssssssssssss.ssssssssssssssssss..sssssss [ 12%]
sssss.sss.sssssssssssssss.s.s.sss.sssssssssss.sss.sssssssssssss.ssssssss [ 12%]
sssssssssx.ssss.sssssss.ssss.s.s.sssssssssssssssss..ssssssss.s.ssssssss.ss [ 13%]
s.sssssss.ssssss.sss.sssssssssssssssssssss.sssss.s.ss.sssss.sssssssssssss [ 13%]
ss.ss.sssssss.sssssssssssss.sss.ssssssssssssssss...............sss.sssss [ 13%]
sssssssssssss........ss.ssss.sssssssssssssssss.s...sssssssss.sssssssss.ss [ 13%]
sss.s.sss.ssss.ssssssssss.sss.ssss.sss.s.sssss.sssssssssssss.sss.sssssss [ 13%]
ss.s.ssssss.s.ss.sssss.ssssss.ssssssss.ssssss.ss.sssssss.ssss.sss.ssss.sss [ 13%]
.sssss.s.ssssssss.s.sssssssss.sssssssss.ss.sssssss.s.ssssssss.ssss.ssssss [ 13%]
ssssssss.sss.ss..sssssssssss.sss.s.ss.ssssssssss.ssss.s.ss.ssssssssss..s [ 14%]
sssss..s..ssssss.ss.sss.s.s..s.sss.ssssssssss..ss.s.sssss.sssssssssssss. [ 14%]
.sss..ss.ss.ssssssssss.ss.ssssss.ssssssssssss.s.sss.s.ssssssssssss.ssssss [ 14%]
.ss.sssssssssss.sss.ss..ss..ssssssssssss.sssssss.s.sss.ssssss..ss.ssssss [ 14%]
sssssss.ss.ssssssss.ssssssssssss.ss.sssssss.sssss.ss.s.sssssssssssssssssss [ 14%]
ssss.ssss..ssssssssssssss..s.s.sssssssssssss.sss..ssssssssss.sssssss..ss [ 14%]
ss..ssssssssssssssss.sss.ssssssssss.ss.ssssss.sssss.s..sssssssssssss.sss [ 14%]
sss.sss.sssssssss.s.ssssssss.ssss.ssssssssssssss.sss.sss.ssssssss.sssss.s [ 15%]
.ssssss.ssssss.s.ss.s.ssssssssssss..sss.sssss.sssssssssssss.ssss.sssssssss [ 15%]
ssssssss..s.ssssssss.s.ssssssss.sss.s.s.ssssssssssss.s..sssssssssss.ssssss [ 15%]
ss.s.ss.sss..ssssssss.ssss..s.ssssss.ssss..ssss.sss.ssss.ssssssssssss.ss [ 15%]
.sssssssssssss.sssssssssss.sss.sssss.ss.sssss.sssss.sss.sssss..ssssss.s..s [ 15%]
sss.s.ss.ssssss.ssssss.s.ssssssss..sssss.ssss.sssssssssss..sssssssssss..ss [ 15%]
.ss.ssssss.ssss..sss.ssssss.sss.ssssss.sss.sss.sssssssss...sss.sssssss.s [ 15%]
.s.ssssssssssssssss.ss.sss.ssssssss.s...s..s.sssssssss..ssss.ssss.sss..s [ 16%]
sssssssss..s..ssssssss.ss.sss.ssssssssss.ssss..ss.s..s.ssssssss.s.ssss.s [ 16%]
sssss.s.ssss.ssssss..s.sssssssssss.ssssssssssssss.ssss.sssssss.sssssss.sss [ 16%]
sss.ssssssssssss..sssssssss.ss.ssssssss.ssss.s..ss..ss.sssssssss..ss.sss [ 16%]
sssssssssss.sss.sssssss.sss.sssssssssssssss.sssss.ssssss.sss..sssss.sssssss [ 16%]
s.ssssssss.ssss.ss.ssssssssss.s.sss.ssssssssss..ssssssssssss.ssssssssss.s [ 16%]
ss.ss.ssssss.sssssssssss.sssssssss.s.ssssssssss.ss.ssssssssssssssssss.ssss [ 17%]
ssssss..sssssssssss.sss..ssssssssssssssssss.sssssss..ssssss.ssssss.sssss. [ 17%]
sssssssssssssssssssssss.s.sssssssssssssssssssssss.ssssssss.sssssssssssss [ 17%]
ssssssssssssssss..sssss.ssssssssssssssssssssssssssssssssssssssssss...sss [ 17%]
sss.ss.sssssss.ssssssss.ss.s..sssssssssssssssssss.sss.sssssssssss.ssssss [ 17%]
ssssssss.sssssss.sssssssssssss.sssssssssssssssssss.ssssss.ssssss.sss.ss. [ 17%]
s.sssss.ssssssssssssssssssssssssssss.sssssssssss.sss.ssssss.ssss.ssssssss. [ 17%]
sss.ss.ss.sssss.ssssssssssss.sss.ssssssssss.sssssss.ssssssssss.ssssssssss [ 18%]
ssss..sssssssssss.sssssss.sssssssssss.ssss.ssssssssssssss.sss.ssssssssss [ 18%]
ss.sssss.ss.sssssssssssssssssssss..ssssssss.ss.sssss.sss.sss.ssssssssss. [ 18%]
sss.sssssssssssssss.sss.sss.sssssssssssssssssssssssss.sssss.sss.ssssssss [ 18%]
sssssssssssssssss.ssss..sss..ssssssss.sssssssss.....ssssssssssss.....sss [ 18%]
.ssssssss..sssssssss.sssssssssss.s..sssssssssssss.s.ssssss.sss.sssssssss [ 18%]
ssss..sss.ssssssssssssssssssss.sssssssss.s..ssssss.sssss.....s.sssssssss [ 18%]
ssssssssssssssssssssss.ss.sssssssssss.ss.sssssss..s.ssssssssss.s.sssssss [ 19%]
ss.sssss.ssssssss.sss..ss..ss.sssssssss.ssssss.ssss.ssssss.ssssssssss.ss [ 19%]
ss..sssssss....ssssssssssssss.sssssssssssssss.sssss.ssssssssss.sssssssss [ 19%]
s.ssssssss.ss.s.sssssss..sssssssssssssssssssssssssssss.sss.ssss.ssssssss [ 19%]
ss.ssssssssssssssssss..sssssssssssssss.ssssssssssssssss.ssssssssssssssss [ 19%]
sssssssssssssss.sssssssssssssssssss.ss.s.ssssss..sssssss..s.ssssssss...s [ 19%]
s...ssssss.sssss..sssssssssss.ss.sssssssssssssssssss.sssssss.s.sssssssss [ 19%]
sssssssss.ssssss....sssssssssss.ssssssssssssssssssssss.ss...ssssssssssss [ 20%]
.ss..ssss..ssssssssss.s.sssssssssssssssss.ssss.ss....ssssssssss.ss..sss. [ 20%]
..s.ssssss........ssssss.ssssssssssssssssssss.sssssssss..sssssssssssssss [ 20%]
ss..ss.ss.ssssss.ss.ss.ssssssss..ssssss.sssssssssssssss.ss.sss.ssssssssss [ 20%]
.ssssssssssssssssssssssssssssssss.sss.sssss.sssssssssss...s..sssssssss.s [ 20%]
sssss..sss.ss.ssssss..sssss.sssss..s..sssssssss..ss.ssssssssss..sssss... [ 20%]
sss...s.ssssssssss.s.sssssssssssss.sssss.sssssssssssssssssssssssssssssss [ 20%]
ssssssssssssssssssssssss.sssss.sss.ssss.sssssss.sssssssssssss..s.ssssss. [ 21%]
ssssssssssss.sss...s.ssss.s.sssssssssss.sssssssss.sssssss.ssssssss.ss.ss. [ 21%]
ssss...sssssssss.ssss.ssss.ss.ssssssssssssssssssss.ssssssssssssssssssssss [ 21%]
ssssss.ssss.ssss.ssssssssssssssss.sssssssss.ss.ssssss..ss.s.ssss.sssss.sss. [ 21%]
ssssssss...sssss.ssssssssssssssssssssssssssssssssssss.sssss.sssss.ss................. [ 21%]
ssssssssssssss.s.s....s.ssssssss.s..s.sssssssssssssssssssss.ssssssss.ss. [ 21%]
sssss.ssss.s.sssssssssssssssss.sssssss.ss.ssssssss.sss.sssssssssssssssss [ 21%]
ssss.ss.sssssssssssss.sss.s.ssssssssss.s.sssssssssssssssssssssssssssssss [ 22%]
ssss.sssss.ssssss.ssssssssssss.ssssssssssssssssssssssssssssssssssss..s.s [ 22%]
ssssssssss.ssss.ss.ss.s..ss.ssss.ssssssssssssssssssss.ssssssssssssssssss [ 22%]
sssssssssssssssss.sss.ssss..sssss.sssss.ssssssssssssssssssssssssssssssss [ 22%]
sssssss.ssss.ssss.sssssssss.s.sss...ssss.ssssssssssssssssssss.ssssssss.ss [ 22%]
ssssssssss.ssssss.sssssss.sss.ssssss.sssssssssssss.ss.ssssssssssssssssssssss [ 22%]
sssss.sssss.sss.ss..ssssssssss.sssssssssssssssssssssss.ssssssssssssss.sssss [ 23%]
sssssss..sssss.s.ssssssss.ssssssssss.ssssssssssssss.sss..sssssss.sssssss [ 23%]
ssssssssss.ss..s...s..s...s...ssssssssssssss.ss.ssssssssssssss.sssssssss [ 23%]
ssssssssssssss.s..ssssssssssss.sssssssssssssssssssss.sssss.s.s..ssssssss [ 23%]
sssss..ss.sssss..sss.ssssssssssssssssssss.ss....s.ssssssssssssssssss.sss [ 23%]
sssssss.sssssssssssss..sss.sssss.s.ssssss.sss.sssss.ssssssssssssssssssss [ 23%]
ssssssss..sssssssssssssssss.ss..sss.ss.sssss.sssssssss.s.ssssss..sssss.. [ 23%]
.ssss.ssssss.sss..sssssssssssssssssssssss.s.sss.ss.ssssssssssssssssssss.s [ 24%]
sss..sss.s.ssssssssssssssssss..ssssssssssssssssssssssssss.s.ssssssssssss [ 24%]
ssssssssssssssssssss.s.ss.ssssssssssssssssssssssssssssss.sssssssssssssss [ 24%]
sssss.sssssssssssss.ssssssssssss.sss.ssssssssssssssssssss.s..ssssss.ssss [ 24%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss. [ 24%]
s.s.ss.sssssssssss.sssssssssssssssssss.ssssssss..sssssssssssssssssssssss [ 24%]
sssssssssssss.ssss.s.ssssssss.sssssssssssssssssssssss.ssssssssssssssssss [ 24%]
ss.sssssssssssssssssssssssssss...sssssssssssssssssssssssssssssss.ssssss. [ 25%]
sssssss..sssssssssss.sssss.s.sssssssssssss.sssssssssssssssss.sssssssss.s [ 25%]
ssssssssssssssssssss.sssss.ssssssssssssssssss.s.ssssssssssssssssssssssss [ 25%]
ssssssssssssssssssssssssssssssss.s.sssssssssssssssssss.s.sssss..ssssssss [ 25%]
ssssss.ssssssssssssss.sss.sssssssssss..sssssssssssssssssssssss....ssss.s [ 25%]
sssssssssss..sssssssss.sssssssssssssssssssssssssssssssssssssssss..sssss.s [ 25%]
sssssss.ssss.sssssssssss.ss..ss.ss.sssssssssssssssssss.sssssssssssssssss [ 25%]
sssssssssssssssssss.sssssssss.s.ssssssssss.sssssssss..ssssssssssssss.sss [ 26%]
sssssssss.s.ssssssssssssss....s.ss..ssssssssssssssssssssss.ssss.sss.ssss [ 26%]
sssssssssssssss.s..s..sss.ssssssss.s.sssssssssssssssss.ssssssssss.sssssss [ 26%]
ssssssssssss..ssssssss.sssssssssssssssssssssss.sssss..ssssssssssss.sssssss [ 26%]
sss.ss.sssssssssssssssss.s.sss.ssssssssssss.ssssss.s.sss.sss.ssssss.ssss [ 26%]
sssssssss.sssssssssssssssssss.sssssssssssssssssss.ssssssssssssss.ssss..s [ 26%]
sssssssss.ss.s.s.s.s..s.sssssss.ssssssssssss.sss.ssssssssssssssssss.s.sss [ 26%]
ssssssssssssss.sssssssssssssssssss.sssssssssssssssssss..ssssssssssssssss [ 27%]
s.sssssss....ssss.sss.sssssssssssssssssssssssssssssssssss.ssss.sssssssss [ 27%]
ssssss.sssssssss.sssssssssssssssss.sss.sssssssssssssssss.ssss.ssss.ssssss [ 27%]
ssssssssssssssssssssss.sssss.sssssssss.ssss.sssssssssssss.sss.ssss..sss.ss [ 27%]
ss.sssssssssssss.ssssss.sssssss..ssssssssssssssss.sssssssssss..sssssssss [ 27%]
sssssssssssss.ssssssssssssssss.ss.sssssssssss.ssssssssss.s.ssssssssss.ss [ 27%]
ss.ssssssss.ss.sss..s.s.ssssssssss.ssssssssssss..ssssss.s.sssss.s.ssssss [ 28%]
ssssssss.ss.s.sssssss..ssssssss.sssssss.ssssss.ssssss.sssss.sssssss.sss.s [ 28%]
sssssssssssssssssss.ssssssssssssssssssssssssss..sssss.ssssss.s.ss.ss.sss [ 28%]
sssssssssss.sssssssssssssssssss..ssssssss.ssssssssssssssssssssss.sssssss [ 28%]
ssss.sssss.s..s.s.sss.sssssssssssssssssssssssssssssssssssssssssssssssssss [ 28%]
.ssssss.sssssssssssssss.sssssss.ss..ssssssssss..sssssssss..ssss.ss..ssssss [ 28%]
ssssssssss.ss.ssssss.sssssssssssss.sssssssssss.sssssssssss.ssssssssssssss [ 28%]
sssssssssssssssssssssss.sss.ssssssssssss.s.sssssssssssssssssssss.sssssss.. [ 29%]
ss.ssss.ssss.s.sss.sssss.ssss.sssssssssssssssssss.ssssss.sss.ssssssssssssss [ 29%]
sss..ssssssssssss.ssssssssssssssssss.ssssssssssssssssssssssss.ssssssssss [ 29%]
sssssssssss.sss.sssssssssssssssssssssssssssssssssss.ss.s.ss.s.ssssss.s.s [ 29%]
sssssss..ssssssss.s.sssssssssssssssss.ssssssssssssss.sssssssssssss.ss.ss [ 29%]
ssssssssss.sssssssssss.ssss.sssssssssssssssssssssss.ssssssssssssssss..s. [ 29%]
ssss.ssss.sssssssssss.ssssssssssssssss.ss..ssssss.ssss.s.ssssssssssssssss [ 29%]
ssssssssssss.ssss.sssssss..sssssssssssssssssssssssssssssssssssssss.ssss. [ 30%]
ssssssssssssssssssss.sssssssss..ssssssssssssssssssssss.ssss.sss.ssssss.sss [ 30%]
sssssssssssssssssssssss.sss.s.ssss.ss..s.sssssssssssssssssssssssssss.ssss [ 30%]
.ssssssssssssssssssssssss.s.sssssssssssss.sssssssssss.ssss....sssssssssssss [ 30%]
sssssssssssssss.ssssss.ss.s.sss.sss.ssssssssssssssssssssssssssssssss.ssss [ 30%]
ssss.ssssssssssssss.s.ssssssssssssssssssssssssssssss..ss..ssssss..ss.sss [ 30%]
ssss.sssssssssssss..ss.s.s.s.s.sssssssssssssssssssssss..sssss.sss.s.ssss [ 30%]
ssssssssssss.ssssss.sss.ssssss.sssssssssss.ssssss.s.ssssssssssss.sssssss [ 31%]
sssssssssssss.ssssss..sssss.ss.s..ssssssssssssssssssss.ssssss....sssss.. [ 31%]
ssssssss.s.s.sssssssssssssssssss..ssssssssssssssssssssssssssssssssssssss. [ 31%]
ssssssssssssssss.s.ssssssssssss..s.s.sssssss..ssssss.s.ssssssssss.s.s.ss [ 31%]
ssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssss [ 31%]
sssssss.sssssss.ssssssssssssssssssssssssssss.ssssssss..sssssssssssssssss [ 31%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssss.s.sssssss [ 31%]
sssssssss.ssssssssssssssss.sssssssssss.ssssssssssssssssssssssss.ssss.sss [ 32%]
sssssssssssssssss.sssssssssss..sssssss.sssssssss.sssssssssss.s.ssssss.sss.s [ 32%]
ssss.s.sssssssssssssss.sss.sssssssssssssssssssssssssssssssssss..ssssssss [ 32%]
ssssssssssss.sssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssss [ 32%]
sssssssssssssssssss.ssssss.ssssssssssssssssssssssssssssssss.ssssssss.sss [ 32%]
s.s.s.s.ssss.sss.ssssssssss.sssssssssssssssss.ssssssssssssssssssssssssss [ 32%]
ssssssssssss.sssssssssssssssssssssssssssssss.sssssssssssssssssssss.s.sss [ 32%]
s.sssss.ssssssssss.ss.s.sssssssss.ssssssssssssssssss.sssssssssssssssssss [ 33%]
sssssssssssssssss.sssssssssssssssssssssssss.sssssssssssssssssss.sssssssssss [ 33%]
.sssssssssssssssssssssssssssssssssssssssssssssssss.sssssss.sssssss.sssss [ 33%]
sssss.ssssssssss.sssssssssssssssssssssssssssssssss.s.sssssss.s.sssssssss [ 33%]
ss.sssss.ssssssssssssssssssssssssssssssssssssssss..ssssssss..ssssssssssss. [ 33%]
sssssssssssssssssssssssssssssssssssssssssssssssss..ss.sssssss.ssssssss.s [ 33%]
ssssssssss.ssssssssssssssssss.ssssssssssssssssssssssssssssssss.ss.sss.ss [ 34%]
.s.sssssssss.s.s.ss.s.s.s.ssssssssssss.s.ss.ssssssssssssss..ssssssssssss [ 34%]
sssssssssssssssssssssssssssssssss.s.sssssssssssssss.ssssssssssssssssssss [ 34%]
sssssssssssssssssssss.s.sssssssssssssssssssssssssssssssssssssssssssssssss [ 34%]
ssssssssssssssss.s.s.s.s.sssssssssssssssssssssssssssssssssssssss.sss.sss [ 34%]
ssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssss.sssssssss [ 34%]
sssssssssssssssssss.sssssssssssss.sssssssss.s.ssssssssssssss.s.sssssss.s [ 34%]
sssssssssssssssssssssssssssssss.sssssssssss.s.ss.sssssssssssssssssssssss [ 35%]
ssssssssssssssssssssssssssssssssssssssssssssss.s.sssssssssssssssssssssss [ 35%]
ssssssss.sssssssssssssssssssss.sssssssssssssssss.sssssssssssssssssssssss [ 35%]
sssssss.s.sssssssssssssssssssss.s.ssssssssssssssssssssssssssssssssssssss [ 35%]
ssssss.sssssssssssssssssssssssssssssss..ss.sssssssssssssssssssssssssssss [ 35%]
sssssssssssssssssssssssssssssssssss.ssssssssssssssssssss.ssssssss.sss.ss [ 35%]
sssssssssssss.s.sssss.ssssssssssssss..ssssssssss.s.ss.s.ssssssssssssssss [ 35%]
sss.s.s.s.s.s..ss..ssssssssssss.ssssssssss.s.sssssssssssssss.sssssss.s.s [ 36%]
sssssssssssssssssss..sss.ssssssssssssss.s.sssssssssssss.ssssssssssssssss [ 36%]
sssssssssssssssssssssss.ss.ssssssssssssss.ssssssssss.sssssssssssss.sssss [ 36%]
.ssssssss.sss.sssssssssss..sssssssss.sss.sss.ss.ssssssssssssssssssssssss [ 36%]
sssssss.ssssssss.sssss.sss.ssss.s.sssssss.s.s.s.sssssss.sssssss..sssssss [ 36%]
ssssssssssssssssssss..ssssssssssss.ss.sssss.ssssssssssssssss..ssssss.sss [ 36%]
ss.s.sssssssssss.sssssssssssssssssssssssssss.sss.ssssssssssssssssssss.ss [ 36%]
sssssssssssssssssssssssssssssssssssssssssss.s..sssss.ssssssssss.ssssss.s [ 37%]
.s.sssss.sssss.ssssssss.sssssssssssssssssssssssssssssssssssss.ssssssssss [ 37%]
sss.ssssssssssssss.ssssssssssss.ssssssssssssssssssssssssssssssssssss.sss [ 37%]
.ss.ssssssssss.sssssssssssssssssssssssssssssssssssssssssss.sssssssssss.s [ 37%]
sssss.sssssssssssss.sssssssssssssssssssssss.ssssssssssssssssssssssssssss [ 37%]
sssssssssssss.s.sssssssssssssssssss.ssssssssssssss.ssssssssssss.s.ssssss [ 37%]
ssssssss.ss.s.ssssssssssssssssssssssssssssssssssssssssssss.sssssssssssss [ 37%]
ssssssssssssssssssssssssssssssssss.sssssssssssssssssssss.sssssssssssssss [ 38%]
s.ssssss..sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 38%]
sssssssssssssssssssssssssssssssss.s.ssssssssssssssssssssssssssss.sssssss [ 38%]
sssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssss.sssssssss [ 38%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ss. [ 38%]
ssssssssssssss.s.ssssssssss..sssssssssssssssssssssssssssssssssssssssssss [ 38%]
sssssssssssss.ss.s.sssssssssssssssssssssssssssssssssssssssssssssssssssss [ 38%]
sssssssssssssssss.ssssssssssssssssssssssssssssssssssssss.s.sssssssss.sss [ 39%]
sssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssss [ 39%]
.ss.sssssssss.s.sssssssss.ssssssssssssssssssssssssssssssssssssssssssssss [ 39%]
ssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssss.sssssssss.ss [ 39%]
sssssssssss..sssssss.s.ssssssssssssssssssssssssssssssssss.sssss.ssssssss [ 39%]
ssssssssssssssssssss.ssssssssssssssssssssssss.ssssssssssssssssssssssssss [ 39%]
sss.s.sssssssssssssssssssssss.s.ss.ssssssssssssssssssss..sssssssssssssss [ 39%]
sssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 40%]
sssssssss.ssssssss..sss.s.ssssssssssssssssssssss.ssssssssssssssss.ssssss [ 40%]
sssss.ssssssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssss [ 40%]
ssssssssssssssssssss.ssssssssssssss.s.sssssssss.s.s.s.s.ssssssssssssssss [ 40%]
ssssssssssssss.ssssssssssssss..sss.ssssssssssssssssssssssssssssssssssss. [ 40%]
s.sssssssssss.ssssssss.sssssssssss.sssssssssssssssssssssssss.sssssssssss [ 40%]
ssssssssssssssssssssssssssss.sssssssssss.sssssssssssssssss.s.sssssssssss. [ 40%]
ssssssss.ssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssss [ 41%]
..s.sss.s.s.s.s.sssssssssssssssssssssssssssss.s.ssssssssssssssssssssssss [ 41%]
sssss.sssssss.sss.s.sssssssssssssssssssssssssssssss.s.ssssssssssssssssss [ 41%]
ssssssssssssssss.sss.ssssssssss.sssssssssssssssssssssssssss.s.s.s.ssssss [ 41%]
sssssssssssssss..sssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 41%]
ssssssssssss.s.sssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssss [ 41%]
sssss.ssssssssss.sssssssssssssssssssssss.ssssss.ssssssssssssss.sssss.sss [ 42%]
ssssss.ssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssss.sss [ 42%]
sss.sssssss.ssssssssssssssssssss.ssssssss.sssssssssssssssss.sssssssssssss [ 42%]
ssssssssssssssssssssss.sssssssssssssssssssssssssssssssssss.s.ssssss.sssss [ 42%]
sxss.sssssssssssss.ssssss.sssssssssssssssssss.ssssssssssssss.ssssss.sssss [ 42%]
ssssssssss.sssss.sssssssssss.ssss..ssssss..x.x....s.sss..ssssssssss.xxsx [ 42%]
sssssss....ss.ssssssssss.sssssssssssssx.sssssssssssssssssssssssssssssssssss [ 42%]
ssssssssssss.ssssssssssssss.s...ssss.sssssssssss.ss.sxssssssssssss.sssss [ 43%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssss [ 43%]
sssssssssssssssssssxsssssssssxssssssssssssssssssss..s.s..s.s.sss.sxx.s.s [ 43%]
.x.s.ssssssssxssssssssssssssssssss.ssssssssssssssss.ss.sssssssssssssssss [ 43%]
sssssssssss.ssssssssssssssss.sssssssssssssssx.x.ssssss.s.sssssssssssssss [ 43%]
sssssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssssssssssss [ 43%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 43%]
ssssssssssssssssssssss.sssssssss.ssssssssssssssssss.s.sxssssssssssssssss [ 44%]
ssssssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssxssssssssssss [ 44%]
ssssssssssssssssssssssssss.sssssssssxsssssssssssss.sssssxsssssssssssssss [ 44%]
.sssssssssssxssssssssss.ssx.ssssssssssssssssss.ss.ssssssssssssssssssssss [ 44%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssss [ 44%]
sssssss.ssssssssss.ssssssss.s.ssssssssssssssssssssssssssssxsssssssssssss [ 44%]
sssssssssssssss.sssssssssssssssssssssssssssssssssssxssssss.ssssssssssssss [ 44%]
ssss.ssssssssssssssssssssssxsssssss.sssssssssxssssssssssssssss.sssssssss [ 45%]
sssssssssssssssss.ssssssssssssssssssssssssssssssssssxssssssssssssssss.s. [ 45%]
xsssssssssss.s.ss.sssssssss..sssssssssssxssxssssssssssssssssssssss.sssss [ 45%]
ssssssssss.sssssxxsssss.sssssssssss.sssssssssssssssss.ssssssssss.ssssssss [ 45%]
ssssssssssxsssssssssss.ssssssssssssssssssssssssss.ssssssssssssssssssssss [ 45%]
ss.ssssssss.ssssssssssssssssxssssssssssssssssxssssssssssssssssssssssssss [ 45%]
sssssxssss.sssss.sssxxsssssssssssssssssssssssssssss.ssssssssssssssssssss [ 45%]
ssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssssss [ 46%]
sssssssssssssssxsssssssssssssssssssssssssssssssssssssssssssssssss.ssssss [ 46%]
ssssssssssss.sss.ssssssssssssssssssssssssssssssxssssssssssssssssssssssss [ 46%]
ss.ssxsssssssssssssssssssssssssssssssssssxssssssssssssssssssssss.sssssss [ 46%]
ssssssssssssssssssssss.sssssssssssssssssssssssssss.ssssssssssssssssxssss [ 46%]
ssxsssssssssssssssssssssssssx.s.sssssssssssssssssssssss.xssssxsss.ssssss [ 46%]
ss.ssssssssssssxsssss.ssssssssss.ssssss.xssss.x.s.sssxxsxs..ssssssssssxs [ 46%]
sssss.sss.sxxsssssssssssssxsss.sssssssssssssssss.sssss.ssssss.ssssssssss [ 47%]
ssssssssss.sss.xssssssssssssssssssssss.xsssxxsssssssssssssssssssssssssss [ 47%]
sssssssssssssssssssssssssssssssssssssx.ss.ssssssssssssssssssssssssssssss [ 47%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxx.ssssssssssx [ 47%]
sssssssssssssssssssssssssssssssssssssssssssssssx.ssssssssssssssxssssssss [ 47%]
sssssssssssssss.sssssssssssssssssssssssssssssssssssxxsssssss.sssssssssss [ 47%]
ssssssssssssssssssss.ssssssssssssss.xsssssssssssxsssssssssssssssssxsssssx [ 47%]
ssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssxss.sxssssss. [ 48%]
sssss.ssssss.ssssssssssssxssssssssssssssssxssssxsssssssssssssssssssssss.s [ 48%]
ssssssssssssssssssxs.ssssssssssssssssss.ssssssssssxsssssssssssssssssssss [ 48%]
sssssssssssxssssssssssss.ssxss.sxxssssssssss.s.xx..ssxsssssssssxssssssss [ 48%]
ssss.s.xss.ssssssssxssxssssxsssssssxssssssxsss.sssssssssss.sssssssssssss [ 48%]
sssssxsssssssssssssss.ssss.ssssssssssssssssssxsssss.ssssssssssssssssssss [ 48%]
sssssssssssssssxsssss.xsssssssssssssssssssssssssssssssssssssssssssssssss [ 49%]
sssssssssssssssssssssss.sxssssssssssssssss.sssssssxssssssssssssss.ssssssx [ 49%]
ssssssxs.sssssssssxsssxsssssssssssssssssssssssssssssssxsssssssssssssssss [ 49%]
sssssssssssssssssssssssxssssss.sssssss.sssssssssssssssssssssssssssssssss [ 49%]
sssssssssssssssssssssssssssssssssxsxssssssssssxxsssssssssssssssssssss.ss [ 49%]
sssssssssssssssssssssssssxsssssssssssssssssssssssssssssssss.sssssssssss. [ 49%]
.sssssssssssssssssssssssssssssssssssssssssssssssssxssssssssxssssssssssss [ 49%]
ssssssssssssssssssss.sssssssxsssssssssssssssssssssssssssssssssssssssssss [ 50%]
ssssssssssssssssssssssssxsssssssssssssssssssssssssssssx.ssssssssssssssss [ 50%]
ssssssssssssssss.sssssssssssssssssxsxssssssxsss.ssssssssssssssssssssssss [ 50%]
ssssssssssssssss.ssxssssssssssssxssssssss.ssssssssssssssssssssxsssssssss [ 50%]
sssssssssssssssssssssssssssssss.ssss.ssssxxssssssssssss..sssss.xssssssss [ 50%]
ss.s.ssssssssssssss.ssssssss.sssssssssssssssssssssssssssssssssxssss..xssx [ 50%]
ssssssss.xssssssxsssssxsxss.sssssssssssssss.ssssss.sxss.sssssxssss.sssss [ 50%]
sssssssxxx.xsssxsssss.s.sssssss.ssss.ssssssssssss.sssssssxssssss.sssssss [ 51%]
sssxsssssssss.sssssssssssxsssxssssssssssssssssssss.ssssxssssssssssssssss [ 51%]
sssssssxsssssssssssssx..sssssssssssssss.s.ssssssssssssssxsssssssxxssssss [ 51%]
sssssssssssssssssssssssss.x.sssssssssssssssxssssssssss.sssssssssssssssss [ 51%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssss [ 51%]
sssssssssssssssssssxssssssssssssxssssssssssssssxssssssssssssssssssssssss [ 51%]
ssssssssssssssssssssssssssssssss.sx.ssssssssssxssssssssxssssssssssssssss [ 51%]
sssssssssssssxsxssssss.sssssssssssssssxxxsssssssssssssssssssssssssssssss [ 52%]
sssssssssssssssssssxxsssssssssssssxsssssssssssssssssssssssssssssssssssss [ 52%]
sssssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssssxssssss [ 52%]
sssssssxxssssssssssssxxxsssssssssssssssssssssssssssssxssssssssssssssssss [ 52%]
ssssxssss.xssssssssssssssssssxsssssssssss.ssssssssssssssssssssssssssssss [ 52%]
sssssssssssssssssssssxsssssxsssssssssssxxsssssssssssssssssssssssssssxsss [ 52%]
sssssxssssssssssssssssssssssssssssssssxssxsssssssxsssssx.xx.sxsxssxxssss [ 52%]
xssssssssss.x.sssssssss.sssssxsssssssssxssssssxxssssssssssssssxxsssssxss [ 53%]
sssssssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssssssssss [ 53%]
sssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssxssssssssss [ 53%]
.sssssssssssssssssssssssssx.sssssxsssssssssssxssssssxsssssxssxssssssssss [ 53%]
ssssssssssssssssssssssssssssssssssssxssssssssssssssssssxssxsssssssssssss [ 53%]
ssss.sssssssssssssx.sssssxss.ssssss.sssssxsssssssssssxssssssssssxsssssss [ 53%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 53%]
sssssssssssssssssssxssssssss..sssssssssssssssssssssssssssssssssssssxssss [ 54%]
ss.sssssssss.ssssssssssssssxxssss.ssxsssssssssssxsssssxxssssssssssssss.s [ 54%]
sssssssxssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssss [ 54%]
sssssssssssssss..ssssss.ssssssssssssssssssssssxsssxsx.xsssssx.sxxssxx.xs [ 54%]
sssx...ssxssx..ss.xxxssssxssssssssss.sssxssssssssssxssssxxssss.ss..sssss [ 54%]
sssssssssssssssss.xssxxssssssssss..ssssssssssssx.sssssssssssssssssssx..s [ 54%]
ssssssssssssssxssssxssssssssssssssssssxsssssxssssss.ssssss.sx.sssxssssss [ 54%]
sssxssssss.sssxssssxsssxx.x.xxx..sssssssxssxxsssxssssssss.ssssssssssxxss [ 55%]
ssssssxsssssssssssssssssssxssssssssssssssssssxxssssssssssxssssssssssssss [ 55%]
sssssxssssssssssssxssssssssssssssxssssssxxsssssssssxx.sssssssssssss.ssss [ 55%]
sssssssxsssssssssssssssssssssssssssxxssxsx.ssssssssssssssssxsssssssssssx [ 55%]
sssssssssxsssssssssssssssssssssssssssssssssssssssssxxsxsxsssssssssssssss [ 55%]
xsssssss..s.xsssssssssssssssssssssxxxsssssssssssssssssssssxxssssssssssss [ 55%]
sxxsssssssssssssssssssssssxxssssssssssssssssssssxxxxssssssssssssssssssss [ 56%]
sssssssssssssssssssxssssss.xssssssssssssssssssxsxsssssssss.ssssssssssxss [ 56%]
ssssssssssssssxsssxsssssssxxsssxssssssssssssssssssxxxssssssssxssssxxxxxxxxx.xxxxxxx.xxsx [ 56%]
sssssss.sxxxsxsxssssssssxssssssssssssssssxss.s..ssssssssx.ssssxss.ssssss [ 56%]
ssxsxsssssssssssssxssssssssssxsssxssssssssssssssssssssssssss.sxxsssssssss [ 56%]
sssssxsssssssssssxsxssssssssxssssssssssssssssssssssxsssssssssssssssssssss [ 56%]
ssssssssxssssxsssssssssx.ssxssssssxssssssssssssssssssssxssssssssssssssss [ 56%]
sssssssssssssssssssssxsssssssxsssssssssssssssxs.ssss.ssssssssssssssssssss [ 57%]
ssssssxssssssssssssss.ssssssssssssssssx..xx.sxssssssssxssssssssssssssssss [ 57%]
ssxssssssss.ssssssssssssssssssssssssssxxsx.sssssssssssssssss.ssssssxssss [ 57%]
ssssssssssss..sssxsssxxssxssssssssssssssssssx.sssssssssssssssssssssssxxs [ 57%]
sssxssssssssssssssssssssss.sssssssssssssssssssssssssssssssx.xsssssssssss [ 57%]
ssssssssxxxsx.sssxs.sssssssssssssssssxxsxxssssssssssxsssxsx.xsxsxxs.sssss [ 57%]
sssssssssssssssssxssssxssxsssxxxssssssssxsssssssssx.xssx.sssssssssssssss [ 57%]
ssssssssssssssssssssssss.xxxxssssssssssssssssxssxsssssssxsss.sssssssssss [ 58%]
ssxssssssssssssx.ssssssssssssssssxxxx.xssxxsssssssssssssssssssssss.sssss [ 58%]
sssss.xxssssssxxsssssssssssxxxssssssssssssssssssssssssssssssssssssssxxss [ 58%]
ssxssssxxxss..sssssssss.ssssssssssssxssssssssssssssssssssss.xsssssssssss [ 58%]
ss.ssssssssssssss.s.ssxssssssssssssssssssxssssssssssssssssssssssssssssxs [ 58%]
s.sssssx.ssssssxs.xsssssxssssssssssssssssxxx.xssss.xsssssssssssssssxssss [ 58%]
xs.x.xxssssssssxsssxssssxsxsxsxxssssssxsssssxsx..ssx..ssssssssxssxsxsssx [ 58%]
xsssssssssssssxsxss.ssxxsssssxsxssssssssssxssssssssssssxssssxxssss.ssssx [ 59%]
ssxxsxsssxsssssxssssssssssssxsssxxssssssssxsxssxsssss.xsssss.sssssssssss [ 59%]
ssssssssxxsssssssssssssssssssssxssssssssssssssssssssssssx.xxssssssss.sss [ 59%]
sssssssssssssssssxssssssss.sssssssssssssssssssssssssssssssssssssssssx.sx [ 59%]
sssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssssssxssssss [ 59%]
ssssssxsxssssssssssssssssxxsssssssssssssssssssssssssssssssssssssss.sssss [ 59%]
ssssssssss.ss..ssss.ssss.ssss.xsssssssssssssssssssxxs..sssssssssssssssss [ 59%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssx.ssxsssssssssss [ 60%]
ssssssssss.xssssss.xssssssssssssssssssssxx.sssssssxssxxssss.ssssssssssss [ 60%]
sssssxsxssssxsssssssssxxsx.sssssssssssssssssxsssssssssssssssssssssssssssss [ 60%]
ssssssssssssssxssssssssssssssxsssssssxxsssxssssssssssssssssssssssssssx.s [ 60%]
ssssssssssxxssxxxssssssssssxssssssssssxssssssssssssssssxssssxssxssssssssx [ 60%]
sssssssssxsssssssssssssssssxsssssssssssxssssssssssxsssssssssssssssssssss [ 60%]
s.sssssssssss.ssssxsxssssssssssssssssssssssssssssssxss.ssssssssssssssssss [ 60%]
sxsssxssssssssssssxxsxxsssxsxssssssssssssssssssssxsssssssssssssssssssssss [ 61%]
sssssxssssssssssssssssxssssssssssxsssssssssssssss.ssssssssxsss.ssssssssss [ 61%]
sssxxsssssssxssssxssssssxssssssssssxssssssssssxssssssxssssssssssxxsssxss [ 61%]
sssxxsssxssssssxsssxssssss.xssxssssssxssssssxsss.ssssssssssssssssss.xsss [ 61%]
sxsssssssssssssssssssssssssxsssssssss.sssssssssssssssssssssss.ssssssssss [ 61%]
xxsssssssssssssssssssssssssssssxssssssss.xxssssssssssssssssssssssssssssx [ 61%]
ssssssxsssssssssssss.sssssss.s.sssssssssssssssxxsssssssxsxsssssssssssssx [ 62%]
sxsssxss.sx.sssxssssssssssssxsx.ssssxssssxsxsssssssxssssssssssxssssxssss [ 62%]
ssxssssssssss.ssssssssssxxsxssssssxss.xsssssssssssssssssssssssxxssssssss [ 62%]
ssssssssxssssssssssxsssxsssssssxx.sssssssssssssssssssss.sssxsssssssssss. [ 62%]
ssssssssssssssssssxsssssssssssss.sssssssssss.ssssssssssssssssxssssssssss [ 62%]
xssssxsss.ssss..xsssssssssssssssssxsxsssssssssssssssssssssssssssssssssss [ 62%]
ssssssssssssssssxsxxssssssssssssssxs.sssssxsss..sssssssssssssssssssssss.x [ 62%]
.xssssssssssss...xssssssssssssxssxssx.ssssxssssssxxssxsssssxssssssssssss [ 63%]
sssssssssssxsssssssssssssssxx.ssssxxss.sxssssssssssssssxssssx...ssssssss [ 63%]
sx..xx.xxsssss.ssxxssxxssssss.ssxssx.ssssxssxxsss.sssssssssxsssx..xxss.. [ 63%]
sxsxssx.ssxxxxx.xsxssxxxssssxxsssxxs.xss.xssssxxsx.ssssssx.xxsssssssssxx [ 63%]
sxssssssssss..xsxsxsxs.sssxsssxssssxxsss.sxsssssssssssssss.ssssxsssxs.ss [ 63%]
sssssssss.sssxxss.ssxxsssssssssssss.xssxxssssssssss.xssssssssssssssssssx [ 63%]
ssxsssssssssssssxssssssssssssxsssssssss.sssssssssssssxxsssssssssssxssssx [ 63%]
.sssxssssssssss.ssxsssssxxxsssssssx.sssss.xsssssxxxsssxssxsssssxsssssssss [ 64%]
sxsssxxssxsssxssxxxsssxssxssssssssssxsxssssssxssssssssssxxxsssssssssxsss [ 64%]
sssssssxsssssssxssssssssxxxssssssssss.sssssxsssss..sssssssssssssssssssss [ 64%]
sssssssssxxsssssssssssssssssssssssssssssssssssssssssssssssssssssssssxsxx [ 64%]
ssssssxssxxsssssssssssssssssssssssssssssssssssssssssssxssssssxssssssssss [ 64%]
ssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 64%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 64%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 65%]
ssssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssxsssssssssss [ 65%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 65%]
sssssssssssssssssssssssssssssssssxssss.sssssssssssssssssssssssssssssssss [ 65%]
ssssssssssssssssssssxssssssssssssssssssxssssssssssssssssxsssssssssssssxs [ 65%]
xsssssssssssssssssssssssxxxssx.ssxxssxssss.sssssssss.sssssssssssssssssxs [ 65%]
ssssssssssssxsssss.ssssssssssss.sss.sssssssssssss.sxsssxss.sssssssssssss [ 65%]
s.sssssssssssssssssssssssssss.sssssssssssssssssxssssss.sss.xssssssssssss [ 66%]
sssssssssssssssssssssssssssssssssssss.ssssssssssssssssssxsxsssssssssssss [ 66%]
ssssssssssssssssssssssssssssxsssssssssssssssssssssssssssssssssssssssssss [ 66%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 66%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ss [ 66%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 66%]
ssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssxs [ 66%]
sssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssssxsssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
ssssssssssssss.sssssssssssssssssssssssssssssssssssssssssssxsssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssss.sssssss.sssssssssssssssssssssss [ 68%]
ssssssssssssss.sssssssssssssssssssssssssssssxxssssssssssssssssssssssssss [ 68%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%]
ssssssssssssssxssssssssssssssssssssssssssssssssssssxssss.sssssssssssssss [ 68%]
sssssssxxsssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssss [ 68%]
ssssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
sssssssss.sssssssssssssssssssssssssssssssssssssss.ssssssssxsssssssssxsss [ 69%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxsssss [ 70%]
sssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssxssssssssss [ 70%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 70%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 70%]
ssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssxsssssssssss [ 70%]
ssssssssssssssssssssssssssss.ssssssssssssssssssxsssss.ssssssssssssssssss [ 70%]
ssssssss.sssxsssssssxsssssxsssssssssssssssssssxssssss.sssssssss.ssssssss [ 70%]
ssx.ssxssxssssssss.sssssss.ss.sssss.ssxsxs.sxsxxs.sxssxsss..xssss.x.ssss [ 71%]
..xxxx.x..xxxssss.x.ssss....sssss.sss..xxssss.x.xxssssssssssssssssssssss [ 71%]
ssss.ssssss.ssxssxsssxsssxxssssxssxxs.ssssxsssxsssssxss.ssxs.sssxsssxsxs [ 71%]
sssss.sssssxssxssss.xssssssssssxssxssxxsssxsxx..xx.xxxxxxxxx.xx.xssss.xx [ 71%]
xssss.xxssss.xxxx.x.xx.xxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxx.xxxxxxssxss...xx [ 71%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxssss.xxxxxxxssssssssssssssssssssss [ 71%]
sssxsssxsxsxsxsssxsxssxxsxssxssssxs.ssxsxsssxssxsssxssssxxssssssssssssss [ 71%]
ssssssssssssssxssssssxssxssssxsssxsssssxssssss.ssssxssxssxssxssssxxsssss [ 72%]
ssxssxss.ssxssxssxsssxssssssss.ssssxsssxxxxssss.xxxxxxxssss.xxxxxxxxxxxs [ 72%]
sss.xxssss.xssss.sssssxssssssssssssssss.ssssssxssxsssxsss.sssxssxsssxsss [ 72%]
xsxssssx.sxssssxsssss.ss.ssssxsssxs.sssxsssssss.ssssxsssss.ssxxsssssxs.s [ 72%]
sxsxsxxssxssxsssxssxssxsss.ssssssssss.ssssssssssssssssssssssssssssssssssss [ 72%]
ssss.ssssssssssssxssssxsssxssssssssssssxsssssxssssssssssssxsssssssssssss [ 72%]
sssssssss.sssssssssssssssssssssssss.ssssssssssssssssssssxsssssssssssssss [ 72%]
sssxsssxsssssssssxsssssssssssssssssssssssssssss.ssssssssssssssssssssssss [ 73%]
ssxssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssss [ 73%]
sssssssssss.ssssssssssssssssssssssssssssssxsss.sssssssssssssssssssssssss [ 73%]
ssssssssssssssxsssssssssssssssssssssssssssssssssssssssssxsssssssssss.sss [ 73%]
ssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssss.sssssss [ 73%]
sss.sssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssss [ 73%]
sxsssssssssssssssssssssxssssssss.sssss.sssssssssssssssssssssxsssssssssss [ 73%]
sssssssssssssssssssssssssssssxsxssssssssssssssssssssssssssssssssssssssss [ 74%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 74%]
sssssssssssssssssssssssssssssssssssssssxsssssssssssssssssxssssssssssssss [ 74%]
ssssxsssssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssssss [ 74%]
ssssssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 74%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 74%]
sssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssxssssssssssss [ 74%]
sssssssssssssssssssssssssssssssssss.ssssssss.sssssssssssssssssssssssssss [ 75%]
ss.ssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssss [ 75%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 75%]
sssssssssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssssssss [ 75%]
sssssssssssssssxssssssssssssssssssssssssssssssssssssssssssssssssss.sssss [ 75%]
sssxs.sssxsssxsssssssssssssssssssxxxx.xxssss.xxx..ssss.ssss.ssss.xssssss [ 75%]
sssssssssssssssss.xsx.sxsxxsxsxssssss.ss...xxssss.x.xx.xx.xxx..xxx.xxxx. [ 75%]
xssss..x.xxx.ssss.x..xxxxxxxssss.xxxxxxxxssss.xx.xxxxxxxxssss.x.xxx.xx.s [ 76%]
sss.sxsss.x.xxxx.xxxxxx.xxxxxsssssssssssssssxsxsxsxsxsxxsxxssxxssxsxsxs. [ 76%]
xx.x.x.xxxxxxxxxxxssss.xx.xxxxxxxxxxxxxxxxssss.xxxxxxxxxx.xxxxxxxxxxxxxxx [ 76%]
xxxxxxx.xxxxxxxsss..xxxxxssss.xxxxxxxxxxsssssssssssssxxssssxssssssss.ss. [ 76%]
sxsxsxxssssss.ssssssssssssssssssssssxssxsxsssssssxssssssssssssxss.sxsx.sx [ 76%]
sssss.sxssxssxsxsxxssssssssssssxssssssssxsxxsxsxxs.sssssssssssssssssxsss [ 76%]
sssssxsssxsxs.sssxxsxsxsxssssssssssssssssssssss.ssssssssssssssssssssssss [ 76%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 77%]
ssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssss [ 77%]
ssssssssssssssssssssssssssssssssssssxsssssssxsssssssssssssssssss.sssssss [ 77%]
ssssssssssxsssssssssxsssssssssssssssssssss.ssssssssssssssssxssssssssssss [ 77%]
sssssssssssssssssssssss.sssssssssssssssssssssxsssssxs.ssssssssssssssssss [ 77%]
sssssssssxssssssssssssxsssxsssssxsxsxsxs.xsxxssxssxsxsxsxsxssssssss.ssss [ 77%]
ssssssssssssss.ssxssxss.ssxsssxssssxssxssxxssss.sssss.ssssssssssssssssss [ 78%]
ssssssssssssssssssssssssssssssssssss.xsssssssxsssssssssssxssssssssssss.s [ 78%]
xsxssxs.ssssss.ssxxsssssssssssssssssssssssssssxssssssssssssss.sssssxssss [ 78%]
ssssss.ssssssxsxsxsx.ssxssssssssxsssssssxsssssssssssssssssssssssssss.ssss [ 78%]
ssssssssssssssxssssssssssssssssssssssssssssssssssxssssssssssssssssssssss [ 78%]
ssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssss [ 78%]
sssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssss [ 78%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 79%]
sssssssssssssssssssssssssssssssssssssssssxssssssssssssssssssssssssxsssss [ 79%]
sssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 79%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 79%]
ssss.sssss.sssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssss [ 79%]
sssssssssssssssss.sssssssssssssssssxsssssssssssssssssssssssssssssxssssss [ 79%]
sssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssss [ 79%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
sssssssssssssssssssssssssssssssssssxssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssss.sssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssss [ 80%]
sssssssssssssxsxssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 81%]
ssssssssssssssssssxsssssssssssssssssssssssssssssssssssssssssssssssssssss [ 81%]
sssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssxsssssssssssss [ 81%]
ssssssssssssssssssssssssssxsssssssssssssssssssssssssssssssssssssssssssss [ 81%]
ssssssssssssssssssssssss.sssssssssssss.sssssssssxsssssssssssssssssssssss [ 81%]
sssssxssssssssssssssssssssssssssssssssssssssssssssxssxssssssssxssss.ssssx [ 81%]
sssssssssssssssssssssssssxsssxsxsss.sssxsssssxssxsssxsssxsss.s.ssssxxsss [ 81%]
.ssssss.ssxssss.xx.xss.xxxxssss..xxx.xx.xxxxx..xxssss.xxx.xxxssss.xxssss [ 82%]
.xxxx...xssss.xxssss.xssss.x.ssssssssssssssssssssss..ssssssxssssss..ssss [ 82%]
sxssxsssxsxsssxssxsxssssss.sssssssss.ssssxxsssssxssxsss.ssxsxsssxsxsssss [ 82%]
ssssss.xxxxx.xx.x.x.x.xxx.xxxxxxxsssssxssssssssssssssssxsx.sxss.ss.sxsxs [ 82%]
xsxxsxsxxsxsxxs.sxsxxssxxs.xsxsxsxsxxsxsxsxsxssxsxxxxxxxxxxxxxxxssss.xxs [ 82%]
ssxs.xxxssss.xxxssssssssssssssssxxxxsssssssssssssssssssxsxxsxsssssssssss [ 82%]
ssssssssssssss.sssssssssxsxsssxs.ssxssxxssxsssssssss.sssxssssssxsxssxsss [ 82%]
sss.ssxxxxxx.ssss..ssss.xxxxx..xxxxxxxxxxxxxxxs.sss.xssss..xxssss.xx.xx.. [ 83%]
xxxxxxxx.xxxssss.xssssssssssssssxsssxsssssssssss.sssssssxsssxsssxsssssss [ 83%]
ssss.sssssssssssssssssssssssssssssxxsssssssssxssssssss.sssssxss.s.sssxss [ 83%]
sssss.ssxsxsss.xxxxxxxxssss.xssss.xxxxssss..xxxx.xxxxxx.xxxxxx.xssss.xxx [ 83%]
sss.s.sxsss.x...xxx.xxxxxxxxxxxxssss.ssss.ssssxxxxssss.xssssssssssssssss [ 83%]
ssssssssssssssssssxssssssssssssssssssssss.sssssssssssssxssssssssssssssss [ 83%]
sssssxsssssxsssss.sssssssssss.xxxxxxxssss.xxxx.xxx.xxxxxxx.xxssss.xx.x.s [ 83%]
sssssssssssssssssssxsxssxsssssssss.sssss.sssss.sssxsss.ssxssxxxssssxssxs [ 84%]
ssxssx.sssxsxsssxxssss.x.xxxssss.ssss.xxssss.xssss.x.xxxxx.xxssss.xx.xxs [ 84%]
sxsxxxx.xx.xxx..xxxxxx.xxxxxx..xxxxxxxxxxxxxssss.xxssss.xsssxs.xxxxxx.xx [ 84%]
xxxxssss.xxxxx..xxxxxxssxxxssssx.xxx.xxxxxx.x.sssssssssssxsssssssxx.xssx [ 84%]
xsxsxsssxssxsxssxsssssxssxxssssxsssss.sssssxsssxsxsssxssxsxssssxsxssssxs [ 84%]
sssssxssss.xsssssssxssssxsxsxxsxssssssssssss.xsxssxss.ssss.ssxsxsssxxssx [ 84%]
sxssxsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 84%]
ssssssxsssssssssssssssssxssssssssssssss.ssssssssssssxssssssssssxssssxsss [ 85%]
sssxssssxsssssssssssssxssssssxssssssssssssssssssssssssssssssssssssssssss [ 85%]
sssssssssxsssssssssssssssssssssssssss.ssssssssssssssssssssssssssxsssssss [ 85%]
sssxssssssssxssssssxsssssssssssssss.ssssssssssssssssssss.sssssssssssssss [ 85%]
ssssssssxssssssxssssssssssssssxsssssss.ssssssssss.sssssssssssssssssssssssx [ 85%]
ssssssssssssssssssssssssxsssssssssssssssssssssssssssssss.ssssssssssssssss [ 85%]
ssssssssssssssssssssxsssssssssssssxsssssssssssssssssssssssssssssxsssssss [ 86%]
ssxsssssssssssssssxsssssssssssxssssssssssssssssssssssssssssxssssssssssxs [ 86%]
ssssssssxssxsssssxssssssxssssssssssxsssssssss.ssss.sssssssssssssssssssss [ 86%]
sssssssssssssssxsssssssssssssssssssssssssxsssssssssssssxssssssssss.sssss [ 86%]
sssssssssssssssssssssssssxssxsssssssssssssssssssssssssssssssssssssss.sss [ 86%]
sssssssssssxxssssssssssxsssssssssssssssssssssssssssssssssssssssxsssssssss [ 86%]
sssssssssssssssssssssssssssssssssssss.sssssssssssxssssssssssssssssssssss [ 86%]
ssssssssssssssssssssxssssxsssssssssssssssssssssssssssssssssssss.sssssssss [ 87%]
ssssssss.sssssxssssssssssssssssssssssxsss.sssssssssssssssssssssssxssssss [ 87%]
sssss.sssssssssxssssssssssssssssssssssssssssssssssss.ssssssssssssssssss.s [ 87%]
ssssssssssssssssssssssssssssssxsssssxssssssssssssssssssssxssssssssssssss [ 87%]
sssxssssss.sssssssssssssssssssssssxssssssxssssssssxsssssssssssxsssssssss [ 87%]
sssxsssssssssssssssssssssssssxssssssssssssssxsssssssssssssssssssssssssss [ 87%]
ssssssxsssssssssssssss.sssssssssssssssssssxssssssssxssss.xxxssss.x.xxxxs [ 87%]
sss.xssssssssssssssssssxxxssss..x.xxssss.xxxx.ssss.xx.xxxx.xxx.xxx.xxsss [ 88%]
s.xssss.xx.x.ssss.ssss.xxxxxssss.xxxx...xxxxsssssssssssssssssssssss.sssx [ 88%]
xxssss.ssss.ssss.xxxxssxsssssssssssssssssssssssxsxssssxss.sssssssssxsssx [ 88%]
s.sxsssxsssssss.sxssxsxssxs.ss.ssxssssss.sssss.s.ssxsssx.xxx.xxx.xx.xsss [ 88%]
s.xxxx.xxxxxxx.xx.ssss.x.xxxxxxx.xxssss.xxx.xxxxssss.xxxxxxsssssssssssss [ 88%]
sssssxsssss.s.xxxxssss.xssss..ssss.xxxxssssx.xxxxxxxx.xxxxxxxxxxxxssssss [ 88%]
ssssssssssssssssssxss.ss.s.sxsxssxssxsxs.ssxssxssxs.ssssxsxssxssxsxssxsx [ 88%]
xssss.xsss.sxssssss.ssssxssxsssxssxsxss.ssxsxsssxxsxssxsxxsxsxssxsxsssxs [ 89%]
sss.xx.xxxxxxxxxssss.xxxx.xxxxssss.xsxsssssssssss.xssss.xxssss.ssss.xxxx [ 89%]
xxxxxxx.xxxx.xxxxxxxxxxxxx.ssss.xxxxx.xsss.xxxx.xxxsssssssssssssssssssss [ 89%]
ssssssss.sxsssssssssssssssssssssssssssssssssssssssssss.ssssssssss.ssssss [ 89%]
.ssssssss..xxxssss.xxxxssss.ssss.xxx.xxxssss.xxxxxxxx.sxssssssssssssssss [ 89%]
s.sxsssss.ss..sx.s.xssssss.ssxxs.ssss.ssssssssssssssss.ssssss.sxsxsxssss [ 89%]
ssssssssssssssssssssssssssssssssssssssssxsssss.sxsssxsssxsxsssssssxxssss [ 89%]
sssss.ssxsxssxssss.s.sxxs.xxssss..xxxxxxxx.ssss.x.x.x.ssss..xsssssssssss [ 90%]
ssssxx.xxssssssssssssssssss.xxx.xxxxxxxxxsssssssssssssssss.sssss.sxxsssx [ 90%]
s.xxxxxssssxxxxxs.sss.xxssssssssss..ssssssxxsssssss.s.sxssss.ssxs.xsssxx [ 90%]
ssssssssssssssssssssssssssssssssssssssxxxxxssssssssssssssss.sxxxs.xssxx. [ 90%]
sxxsxxsxxssssxssxxxsssssss.sssssxsssxsxsxsss.sxssxxss..sss.sssssxsxsx.s. [ 90%]
xsxsxssssssss.sxsxssssss.sxssssssssssssssssssssssssssxsxxsssxs.xssxssxs. [ 90%]
sxxsxsx.sxxsxsxxxsxssxxssssss.xxssssxssss.xxx.xxxxxxx.xxssss.ssss.x.xxxx [ 90%]
xxxxxxxxxxx.xxxxxsss.x.xx.xxssssxxx.xssssssssssssssss.ssxssss.sx.sxssxss [ 91%]
sssssssssssssssssssssssxss.sxssxsxsxsxsxxx.xxxxxx.xxxxxxx.xxxxxsssssssss [ 91%]
sssssssssssssxsssssssssxsssssxssxssxxs.ssxssxsxs.sssxssssx.ssxssssssxx.s [ 91%]
sxsxssxxsxs.s.ssssxssxssssssssssssssss..sssssxsxsxssxssssxssxsxssxsxsxss [ 91%]
sssss.ssxssxssxssssssssssssssssssssssssssssssssssxsssssssssssssssssssssss [ 91%]
ssssssxssssssssssssssss.sssssssssssssssssssssssssssxssssssssssssssssssss [ 91%]
ssxsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssss [ 91%]
sssssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssssssssss [ 92%]
sssxssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 92%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 92%]
ssxsssssssxsssss..sssssssssssssssssssssssssssssssssssssssssssssss.sxssxs [ 92%]
ssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssssssssssssss [ 92%]
sssssssssssssssssssssssssxsssssssssssssssssssssssssssssssssxsssssxssssss [ 92%]
sssssssssssssssssssssssxssssssssxxxx..ssss.ssss.....xxxx.x.x.xxxxxssss.x [ 93%]
xxxxxssss.x.xssss.xxx.xxx.ssssssssssssssssssssxssx.xssss.xxxxssss.xx.x.x [ 93%]
xsxsssx.ssss.x.xxssss.xxxxx.xxxx..xssss.ssss..xxssss.xxxxxxssss.xx..x.xs [ 93%]
xsss.x.xss.ss..xssssssssssssssssssssssssxxxxx..ssss.ssss.xxxxxx.ssss...x [ 93%]
xxxxx.sss.xxxssss.x.x.xxx.xxxssss.xxx..xssss.xxx.x.xx..ssss.x.xxxx.ssss. [ 93%]
xxxxxxxssss.xxxxx.x.sxxx.x.xxssss.xxxxxx.xxxxx.x..ssss..ssss.xxx.xxssss. [ 93%]
xxxxxxxxx.ssssssssssssssssxsxxsxxxxxxxxxxxx.x..xxx.xxx.x..xsssxs.sssxsssxx [ 93%]
sssss.xxxxxxxssssx.xxxxxxxxxxssssssssssssssssssss.xxxssss.xxxx.x.xxxxxx. [ 94%]
.x.xx.ssss.xxxxssss.ssx..ssssssxxsssssssxssssssssssssssssssssssssssxxs.x [ 94%]
ssssssss.xxx.xx..x..xx.x..xx...x.xx.ssss.xx.xssss.x.x.ssxs..ssssx.x.xx.x [ 94%]
..x..xx.s.x..xxx..ssss.x.ssss.x..xx..x..xss.x.ssssxx.xxssss.ss.ssx.....x [ 94%]
....ssss.xsxsss..xxxx..xxssss.x....x...ssss...xx.x...x.....x.x.xxxxx..x. [ 94%]
....x.x.x....x.x.x.xxxxssss...xxx..xx.xx...x..xxx..xx..x.x.xxx.sssxsx... [ 94%]
x.sssxs.xxx.x....x....x....xxxxxx...xx.x.xx.......xx.xss...x..ssss.xx.ss [ 94%]
ssx.xx.x..x....xx.sssss.sssss......x.xx....xx.....sss...s..x..xxx........ [ 95%]
ssssssss.x.xx.......x.ssss.x........x..xx....s.x.x..xssss.s..x..s....... [ 95%]
....ssssssss.xx..s....s.sss........x.....x.......x......x.x.......x..... [ 95%]
...............x........x..sss.....................xx..x........s....... [ 95%]
.x...x........................x..........x......ssss..x....x..........x. [ 95%]
.........x.......ssss.......x....sssssssssssss......s.....x............. [ 95%]
.........................x............................x................. [ 95%]
..........s.ss.s..........x......x.x.................................... [ 96%]
...........................................................x............ [ 96%]
.........x..x...�[2m�[36m(_apply_func pid=4995)�[0m FutureWarning: Dropping of nuisance columns in DataFrame reductions (with 'numeric_only=None') is deprecated; in a future version this will raise TypeError.  Select only valid columns before calling the reduction.
.....x..........................................xss..... [ 96%]
.ss..........................................x.........x................. [ 96%]
.......x............................................x...x............x.. [ 96%]
.....x........x.......x.........................................xx.s.... [ 96%]
.x..x.x..........x...................................................... [ 96%]
................................................x....................... [ 97%]
......................................................................... [ 97%]
...............................................x......................... [ 97%]
........................................................................ [ 97%]
........................................................................ [ 97%]
........................................................................ [ 97%]
........................................................................ [ 97%]
........................................................................ [ 98%]
........................................................................ [ 98%]
..........................................x.............sss...........s.s [ 98%]
.s.ss...........................ss.ss............sssssssssss.ssss.ss.sss [ 98%]
sss.sssss.sss.sss.ssssssss.........x...........s.s.s..x...s............. [ 98%]
x.....................x....s........................s.....x......x...... [ 98%]
x.....s.......x.s..s...s............................ssss.....s.....x..x. [ 98%]
..x......s....ss..........ssssss.s.s....ss........s.ssx....s...ss......s [ 99%]
.s.sss...s..........ss.......ss......s..�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
�[2m�[36m(deploy_ray_func pid=5452)�[0m FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
................ss.s.ss..s...... [ 99%]
x..ssx..ss..s...s......s.ss.ss.s.ss.........ssss..s........s.s.......... [ 99%]
.............s.s..................s......s..s.s.....s...ss.............. [ 99%]
....s.........x.s......s..s................................s............ [ 99%]
...s................................................ss.................. [ 99%]
.....................................sssssssssssssssssssssssssssssssssss [ 99%]
sss..                                                                    [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates
fatal: bad object HEAD


---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml

= 8831 passed, 37801 skipped, 2917 xfailed, 25410 warnings in 185.12s (0:03:05) =
PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment.
Tests are successful


<b>Remaining output truncated<b>


@modin-bot
Copy link

modin-bot commented Apr 15, 2022

TeamCity Dask test results bot

Tests FAILed

Tests Logs
oc[select]
  File "/modin/modin/pandas/indexing.py", line 719, in __setitem__
    super(_LocIndexer, self).__setitem__(
  File "/modin/modin/pandas/indexing.py", line 389, in __setitem__
    item = self._broadcast_item(row_lookup, col_lookup, item, to_shape)
  File "/modin/modin/pandas/indexing.py", line 445, in _broadcast_item
    item = np.array(item)
  File "/modin/modin/pandas/base.py", line 3485, in __array__
    arr = self.to_numpy(dtype)
  File "/modin/modin/pandas/base.py", line 3174, in to_numpy
    return self._query_compiler.to_numpy(
  File "/modin/modin/core/storage_formats/pandas/query_compiler.py", line 354, in to_numpy
    ErrorMessage.catch_bugs_and_request_email(
  File "/modin/modin/error_message.py", line 60, in catch_bugs_and_request_email
    raise Exception(
Exception: Internal Error. Please email [email protected] with the traceback and command that caused this error.


---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml

=========================== short test summary info ============================
FAILED modin/pandas/test/dataframe/test_indexing.py::test_loc_iter_assignment[0-False]
FAILED modin/pandas/test/dataframe/test_indexing.py::test_loc_iter_assignment[1-False]
= 2 failed, 8829 passed, 37801 skipped, 2917 xfailed, 25409 warnings in 410.20s (0:06:50) =
PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment.
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.1, pluggy-1.0.0
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /modin, configfile: setup.cfg
plugins: benchmark-3.4.1, cov-2.11.0, forked-1.4.0, xdist-2.5.0
collected 2462 items

modin/pandas/test/test_io.py ........................................... [  1%]
........................................................................ [  4%]
.............................................ssssssssssssssssssss.ss.ss. [  7%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 10%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 13%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss. [ 16%]
ss.ss.ss.ss.ss.ss.ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss. [ 19%]
ss.ss.ss.ssssssssssssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.sssssssss [ 22%]
sssssssssss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss.ss............................ [ 25%]
.xx.xx.xx.xx.xx....xx.xx.xx.xx.xx....xx.xx.xx.xx.xx....xx.xx.xx.xx.xx... [ 28%]
..x..x..x..x..x.....x..x..x..x..x....xx.xx.xx.xx.xx....xx.xx.xx.xx.xx... [ 30%]
.xx.xx.xx.xx.xx....xx.xx.xx.xx.xx.....x..x..x..x..x.....x..x..x..x..x... [ 33%]
.xx.xx.xx.xx.xx....xx.xx.xx.xx.xx....xx.xx.xx.xx.xx....xx.xx.xx.xx.xx... [ 36%]
..x..x..x..x..x.....x..x..x..x..x.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx... [ 39%]
........................................................................ [ 42%]
........................................................................ [ 45%]
........................................................................ [ 48%]
.................................s.......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 51%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx........xxxxxxxx........xxxxxxx [ 54%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx............................... [ 57%]
.................................................x........x........xxxxx [ 60%]
xxxxx................................................................... [ 63%]
........................................................................ [ 66%]
........................................................................ [ 69%]
........................................................................ [ 71%]
........................................................................ [ 74%]
........................................................................ [ 77%]
........................................................................ [ 80%]
................................xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 83%]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [ 86%]
xxxxxxxx................................................................ [ 89%]
........................................................................ [ 92%]
........................................................................ [ 95%]
..............................................x.............Xx.....ss... [ 98%]
.x....................xx.........ss........                              [100%]

---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml


= 1673 passed, 341 skipped, 447 xfailed, 1 xpassed, 449 warnings in 308.23s (0:05:08) =
============================= test session starts ==============================
platform linux -- Python 3.8.13, pytest-7.1.1, pluggy-1.0.0
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /modin, configfile: setup.cfg
plugins: benchmark-3.4.1, cov-2.11.0, forked-1.4.0, xdist-2.5.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I / gw24 I / gw25 I / gw26 I / gw27 I / gw28 I / gw29 I / gw30 I / gw31 I / gw32 I / gw33 I / gw34 I / gw35 I / gw36 I / gw37 I / gw38 I / gw39 I / gw40 I / gw41 I / gw42 I / gw43 I / gw44 I / gw45 I / gw46 I / gw47 I
gw0 [49549] / gw1 [49549] / gw2 [49549] / gw3 [49549] / gw4 [49549] / gw5 [49549] / gw6 [49549] / gw7 [49549] / gw8 [49549] / gw9 [49549] / gw10 [49549] / gw11 [49549] / gw12 [49549] / gw13 [49549] / gw14 [49549] / gw15 [49549] / gw16 [49549] / gw17 [49549] / gw18 [49549] / gw19 [49549] / gw20 [49549] / gw21 [49549] / gw22 [49549] / gw23 [49549] / gw24 [49549] / gw25 [49549] / gw26 [49549] / gw27 [49549] / gw28 [49549] / gw29 [49549] / gw30 [49549] / gw31 [49549] / gw32 [49549] / gw33 [49549] / gw34 [49549] / gw35 [49549] / gw36 [49549] / gw37 [49549] / gw38 [49549] / gw39 [49549] / gw40 [49549] / gw41 [49549] / gw42 [49549] / gw43 [49549] / gw44 [49549] / gw45 [49549] / gw46 [49549] / gw47 [49549]

........................................................................ [  0%]
........................................................................ [  0%]
......................................................................... [  0%]
........................................................................ [  0%]
.......................x........................................x....... [  0%]
........................................................................ [  0%]
........................................................................ [  1%]
..x..................................................................... [  1%]
........................................................................ [  1%]
........................................................................ [  1%]
........................................................................ [  1%]
........................................................................ [  1%]
......................................................x................. [  1%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  2%]
........................................................................ [  3%]
........................................................................ [  3%]
.............................x.......................................... [  3%]
........................................................................ [  3%]
........................................................................ [  3%]
......................................................................... [  3%]
........................................................................ [  3%]
......................................................................... [  4%]
........................................................................ [  4%]
.........................................................x.............. [  4%]
........................................................................ [  4%]
........................................................................ [  4%]
........................................................................ [  4%]
......................x.................................................. [  4%]
........................................................................ [  5%]
.....................................................x.................. [  5%]
........................................................................ [  5%]
................................x....................................... [  5%]
........................................................................ [  5%]
........................................................................ [  5%]
......s.s.s..ssss..sss.ssss.sssssss..sssssss.ss.ssss.ss.s.sss.s.s.ss.s.s [  5%]
sss.sssssss.sssss.ssss.sss.s.sss.s.s.sss.s..ssssss.ss.s................. [  6%]
........................................................................ [  6%]
........................................................................ [  6%]
........................................................................ [  6%]
................sssssssFssssss.s.sssssssssss.sss.s.ssssssssss.sss.ssssss [  6%]
..ssssssssss.ssssssssss.sssssssssssssssssss.ss..s.ssssssss.sssssssssss... [  6%]
sssssssssss.ss.sssssssssssssssssss.sssss.ssss.sss.sss.sssss.sss.ssssssss.s [  6%]
sss.sssssssssssss.sssss.ss.sssssssss.ss..ssssssssssssss.sssssss.ssssssss [  7%]
sssssss.sssssssss.ss.s..ssssssssssssssssssssss.sssssssss.ssssss.ssssssss [  7%]
ss.sss..s.sssssssssssssssssssssssssssssss.ss.ssssss.ss..ss.sss.ss..sss.. [  7%]
..............................................s..............s.......... [  7%]
........xsssssssssss.ssssssss.ss.ss.ssss.sssss.sssss.ssssss.ssssssssssss [  7%]
sssssssssss.ssssss.sss.sss.sss.ssssss......s.s.......................... [  7%]
................s.....s..........sss.sssssssssssss.ssssss.ss.ss.ssssssss [  8%]
sssssssssss.sssss.sss.sssssss.sss.ssssssss.sssss.s.ssss.ssss.s.s........ [  8%]
...s.sssss.ss.ssss.s.sssss.ss.ss.......................................s [  8%]
.....ssssssssssssssss.ss.ssssssssssssssssss.ssssssssss.ssssssss.ssss.sss [  8%]
s.ssssssssssss.ssss.sssss.sssss....sss.sssssssss.s.sssssssssssssssssssss [  8%]
sssssssssssssssssssss.sssssssssssssss.ssssssssssssssssssssssssssssss.sss [  8%]
ssssssssssssssss..ssssss.sss.sssssssssssssssssssssssssssssssssssssssssss [  8%]
ssss.ssssssssss.ssssssssssssssssss.ssssssssss.ss..sss.sssssssssss.s.ss.. [  9%]
s..x..ss.ssssssssssssss.ss.sssssssssssssssssss.sssssssssssssssssssssssss [  9%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssss [  9%]
ssss.sssssssssssssssssssssss..sssssss.s.ssssssssssssssssssssss.sssssssss [  9%]
.ssssssssssssss.sssssssssssssssssssssssssssssssssss.ssssssssss.ssssssssss [  9%]
sss.ssssssssssssssssssss.s.ssssss.sss.ssssssssssssssssssssssssssssssssss [  9%]
ssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssss.sssssssss [  9%]
sssssssssssssssssssssssssssss.ssssssssssssssssssss.sssssssssssssssssssss [ 10%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 10%]
ssssssss.sssssssssss.sssssssss.ssssssssssssss.ssssssssssssssssssssssssss [ 10%]
ssss.sssssssssssssssssssssssss.ss..sssssssssssss.ssssssssss.sssssssssssss [ 10%]
ssssssssssss.ss.sssssssssssssssss.s.sssssssssssssssssssssssss.ssssss.sss [ 10%]
ssssssssssss.ssssssssssssssss.sssss.sssssssss.ssssssssssssssssssssssssss [ 10%]
ssssssssssssssssssssssssssss.ssssssssssssssssss.sssssssssssssss.ssssssss [ 10%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sss [ 11%]
ssssssss.sssssssssssssssss.ssssssssssssss.ssssssssssss.ssssssssssssss.ss [ 11%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 11%]
ssssssssssssssssssssssssssssssssssss..sssss.sss.ssssssssssssssssssssssss [ 11%]
sssss.ssssssssssssssssssss..sssssssssssssssssssssssssssss.ssssssssssssss [ 11%]
sssssssssssssssssssssss.s.sssssssssssssssssssssssssssssssssssssss.sss.ss [ 11%]
.ssssssssssssssssss.sssssssssssssssssssssssssssssss.sssssssssssssss.ssss [ 11%]
ssssssssssssssssssss.sssssss.sssssssssssssssssssssssssssssssssssssssssss [ 12%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssss [ 12%]
.ssssssssssssssssssssssssssss.ssssssssssssssss.sssssssssssssssssssssssss [ 12%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sss.sssss.ss [ 12%]
sssss.sssssssssssssssssssssssssss.s..sssssssssssssssssssssssssssssssssssss [ 12%]
ssssssssssssssssss.ssssssssss.ssssssssssssssssssssssssssssssssssssss.s.ss [ 12%]
.ssssssssssss.sssssssssssssssss.ssssss..sssss.ss.ssssssssssssssssssssssss [ 12%]
sssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssss.s [ 13%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssss [ 13%]
ssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 13%]
ssssssssssss.sssssssssss.sssssssssssssssssssss.ssss.sssssssssssssssssssss [ 13%]
ssssssss.ssssssssssssssssssssss.s.ssssssssssssssss.sss.sssssssssssssssss [ 13%]
ssssssssssssssssssssss.sssssssssssssss.sss.ssssssssssssssss.sssssssss.ssss [ 13%]
ssssss.sssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssss [ 13%]
ssss.ssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss. [ 14%]
.sssssssssssssssssssssss.sssssssssssssss.......sss.sssssssssssssssssssss [ 14%]
sssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssss [ 14%]
ssssssss.ssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssss [ 14%]
ssss.ssssssssssssssssssss.sssssssssssssssssssssss.sssssssssssssss.s.ssss [ 14%]
ss.ssssssssssssssssssssssssssss.sssssssssssssssssssssss.ssssssssssssssss [ 14%]
ssss.sssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssss [ 15%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sss [ 15%]
ssssssssssssssssssss.sssssssssssssssss.sssssssssssssssssssssssssssssssss [ 15%]
s.sssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssss.sssssss [ 15%]
.sssss.ssssssssssssssssssssssssxssssss.ssssssssssssssssssssssssssss.ssss [ 15%]
ssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 15%]
s.sss.sssssssssss.ss.sssssssssss.ssssssssssssssssss.ssssssssssssssssssss [ 15%]
ssssssssssssssssssssss.sssssss.sssssssssssssssss.ssssssssssssssssss.ss.s [ 16%]
sssssssssssssssssssssssssssssssssss.ssssssss.ssssssssssssssss.s.ssssssss [ 16%]
ssssssssssss..sssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssss [ 16%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssss [ 16%]
ssssss.ssssssssssssssssssssssss.sssssssssssssss.ssssssssssssssssssssssss [ 16%]
ssssssssssssssssssssssssssss.ssssss.sssssssssssssssssssssssssssssssssssss [ 16%]
ssssssssssssssssssss.ssssssssssssssssssssssss.s.sssssssssssssssssssssssss [ 16%]
ssssssssssssssssss.sssssssssssssssssssss.sssssssssssssssssss.sssss..ss.s [ 17%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssss..ssssssssssssss [ 17%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 17%]
sssssssssssssss.sssssssss.sssssssss.ssssssssssssssssssssssssssssssssssss [ 17%]
ssssssssssssssssssssssssssssssss.ssssssssssssssssss.ssssssss.sssssssssss [ 17%]
ssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssss.sss [ 17%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssss [ 17%]
sssss.sssssssssssssssssssss.ssssssssssssssssssssssssssss.sssssssssssssss [ 18%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 18%]
sssss.ssssssssssssssssssss.sssssssssssssssssss.ssssssssssssssss.sssssssss [ 18%]
ssssssssssssssssssssssssssssssssssssssssss.sssss.ssssssss.sssssssss.ssss [ 18%]
ssssssssssssssss.ssssssssssssssssss.ssssssssssssssssssss.sssssssssssssss [ 18%]
ssssssssssssssssssssssssssssssss.ssss.....s.......s....ssss.ssssssssssss [ 18%]
sss.ssssssssssssssssssssss.sss.sss.sssssssssssssssssssssssssssssssssssssss [ 18%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssss.ss.ssssssssssss.ss [ 19%]
ssssssssssssssssssssss.ssssss.ssssssssssssssssssssssssssssssssssssssssss [ 19%]
sssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 19%]
sssss..ssssssssssssssss.ssssssssssssssss.ssss.ssssssssssssssssssssssssss [ 19%]
ssssssssssssss.ssssss.ss.ssssssssssssss.sssssss.ssssssssssss.sssssssssss [ 19%]
ssssss...sssssssssssssssssssssssssssssssssss.ssssss.sssssssssssssssssssss [ 19%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 19%]
sssssss.ssssssssssssssss.sssssssssssssssssssssssssss.ssssssss.ssssssssss [ 20%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssss [ 20%]
ssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 20%]
sssss.ssss.ssssssss.ssss.sssssssssssssssssssssssssssssssssssssssssssssss [ 20%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssss [ 20%]
ssssssssssssssssssss.ssssssss.ssssssssssssssssssssssssssssssssssssssssss [ 20%]
sssss....sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 21%]
ssssssssssssssss.ssssssssssssssssssssssssssssss.ssssssssssssssssssss.sss [ 21%]
ssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssss [ 21%]
sssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssss.s [ 21%]
sssssssssss.ssssssssssssssssss.sssssssssssssssssssssssssssssssssssssssss [ 21%]
sssssssssssssssssssss.ss.sssssssssssssssssssssssssssssssssssssssss.ssssss [ 21%]
sssssssssssssssssssssssss.ssssssssssssssssss.ssss.sssssssssssssssssss.ss [ 21%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssss [ 22%]
sssssssss.sssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssss [ 22%]
sssss.sssss.sssssssssssssssssss.ssssssssssssssssssssssxssssssssss.ssssss [ 22%]
ssssssssssssss.ssssssssssssssssssssssss.sss.ssssssss.sssssssssssssssssss [ 22%]
ssssssssssssssssssssssssssssssssssssssssss.s.ssssssssssss.ssss.ssss.ssss [ 22%]
ssssssssssssss.sssssssssssss.sssssssssssssssssssssssss.sssssssss.ssss.sss [ 22%]
sssssssssssssssssss.sssssssss.ssss.sssssss.sssssss.sssssssssssssssssssss [ 22%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssss.sssssss [ 23%]
ssssssssss.sssssssssssss.ssssss.sssssssssssssssssssssssssssssssssssssssss [ 23%]
ss.s..s.sssssssssss.ssssssssssssssssss...sssssssssssssssssssssssssssssss [ 23%]
ssssssssssssssssssssssssssssssss.sss.sssssssssssssssssssssssssssssssssss [ 23%]
ssssssssssssssssssssssssss.ssssss.ssssssssssssssssssssssssssssssssssssssss [ 23%]
sssssssssssss.sssssss.sss.sssssssssssssssssssssssss.ssssssssssssssssss.sss [ 23%]
sssssssss.ssssss.sssssssssssssss.sssss.ssssssssssssssssssssssssssssssssss [ 23%]
ssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssss.ssssss [ 24%]
ssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssssssssss [ 24%]
ssssssssssssssssssssssss.ss.sssssssss.sssssssssssssssssssssssssssssssssssss [ 24%]
sssssssssssssssssss.ssssssssssssssssss.sssssssssssssssssssssssssssssssss [ 24%]
ssssss.sssssssssssssssss.sssss.ssssss.s.ssssssss.sssssssssssssssssssssss [ 24%]
sssssssssssssssssssssssss.ssss.ssssssssssssssssssssssssssssssssssssss.ss [ 24%]
.sssssssssss.sssssss.sssssss.sssssssssss.sss.sssssssssssssssssssssssssss [ 24%]
ssss.ssssssssssssssssss.sssss.ssssssss.ssssssssssssssssssssssssssss.ssss. [ 25%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 25%]
ssssssssssssssssss.sssssssssssssssssssss.ssssssssssssssssssssssssssss.ss [ 25%]
ssssssssss.sssssssssssssssssssssssssssssss..ssssssss.sssssssssssssssssss [ 25%]
sssssssssssssssss.ssssssssssssssssssssssssssss.ssssssssssssssssssssssss.s [ 25%]
ssssss.sssssssssssssssss.sssss.sssssss.sssssssssss.ssssss.ssssssssssssss [ 25%]
sss.ss.s..ssssssssssssss.s.ssssssssssssssssss.ssssssssssssssssssssssssss [ 25%]
ssssss.ssss.sssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssss [ 26%]
ssssssssssssssssssssssss.sssss.ssssssssssssssssssssssssssssssssssssss.ss [ 26%]
sssssssssssssss..sssssssss.ssssssssssssssssssss.sssssssssssssss.ssssssss [ 26%]
sss.ssssssssss.sssssssssssssss..sssssssssssssssssssssss.ssssssssssssssss [ 26%]
sssssssssssssssssssssssssssssssssss....sssssssssssssss.ssssssss.s...ssss [ 26%]
ssss..ssssssssssssssssssssssssssss..ss.ssssssss.sssss.sssssssssss.ssssss [ 26%]
s.sssssssssssssssssssssssssssssss..ssssssssssssssssss.sssssssssssssssssss [ 26%]
ssssssssssssssssssssssssssss...sssss.ssssssssssssssssssssssss.ssssssssss [ 27%]
ssssssssssssss.ssss.ssssssssssssssssssssssss.sssssssssssssss.ss.ssssssss [ 27%]
ssssssssss.ss..ssssssssssssssssssssssssssss.ssssssssssssssssssssssssssss [ 27%]
sssss.ssssssssssssssss.ssssssssssssssssssssssss.sssssssss.ssssssssssssss [ 27%]
sssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssss [ 27%]
.sssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssss [ 27%]
sssssss.ssssssssssssssssssssssssss.ssss.ssssssssssssssssss.sssssssssssss [ 28%]
ssssssssssss.ssss..sssssss.ssssssssssssssssssss.ss.ssssssssss.sssss.ss.. [ 28%]
sssss.sss.sssssssss.sss.sss.s.ssssssssss.ssssssssssssss.sssssssss.ssssss [ 28%]
s.sssssssssssssssssssssssssssssssssssss.ssssss.sssssssssssss...s....s.s.s [ 28%]
sssssssssssssssssssssss.sssssssssssssssssssssssssssss.ssssssssss.sssssss [ 28%]
ssssssss.ssssssssssss.sssssssssssssssssssssssssssss.ssssssssssssssssssss [ 28%]
sssssssssssssssssss.sssss.sssssssssssssssssssssssssssssssssssssssssssss. [ 28%]
sssss.ssssssssssss.s.sssssssss..ssssssssssssss.sss.ssssssssssssssssss.ss [ 29%]
sssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssss. [ 29%]
sssssssssssssss.sssssssssssssssssssssssssss.ssssssss.sssssssss.sss.sssss [ 29%]
sssss.sssssssss.ssssssssssssss.ssss.ssss.sssssssssss.ssssssss.ssssssssss [ 29%]
ssssssssssssssss.ssssssssssssssss.ssssssss.sssssssssssssssssssssssssss.ss [ 29%]
ssss.sssssssssssssssssssssssssssssss.ssss.sssssssssssssssss.ssssssssss.ss [ 29%]
ssssssssssssssssssssss..sssss.sssssssssssss.ssssssssss.sssssssssssss..ss [ 29%]
sssssssssssssssssss..sssssss.s.ssssssss.s.sssssssss.sss.ssssssssss.s.s.s [ 30%]
ssssss.sssssssssss..sssssssssssssssssssssss.sssss.ssssss..sss..sssss.ssss [ 30%]
ss.s.sssssssssss.ss.s.ssssssssssss.ssssssss.ssssssss..ssssssssssssssssss [ 30%]
sssssssssssssssss.ssssssss.sssss.sss..s.ssssssssssss.sssssssssssssssssss [ 30%]
sssssssssssssssss.sssssssssssssssssssssssssssssssssssssssss.sssssssssssss [ 30%]
sssssssssss.sssss.ssssssss..s.s.ss.sssssssssssssss.ssssssss.ss.sssssssss [ 30%]
ssss.sssssssssssssss.ssssssssssssssss..sssssssssssssssssssssssssssss.sss [ 30%]
sssssssssssssssssssssssssssssss.ssssssssssssssssssssss.sss.sssssssssssss [ 31%]
ssssssssssssssssssssssssssssssssssssssssssss..sssssssssssssssss.ssssssss [ 31%]
ssssssssssssssssssssssss.sssss.ssssssssssssssssssssss.ssssssssssss.sssss [ 31%]
sssssss.sssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssss [ 31%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sss [ 31%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssss.ss [ 31%]
ssssssssssssssssssss.ssssssssssssssssssssssssssssssssssss.s..sssss.ssss. [ 31%]
s.s.s.ss.s.sss..sssssssss.ss.ssssssss..sssssssssssssss.sssss.sssssssssss [ 32%]
ss.ss.ssssss.ssssssssssssssssssssssssssssssssssssssssssssss.ssssssssssss [ 32%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 32%]
ssssss.sss..sssssssssssssssssssssssssssssssssssssssssssssssss........ss.s [ 32%]
ssssssssss.sss..xssssssss.sss.ssssssss.sssssssssssss.s.ss.sssssssss.s.s. [ 32%]
sss.ss.sssssssssssssssssssssssssssssssssss.ssssssssssss.ssssssssssssssss [ 32%]
sssssssssss.sssssssssssssss.sssxsss.s.sssssssssssssssssssssssssss.ssssss [ 32%]
ssssssssssssssssssssssssssssssssssssssssssss.ssssssssssssssssss.ssssssss [ 33%]
sssss.sssss.s.sssssssssssssss.sssssssss.ssssssssss.ssssssssss.ssssssss.s [ 33%]
sssssss.ssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssss [ 33%]
ssssssss.s.ssss.sssssssssss.ssssssssss.x.sssssssssssssssssssss.s.sssssss [ 33%]
sssssssssssssssss..s...ss..ssss.ssssss..ss.ss.sss.ss.sssssss.sssss.sssss [ 33%]
sssssss.ssssssssssss.sssssssssssxssssssssss.ssssssssss.xssssssss.sssssss [ 33%]
sssssssss.ss.ssss.ssssssssssssssssssss.ssssssss.ssssss....sssssssx.s.s.s [ 33%]
ss..s..sss.sssssssss.sss.ssss.sssss.sssss.ssssssssssssss.sss.ss.sssss.ss [ 34%]
x...s....s....s.s.ssssxss.sssss.sssssss.sss.sssss.ssss.ssssssssssssssss.s [ 34%]
sssss.sssssssssssss.ssssssss.sss.s..sss.ssssssss......s.sxsssssssxssss.s [ 34%]
...ss.ssssssss.sssssssssssssssxsss..sss.sssssssssssss.ssssssssssssssssss [ 34%]
ssssssss.ss.sssssssssssssssssssss.sxsss.ssssss.sssssssssssss.ssss.ssssss.. [ 34%]
ssssxsssss.sxssssss.sssssssxsssssssssss.ssss.s.sssssssssss.s.sssssxsssss [ 34%]
ss.sssssss.ssssssssss.ss.s.s.ssss.s.ssss..sssssssssss.sssssss...ssssssss [ 35%]
ssssssss.sssssssssss..sssss.s.ssssss.sssssss.s.ssssss.sxssss.sssss.sssss [ 35%]
sssssssssssssssssssss.ssss.sss.sssssssssssssssss.ss.ss.ssss.sssssssss.ss [ 35%]
ss.ss.sssss.s.sssssssssssss.sss.sss.ssssssssss.s.sssssssss.sss.sssssss.s [ 35%]
sssss.ss.ssss.sssssxssx.ssss.sssssssssss.ssss.sss.s.sxsssss.ssssssssssss [ 35%]
s.s.s.ssssssssssssss..ssssssssssssssssssssss.sss.ssssxss.sssssssssssssss [ 35%]
.sssssssssssssssssx.s.ssss..sss.sssssssss.s.sssssssss.ssssssssssss.sss.s [ 35%]
sss.ssssssssssssssssssxssssssssss.sssssssssssssssssssssssssssss..ssssssss [ 36%]
s.sssssssssss.sssssssssss.sssssssssssssssssssssssssssssssssssssssssss.ss [ 36%]
sssssssssss.s.sssssss.ssssssssss.ssssssssssssss.sss..ssssssssssssssssssx [ 36%]
.ssssss.sss.ssssss.s.ssssssssssssss.sss.ssssssssssssssssssssssssssssssss [ 36%]
sssssss..sss.ssssssssssssssssssssssssssssssssxssssssssssssssssssssssssss [ 36%]
sssssssssssssssssssssssssss.sssss.sss.ss..sssssssssssssssssssssxs.ssssss [ 36%]
ssssssssssssssss.ssssss..ssssssssssss.sssssssssss.ssssssssssssssssssssss [ 36%]
sss.ssssssssssssssssssss.sssssssssss.ssssssssssss.ss.ssss.ssssssssssssss [ 37%]
sssssss.sssssssssss.ssssssssssssssssssssssssssssssssssss.ssssssssssssssss [ 37%]
sssss.sssss.sssss.sssssssssssssssssssss.ssssss.ssssssssssssssssssss.ssss [ 37%]
xssssss.s.xsssssssssssxsssssss.ssssssssssss.s..ssss.ssssxss..s.sssssssss [ 37%]
xssssssssssss.sssssssssss.ssssss.ssxssssss.sssssss.sss.s.ssssss.ssssssxs [ 37%]
.sssssss.xsssssssssssss.ssssssssssss.sssss.sss.sssssss.sss.ssss.sss.ssss [ 37%]
sssss.s.s.sssssss.sssss.sss.s.ssss.ssssssssssssssssssss.xsssss.sss.sssss [ 37%]
ss.ssss.ssssssssss.ssssss.s.ssssssssssss.s.ssssssssss.sssssss.ss.x..s.... [ 38%]
s.s.....ss.ss.ss.ssss.....s.ss.sssssss.ssssssss.sssssssssssssssssssx.ss.s [ 38%]
sssss.ssssssssssssssssss.sxs.sssss.s.s.x.ssssssssssss.sssss.sss.ssssssss [ 38%]
.ssss.sssss.ss.sxsss.sssssss.sssssssss.ss.sssxs.s.s.ssssss.sssss.sssssss [ 38%]
ssss.ssss.ssssssssssssssssssss.ssssssssss.sssss.sss.ssssssssssssssssssss [ 38%]
ssss.sss.sss.ssssss.sssssx.ssss.s.sssssssxs.xx..ssssss.ssssxssssssssss.s [ 38%]
sss.ssssss.xssss.sssss.sss.x.......x..xs..ssss.s.s.ssssx.s....xsss.sx... [ 38%]
..s.xss..ssssssssssssssssssssssssssssssssss..xxxxxssss...s.x.xxss..sssxs [ 39%]
sss.s.ssssxs.s....x..s.....sx.ssssx....s.x..s..xx..s.s.sxss.sss..x...sss [ 39%]
.sss.xsxsss..xs..sss.s.....s.sssss.s...sssss.....sssssx..s.sssssxsssssss [ 39%]
ssssssss.ssss..sss.sssssxsssssssssssssssssssss.s.ssssssssss.s...s.s.x... [ 39%]
......s.ssssss.s.s.ssssssss.ssssss...sssss.sssxsssssssss.sssssssssssssss [ 39%]
s.s.sssss.s.s.ssssssssssss..sss.sssss.s.ssssssssssssssssss.sssssssssssss [ 39%]
ssss.s.xxsxsss...s....xs.x.x.s.sxssssssssssssss.ssssssssssssssssssssssss [ 39%]
.sss.sssxs..sssss.sssssssssss.sss.sssssssssss..sxsxsss.s.s..sss.sssssssx [ 40%]
sssssss.ss...s...sxssss.sssssssss.sssssssssssxssssxssssss.ssssssssssssss [ 40%]
sssssssssssxx.x.x.s..sxss.ssxss.sss....sx.ssss.sssxssss..sss.s.xssssssss [ 40%]
ssssxssssssssssssss.sssssss.ssssss.ssssxss.sssssss..ss...ssssssss.ss.s.ss [ 40%]
sssssssssss.sssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssss [ 40%]
ssssssssssssssssssssssxsssssssss.ssssssssssxsssssssssssssssssssssssss.sss [ 40%]
ssssssss.sssssssssssssssssssssssssssssssss.ssssssssss.sxssssssssssssssss [ 40%]
ssss.ssssss.s.ssssssssssssssssssssssssssssssssssssssssssssssssssss.sssss [ 41%]
sssssssssssssssssssssxsssssssssssssssssssssssssss..ssssssssssss.s.ssssss [ 41%]
ssss.ssssssss.sssssssssssssssssssssssssssssssssssssssssssssss.ssssssssss [ 41%]
ssssssssssssssssssssssssssssssss.ssssssss.ssssssssssssssxsssssssssssssss [ 41%]
ssssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 41%]
s..ssssssssssssssssssssssssssssssss...ss.sssssssssssssssssssssssssssssss [ 41%]
ssssssssss.ssssssssssssssssss.ss.ssssssssssssssss.ssssssssssss.sssssssss [ 41%]
sss.ssssssssss.sssssssssssssssssssssssssss.sssssssssssssssss.sssssssssss [ 42%]
sssssss.sssssss.ssssss.sssssssssssssssssssssssssss.sssssssssssss.sssssss [ 42%]
sssssssssssssssssssssss.sssssssssssssssssssssssss.sss.ssssssssssssssssss [ 42%]
sssssssssssssssssssssssssssssssssssssssssssssssssss.sss.ssssssss.sssssss [ 42%]
sssssssssssssssss.ss.sssssssssssssssssssssssss..sssssss.ssssssssssssssss [ 42%]
ssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssss [ 42%]
sssss.sssssssssssssssssssssssssssssss.ssssssssxsssssssssssssssxsssss.sss [ 43%]
sssssssssss.ssssssss.s.sssssssssss.sssssssssssssssssssssssssssssssssssss [ 43%]
ssssssssss.ss.ssssssssxss.ss.sssssss.ssssssssssssss.s...sx.ssssssss.ssss [ 43%]
sssxsssxsssss.ss.ssssssssssssssssssssssssssssss.sssssssss.ssssss.sssssss [ 43%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssss [ 43%]
sssss.ssssssssssssssssssssssxss.ssssssssss.sssssssss.sss.sssxss.ssssssss [ 43%]
ssssssssxssssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssssss [ 43%]
ssssssssssssssssssxssssssssssssssssssssssssss.sssssss.sssssssssssssssss.s [ 44%]
sssssssssssssssssssssss.ssssssssssssssssssssssss.ssssssssssss.ssssssssss. [ 44%]
ssssssssssssssssssss.sssssssssssssssss.ssssssssssssssssssssssss.ssss.ssss [ 44%]
sssssss.ssssssssss.sssssss.ssssss.ssssss.ssssssssssssssss.ssssssssssssss [ 44%]
sssss.sssssssssssssssss.ssss.ssssssssssssss.ss.sssssssssss...s..s.s..sxx [ 44%]
...s.s..sxsssssxss..sssss.sssssss.sss.ssxssssss.ssssss.ssssssssssss.ssss [ 44%]
ssssssssssss.sss.sssssss.ssssssssssssss.ssssssssssssssssssssssssssssssss [ 44%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 45%]
ssssssssssssssssssssssssssssssssssssssssssss..ssssssssssssssxsssssssssss [ 45%]
ssssss.sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 45%]
ssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssx [ 45%]
sss.ssssssssssssssssssssss.ssssss.ssssssssss..sssssssssssssssssssssssssss [ 45%]
ssssssxssssssssssssssssssss..sssssssssssssssssssssssssssssssssssssssssss [ 45%]
ssssssss.ss.ssssss.s.sssxs.ssssssssssssssss.ssss.xss.ssssss.ssssssssssss [ 45%]
sssssssss.ssssss.ssssssssssssssssssssssssssxsssssssxssssssssssss.sssss.s [ 46%]
ss.sssssssxs.ss..s......s.xx..x.sx.xx.x..ss.ssss.s.x.s...ssssssxsxsxsss.s [ 46%]
sssssssssss...xx.xssss.s....s.xx.x.Fs.ss.ss.ssssssssssxs.sssssssssssssss [ 46%]
s.sxsssssxsxssss.ss.sssssss.ssssssss.ssss.sssss.sssssssssssss.sss.ssssss [ 46%]
sssssxsss.sssssssssssssssssss.s.s.ssssssssssssxsssssss.sxsssssss.sssssss [ 46%]
ssssssssssssssssssssssss.ssxssssssssss.sss.ssssssssssssssssssss.s.ssssss [ 46%]
ssss.sssssssssssssss.sssssssssxssssssssssssssssssssss.s.ssssssssssssssss [ 46%]
s.ssss.ssssss.sssxsss.sxssss.sxsss.ss.sssssssss..sss.s.sssssxsssssssssss [ 47%]
ssssssssssssssssssss.ssssssssssssssssssssssssssssssssssss.ssssxsssssssss [ 47%]
xssssssssssssssssssssxssssxssssssss.ssssssss.ssssss.ss.sssss.sssssssxsss [ 47%]
ssss.ssssssssssss.sssssssssssssssssssssssssssxssssss.ssssssssxssssssssss [ 47%]
ssssssssssssssssssssssssxsssssssssss.ssssssssssssssssssssssss.ssssssssss [ 47%]
ssssssssssxssssss.s.ssssssssssxssssssssxssssssssssxsssssssss.sssssssssss [ 47%]
ssssssss.sssssssssssssssssssssssssssss.sssssssxssssss.sxssssssssssssssss [ 47%]
sssssss.ssssssssss.ssssss.ssxsxssssxssssssssssssssssssssss.s.sssssss.sss [ 48%]
ssxssssssssssss.ssss.ssssssssssxssxss.s.sss.ssss.sssssssssssssssss..ssss [ 48%]
sssss.sssssssssssssssssssssssssxsssssxssssssssssssssssssss.s.sssssssssss [ 48%]
sssssssssssxssssssssssssssssssssss.sssssssss.s.sssss.sssssssssxsssssssxs [ 48%]
ssssssssssss.sssssssssssssssssssssssss.ssssssssss..ssssssssssss..sssss.s [ 48%]
ssssssssssssxssss.ssssx.sssssssssssssssssssssssxs.ssssxssss.s.sssssss.ss [ 48%]
sssssssssssss.ssssssssssssssss.ssssssxsssssssssssssssssssssssssssssxssss [ 48%]
ssss.sssssssxssssssssssssssssssssssssssssssxssssssssssssssssssssssssssss [ 49%]
xsssssssssssssssssssssssssxxssssssssssssssssssssssssssssssssss.sssssssss [ 49%]
ssssxssssssssssssssssssssssssssssssssss.sssssssss.ssssssssssssssssssssss [ 49%]
sssssssxsssssssssssxsssssssssssssxssssssssssssssssss.sssssssssssssssssss [ 49%]
ssss.sssssssssssssssssss.ssssssssssssss.ssssssssss.ssssssssss.ssssssssss [ 49%]
sssssxsssx.sssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssss [ 49%]
.sssssss.sxssssxsssssss.s.ssssssss.s.s.ssssssssssssss.ssxsss.sxssssssssx [ 49%]
sssssssssssx.sssssssssssssssssssssssssssssssssssssssss.sssssssssssssss.ss [ 50%]
ssssssssssssssssssssssssssssss.ssss.s.sssssss.ssxsssssssxsssssssssssssss [ 50%]
sssssssssssssssssssssss.sssssssss.ssssssssssssssssssssssssssssssssssssss [ 50%]
sss.sssss.sssssssssssssssssssssss.ssssssssssssssssss.sssssssssssssssssss [ 50%]
.s.sssssssssssssss..ssxssssssssssssssssssssssss.sss....s.s...s.s....xx.. [ 50%]
..sssssx..s.s.xxx.s.x.s.s.x.xx.ssssxsssssssssssssssxssssssssssss.ssssssss [ 50%]
sssssssx.ssssssssxsss.s.sssssssssssssssssssssssssssxsssss.s.sss.ssssssssx [ 51%]
ssssssssssssssssss.sssssss.ssssssssssxsssss.ssssssssssssssssssxsssssssss [ 51%]
ssssss.sss.sssssssssssssssssss.sssssssxssss.s.sssssssssssssxsssssssssssss [ 51%]
sssssxss.sssssssssssssssssssssssssss.ssss.sssxsssssssssssssssssssxsss.sss [ 51%]
ss.sssssss.sssssss.s.sssss.ss.sssssxsxsssssssssssssssxsssssssssssssssss. [ 51%]
s.sss.ss.sssssssssssxssssssssssssssssssssssssssssssssssss.ss.sssssssssss [ 51%]
sssx.ssss.ssssssssssssssssss.xs.sssssssss.ssssssx.sssssssssssssss.ssss.s [ 51%]
x.ssssss.sssssssssssssss.ssssssxssssssssssssss.ssssssssssss.sssssssss.ss [ 52%]
ssssssssxxxsss.sssssss.ssssssssssssssssssss.ss.s.ssssssssssssssssssssssxs [ 52%]
ss.ssssssssxss.ssssssssssxssssssssssss.ssssssssxssssssss.sssssxsssssssss [ 52%]
ss.ssssssssssss..sssssssssssssssssssssssssssssssssssssssssssssssxsssssss [ 52%]
s.s.sssssssss..ssssxssss.ssssxssssssssss.sssss.sssssssssssssss.sssssx.ss [ 52%]
sssssssssssssssssssssssssssssssssssssss.sssssssssssss.ssssssssssssssss.s [ 52%]
sssssssssssssssssssss.sssssxssssssssssss.s.ssxss.ssssss.ssssssssss.sss.s [ 52%]
ssssss.sssssssssssss.ss.s.sssssssss.sssssssssssssssssss.ssssssssss.sssxs [ 53%]
ss.s.sss.ssssssssssssss.xsssssssssssssssssssssssssssssss.ssssxssssssssss [ 53%]
sssss.sssssssssssssssssssssssss.s.ssssssssssssx.ss.sssssssxsssssxsss..ss [ 53%]
sssssssssss.ssssssxssxssssss.ssssssss.ssssssssxsssssssssssxssssss.ssssss [ 53%]
ssssss.ssssssss.sssssssssssssssssssssssssssssssss.ssss.sssssssssssssssss [ 53%]
sssssssssssssssssssssssssssssx.ss.sssssssssssssssssssssssssssssssssss.sss [ 53%]
sxssss.ssssssss.sssssssssssssx.sssssxssssxsssssssssssssss.ssssssssssssss [ 53%]
ssssxsssssxss.sss..sssssssssssssssssxssssssssssssssssssssssssssssssss.ss [ 54%]
sssss.sssssssssssssss.ssssssssssssssssssssssssssssssssss.xssssssssss.sss [ 54%]
sssssss.sssss.sss.ssssssxsssssssssssxssss.ssssssssssssssssssssssssssssss [ 54%]
sssssssssssssssssssssssssssssssssssss.ssssssssssssssssssssss.ssssssssssss [ 54%]
sssssssssss.ssssssssssssssssssssssssssssssssssssssssss.ssssss.sssssssssss [ 54%]
sssssss.ssssssssssssssssssssss.sssssssssssssssssss.sssssssssssssssss.sss [ 54%]
ssssssssssssssssssssssssxsssssssssssssssss.sssssssssssss.sssssssss.sssss [ 54%]
sssssssssssssssssssxsssssss.sssssssssss.s.ssssssssssssssssssssssssssssss [ 55%]
s.ssssssss.sssx.sssssssssssssssssssssssxssssssssssssssssssssssssssssssss [ 55%]
sssssssssssssssssssssssssssssssssssssss.ssxsssssssssssssssssxssssssxssss [ 55%]
ss.sssssssssssssssssssssssss.ssxssssssssssssssssssss.ssssssssssssssssssss [ 55%]
.ssssssssssssssssssssxssssssssss.sssssssssssssssssssss.ssssssssssssssss. [ 55%]
sssssssssssssssssssxsssssxssssssssssxssssssss.sssssxsssss.ssssssssssssss [ 55%]
sssssssssssss.ssssss.sssssssssssssssssss.s.sxssxssssssssssssss.sssssssss [ 55%]
ssssssssx.sssxsssssssssssssssssssssssssssssssssssssssss.xsssssssssssssss [ 56%]
sss.ssssssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssss [ 56%]
ss.sssssssssssssssssssssssssssssssssssssssss.sssssssssssssssssssssssssss [ 56%]
ssssssssxssss.ssssssssssss.s.ssssssssssssssssssssssssssss.ssssssssssssss [ 56%]
sssssssssssssssssssssssssssssxssss.ssssxsssssssssssssssssssssssxssssssss [ 56%]
sssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssss [ 56%]
.ssssss.ssss.s.sssss.s.ssssssssssx.ssssssssssss.ss.sssss.ssssssssssssss.s [ 56%]
sss.ssssssss.ssssss.sxssss.sssssxsssxssssssss.sss.ssssssssssssssxssssss. [ 57%]
sssxssssss..sssssssxs.sssssssssssxssssssssssssssssssxssssssssxsssxssssss [ 57%]
sxs.ssssss.s.sssss.s.sssssssssss.sxssxss.sss.ssssssxssssxssxsss.ssxssss. [ 57%]
sxs.sssxsxssss.ssxssssssxs.ssss..xs.sx.x...xsxssssx....ss.ssssssssssss.s [ 57%]
ss.s.sssxsssssss.sssssss.sssssssssssssssxssssss.ssssssxssssssssssssxssss [ 57%]
sssssss.sssss.ss.ssssssssxxssssssssssssss.sxsxsssssssss.sssxsssssssssss.s [ 57%]
ss.sssss.ssssssssssxss.sssssss.xsssxsssxssssssssssss.sss.sssssxsssssssss. [ 58%]
sssssxssxssssssssssssssxssssss.x..sx.xssssx.s..ss..s.x.sssssssssssssssxs [ 58%]
.ssss.sxsssssss.sssssssxssssssssss.sxsssx.sssssssx.ssssssssss.ssssssssss [ 58%]
ssssssssxsssssssxsssssssssssssxssssss.sss.sssssssxsssssssssssssss.sss.sss [ 58%]
sssss.ssssxsssss.sssssss.....sssssxssssssssss.ss.sssss.s.x.sx.s..sx.s... [ 58%]
xx.ssssssss.s.sss.ssssssssxs..xxssssx.s.ssssssssssssssssxsssxss.ssssssss [ 58%]
sssssssxssssssxx.s.s...sx...xs.xxx.s.xxx.ssxs..sssssssssssssssssssssssss [ 58%]
ss.xxx..sx.x.s.x.sxxssss.s.sx.xs.s.sx.xssssxxssxss..s.xxx..s.xx.sxx.sxx.. [ 59%]
ssssssx.s.s.ss.ssssssxsssssssxssxsssssss.ssssssx.xxxxx.x.sx.xxxxssssxxss [ 59%]
ss.xs.xsss.ssssss.sssssssss.ssss.s.xs..xx.xx.sxssss.xxssss..sxxssssxssss [ 59%]
.sxx.sxx.s.xxs..sxsx.sssxsx..s.x.....s.s.xsxsssssxssssss.xsssssss.xxss.s [ 59%]
s.ssssss.ss.ssssssss.sssssxsssssssssssssssssssss.ssssss.xsssssxx.sss.ssx. [ 59%]
.sxssss..xs.ssss..s.s.xx.sxsxsssx.ssss.s.x..x...ss.s..sx..s.xxx..ssxxsss [ 59%]
s....s..xx....sss...s.xxx.xssss..x.ssssssssxssx.xsssssssssss.ss.ssssssss [ 59%]
.ss.sssssssxsssxsxsxxsssxsxsssssss.s.sss.sssssss.ssss.sss.s.sssssssxsssx [ 60%]
s.sssssssss.ssss.sss.xss.sx.ssssssssssssssss.s.ssssssssssssssssssss.ss.. [ 60%]
xx..s.xsxsxs.s...ssss.s.s..ssssss.s.xsss.xxxsxsssssss.x.sssxssssssssssss [ 60%]
ssssssssssssssssssssssssssssssssssssxssssssssssssssxsssssssssssssssssxss [ 60%]
sxssssssssssxssssssssssssxssss.sssss.sxsxsxsssssssssxsxssssssssssxsssss.x [ 60%]
sssss.sssssssx.s.sssssssssxssssssxssxsxsssssssssssssssxxssssssssssssssss [ 60%]
ss.sssssssssssssssssss.ssssssssssssss.xss.ssssssssssssssssssssssss.sssss [ 60%]
ss.sxsxssssssssssssssss.ssssssxssss.sss.ssssssssssssssssssssssssssss.sss [ 61%]
sss.xsssssssssssssssssssssssssssxsssssssssssssssssssxsssssssssssssssssss [ 61%]
sssssssssssssssssssxssssssss.sssssssxssssssssssssssssssx.ssssssssssssssss [ 61%]
ssssssssssssssssssssssssxsssssss.ssssssssss.ssssssssssssssxssssss.xsxsss [ 61%]
s.ssssssssssssssssssssssssssssssssssssssss.ssssssssssssssxssssssssssssss [ 61%]
sssssssssssssssssssssssssssssxssssss.sss.sssssssssssssss.sss.sssssssssss [ 61%]
sssssssssssssssssxssssssxsssssssssssssssssssssss.ssssssssss.sssssxsssssss [ 61%]
.sss.sssssssssssssssssssssssssssssssssxsssssssxsssssssssssssssssssssssss [ 62%]
sssssssss.sssssssssssssssssss.sxsssxsssssssssxssssssssssssssxssssssssssss [ 62%]
ssssxsssssssssssssssxxxsssssssssssssssssssssssssssssssssssssssssssssssxs [ 62%]
sssss.sssssssssssssssssssssss.ssssxssssxsssssssssss.ssssssssssssssssssss [ 62%]
sssssxsxssssssssssssssssssssssssssssss.sssssssssssssssssssssssssssssssssxs [ 62%]
s.ssssssxssssssssssssss.s.ssssssssssssssssssxsssssxsssssssssssssssssssss [ 62%]
sssxsssssssssssssssssssssssssssss.ssssssss.ssss.ssssx.s.s.sx.sxs.sssssss [ 62%]
xssss.ssssssssxssssssssxxss.s.ss.sx.xxssssssss.sxxxx...ssx.x.ss.s.xssss. [ 63%]
xssssssssssssssssxsssssss.sssssssxs.sxxsssssssssssssssssssxsssss.sssssss [ 63%]
ssssssss.ssssxssssssssssxx.x.sx...xsxxsxsss..sx.sxx.s.xs..x..ssxx.xsss.. [ 63%]
.ssx..xxssssx...xxx.s.s.x.s...ssxssssssssssssssssssssxxx.xsssss.sxssssxs [ 63%]
ssssxssssss.s.xssssssssssssss.sssssssss.ssssssssssssssxssxsssssssssss.sss [ 63%]
sssssssssssssssss.ssssssssss.ssxsssssssssssssssss.ssssssssssssssssssssss [ 63%]
sssssssxsssssssssssssssssxssssssssssssssxssssssssssxssssssssxssssssssss.s [ 63%]
sssxxxssssssssssssssss.sxss.sssxssssssxssssxxssssssssss.xs.xsssssssxssss [ 64%]
sssxsssssssssss.sx..ssssssssssxss.ssssxsssssss.ssssxxssssxssssssssssssss. [ 64%]
ssssssxssssssssssssssssss.s.ssssssssss.sxsssssssss.sssssssssssssssssssxs [ 64%]
ssss.sssssxsssssssssssssssssssssssssssssssssss.sssssssssssss.ssssssssxsss [ 64%]
sssssxssxsssssssssssssssssssxsssssssssssssssssssssssssssssssssssssssssss [ 64%]
sssxssssssssssssssssssssssssssssssssssss.ssssss.ssssssssssssssssssssssssss [ 64%]
.ssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssssssssssssxsss [ 65%]
ssssssss.sxssssss.sssssssssssssss.ssssssssssssssssssssssssssssssssssssss [ 65%]
ssss.ssssss.ssssssssssssssssxsssssxssx.sss.ssssssssssssssss.sssssxx..xxs [ 65%]
ss.ssssss.ssss.ss.ssssss.sxsssssssssssssssssssssssssssssssssssssssssssss [ 65%]
ssssssssxsssssssssxsssssssssxssssssssssssssssxssssssssssssssssssssssssss [ 65%]
.sssssssssssssssssssssssssss.ssssss.ssssssssssssssssssssssssssssssssssss [ 65%]
ssssssssssssxsssssssssssssssss.sssssssss.sssssxssssssssssssssssssssssssss [ 65%]
ssssssss.ssssssssssssssssssssxssssssssssxssssssssssssssssssssssssss.sssss [ 66%]
ss.sxsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 66%]
sssssssssxsss.sssssssssssssssssssssssssxssssssssssssssssssssssssssssssss [ 66%]
sssssssssssssssssssssssssxssssssssssssssssss.ssss.ssssssssssssssssssssss [ 66%]
ssssssssssssssssssssssssssssss..ssssssssssssssssssssssssssssssssssssssss [ 66%]
ssssss.ssssssssssssssss.sssssssssxsssssssssssssssssssss.sssssssssssssssss [ 66%]
ssssssss.ssssssssssssss.sssssssssssss.sssssssss.sssssssssxssssxssss.ssss [ 66%]
sssssssssssssssssssssssss.ss.ssssssssssssssssssssxsssssssss.ss.sssssssss [ 67%]
ssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssssssssss [ 67%]
sssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssss [ 67%]
sssssssssssssxssssxsssssssxsssssssssssssssssssssssssssssss.sssssssssssss [ 67%]
sssssssxssss.ss.sxsssssssssssssssssssssssssssssssssssssssssssssxsssssssss [ 67%]
ssssssssssxsssssssssssssssssssssssssssssssssssss.s.sssssssssssssssssxsxss [ 67%]
ssssssssssssssssss.ssssssssssssssssssssssssss.ssssssssssssssssssssssssssss [ 67%]
ssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssssssssss.sss [ 68%]
ssssssssxssxssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 68%]
sssssssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssss [ 68%]
ssssssxsssssssssxsssssssssssssssssssssssssssssssssssxssssssssssssxsssssss [ 68%]
sssssssssssxssssxsss.ssssssssss.ssssssssssssssssssssssssssss.ssxxssss.sss [ 68%]
ssssssssssssxs.ssssssssssssssss.sss.ssss.sssssssssssssssssssssssssssssss [ 68%]
ssssssssssssssssssssssssssssssss.ssssssssssssssxxsssssssssssssxssss.ssss [ 68%]
ssssssssxsssxssssssssssxxxssxss.xxsssss.sssssssssss.sssssssssxsssss.ssss [ 69%]
s.ssssssss.sssxsssssssssssssssssssssssssssssssssssssssssss.sssssssssssss [ 69%]
ssssss.sssssssx.xss.s.ssssssssssssssssxssssssssssssssssxssssssssssssssss [ 69%]
ssssssssssssssssssssssssssss.ssssssssssssssssssssssssssssssssssssssss.sss [ 69%]
sssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssssssssssssss [ 69%]
ssssssxsss.ssxxxs.sssxsxxxxxx.s..sxxxs.xsss.sssssssssssx.sss.xsxsssssss.s [ 69%]
s..ssss.sssss.sxxsxsssssxx..s.sxssssxsssxsxsssssssssxsssssssssssssxxsssss [ 69%]
ssssssssssssssxsssssssssxss.sssssssssssssssssssss.s..sx.x.s.sx.xxx.sxxx. [ 70%]
xx.ssssx.xs...x.s..sxxx.sxxx....xs.s.xssssxsssssssxxxssxsssssssssxssssss [ 70%]
ss.ssssssssssss.ssssssxssssxssss.ssss.sxssssssxssxsssssxsssssssssssss.ss [ 70%]
sssssssssssxsx.sxx..ssx.xxxxxxx.sxxxssssssssxxx..sxxssssxsss.ssx.xsss.ss [ 70%]
xssssxxx.s.x.xssssssssssssssssssssss..s.sssssxsssssssss.ssssssxsssssxsss [ 70%]
sssssssssxssssssssssxsss.sss.ssxsssssssssssxssssssssxssssssssxxsxxs..sss [ 70%]
s.sxx.xssssxx.xxxxxx.x.xx.sx.s..x.x.sx.s.sxxssssxx.xxssss.s.xxxxxx.s.xsx [ 71%]
xssssx.x.sxxx..xsxxssxss.sssssssssssssss.ss.sssssssx..x.sxsss.sxss.xssxs [ 71%]
ssx.ssssssssssxssssssssxx.sxxxssss.xssss.sxxsssxs.x.sxx.sxxss.x.xxsxsss. [ 71%]
xssxsssxxxxxxs.sssssxxssxssss.sxsssxssssssssss.ssssssxsss.ssssssssssxssx [ 71%]
s.ssss...sssssssssxsssssssxsssssssssssssssssss.ssssssssss.ssssssssssssss [ 71%]
ssssx...s.s.xxx.sssssssssxssssssssssssssss..s.xxx..sxssss.s.xxxxx..x...s [ 71%]
.xx.xxx.xx..x.s.xxxx.xxx.x.s.xs.s.s.xxx.x...sx.x.sssxsss.sxsssssssssssss [ 71%]
ssssssssxssxssxssxsssxsssssxsssss.ssxsssssssxssxssssssssxsssssssssssxx.xx [ 72%]
x.xsxssssss.sssssss.sssssss.ssxsssssxssssxssssssxssxss.sssssssssssxssss. [ 72%]
ssssssssxssxsssssxssssssssssssssssssssssssssssssssssssxssxsssssssss.sxxs [ 72%]
ssss.ssssssssssssssssssxssssssssssssssssssssxsssssss.ssssssssssssssssssss [ 72%]
sxsssssssssss.ssssxssssssssss.ssxssssxssssssssssssssssssssssssssssssxssx [ 72%]
sssssssssssss.xsssssssssss.sssssssssssssssssssssssssxssssssssssssssssssx [ 72%]
sxsssssssss.sssssxssxssxsssssssxxsssxsssssssssssxsxssxsssssss.ssssssssxs [ 72%]
.ssssxsssssssssxsssssssssxsssssss.xssxssssssssssssss.sss.sssssssssxsssss [ 73%]
ssxssssssssssxssssssssssssss.ssssssssssssssxssssss.sssssssssssxsssssssss [ 73%]
ssssssssxssxsssxssssssssssssssssssssssssssss.sssssss.sssssssssssssssssss [ 73%]
sssxsssssssssssxsssx.sssssssssssssxs.sssssss.sssssssssssxsss.sssssssssss [ 73%]
sssxsssss.sssssssssssssssssssssssssssssssssssssssssss.sssssssssxxsssxssxs [ 73%]
sssss.sssssssssssxs.sssssssssxsss.ssssxsssssssssssssssssssss.sssssssssss [ 73%]
ssssssxsssss.sssssssssssssssssxssssssxs.sxsss.ssssssxss.ssssssssssssxssx [ 73%]
sx.ssssssssssxssssssssssssxxssssss.ssss.sssssssssxsssssssssssssssssssssx [ 74%]
sssxsssssssssssssssxsxxss.ssssxsxssssssssxsssssssssssssxxsssssssssssssss [ 74%]
ssss..sssss.sssssssxsssssxssssssssssssxssxsxsssxssssssssssssssssss.ssxss [ 74%]
s.sssssxsssssssssxsxsxsxxsssssssssssssss.ss.sxxssssssssssssxss.sssssssss [ 74%]
ssssssssxsssssssssssssssssssssssxssssssssssssssssxssssssssssssssssssssss [ 74%]
ssssxsssssssssssssssssssssssssssssssssssssssssssssssss.sssssssssssssssss [ 74%]
ssxsssssssssssssssssssssssssxssssssssssssssssssssxssssssssssxsssssssxsssss [ 74%]
ssssssssssxssxssssssssssxsssssssssssssssssssssx.sxsssxssssssssssssssssss [ 75%]
sssssssssssssssss.ssssssssssssssssssssxssssssx.ssssssssssxssssssssssssss [ 75%]
ssssssssxssssssssssssssssxsssxssssssssxssssssssxxxssssxx.s.xssssxxxx.s.x [ 75%]
.sxx.xxxssssxxxssssxx.s..xx.xxxssss..sx.xssssxssss.xxx..xssss.xx.xxxx.s. [ 75%]
.sxxxxx..sxxxxxxxxssss..xx.sx....sxxx.xx.sxsxsss.ssssssss.ssssssssssss.sx [ 75%]
ssxsssss.ssssssssssxsssssssssssssssssxs.sssssssssxssssssxssssxsssxss.sxs [ 75%]
sssxsssssssxsssssssssxxssssssssssssssxxss.sssssssx.s.xsxsssx.xssssxxssss [ 75%]
xssssxx.xxxssssxxx.xx.s.sssssssssxsssssssssxxssssssssssssssssssxssssssss [ 76%]
s.xsssssxsssssssssssxsssssssssssssssssssssssssssssssssssssssxsssssssssss [ 76%]
sssss.sss.sss.sxsssssssssssssssssssxssssxsssss.ssssssxssss.ssssx.x...x..x [ 76%]
ssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssssssssss.sssss [ 76%]
sssssssssssssss.ssxsssssssssssssssssssssssssssssssssssssssssssssss.sssss [ 76%]
sssssssssssxsssssxss.xxxxs.sssss.ssssssssss.ssssssssssss.xx.ssss..x.xxss [ 76%]
ss.xx.xx.xxxx.xx..ssxs.ssssss.sssssssss.ssssxssss.sssxsssssxssssssssssxs [ 76%]
sxssssssxsxssssss.xsssssxxsssss..sxsxsssssxxxxxx.xxxxxxxx.ssssxxssssxxxx [ 77%]
ssssssss.xxxxxxxx.xxssxs.sxxxssssxxx.x.xx..xx...xxxxssssxxxxxssxssxxxsss [ 77%]
ssxssxxssssxsssssssssxxssssssssxsssssssssxsssssssssssssssssssssssssssssx [ 77%]
ss.s.sssxsxxxxssssxxxxxssss..xxx.ssss.xxxxxssss..xxxxssss...xxxssxssssss [ 77%]
.xxxxx.x.x.xx.xx..xx..x.xxx...x.xx..xx...xxxxxxxxxxxxxx..xxxx.xxxssss.xx [ 77%]
xsxsssxxx.xxxx.xxxxxx..xsssxsxxxssssxxsssxssxxsxsssxssssssssssssxsssssss [ 77%]
ssxsxsssxsxsssxsxssxssssxxssssssssssssssssssssssssssssssssxsssssssssssss [ 77%]
ssxsssssxsxssxsssssssssssssssssssxssssssxsssssssss.sssssssssssxsssssssss [ 78%]
sssssssssssssxxssssssssssssssssssssss.ssssssssssssssssssssssssssssssssxss [ 78%]
sssssssssssssssssssssssssssssssxssxsssssssssssssssssssssssssssssssssxsss [ 78%]
ssssssss.xssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 78%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxssssssssss.s [ 78%]
sssxsssssssssssssssssss.xssssxssssssssssssssssssssssss.sssssss.ssssssxss [ 78%]
ssssssssssssssxxxx..x.xxs.xx.sxsxxxssssx..xssxsssssssssssssssssssxssssss [ 79%]
ssxssxssssxssssssssssssss.sxsssssssssssssssssssssssssssssssssxssssssssss [ 79%]
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.ssssssss [ 79%]
ssssssssssssssssssssssssssssssssxs.ssssssssssssssssssssssxssssssssssssss [ 79%]
ssssssssssssssssssssssssssssxssssssssssssssssssssxssssssssssssssssssssss [ 79%]
ssssssssssssssssxssssssssssssssssssssssssssssssssss.ssssssssssssssssssss [ 79%]
ssssssssssssssxssssssssssssssssssssssssssssssssssssssssxsssssssssssssxss [ 79%]
ss.ssssssssssssssssssssssssssssssssssssssssssssssssxssssssssssssssssssxs [ 80%]
sssssxssssssxxs.sssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 80%]
sssssssssssssssssssssssssssssssxssssssssssssssssssssssssssssssssssssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssxsss.sssssssssssssssssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxs [ 80%]
ssssssssssssssssssssssssss.ssss.sssssssssssssssssxssssssssssssssxsssssss [ 80%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssxssssxss [ 80%]
sssxsssssssssssssxsss.xsxsssssssssssssssssssssssssssxsssssssssssxsssssss [ 81%]
sssssssssssssxsssssssssssssssssssssssssssssssssssssssxs.x.ssssssssssssss [ 81%]
ssssssssssssssxssxssssss..xx.xxsssxsxxxxxsssxxs.x.x..xxxxxxxxxx..xssssxx [ 81%]
xxxx.xxsssssssssssxssssssxssssssxssssssssxssssssssssxsss.sxxxsssssssssss [ 81%]
ssxsssssssss.sssssssxssssxssssssssssssxsssssssssssssssssssssssssxsssssss [ 81%]
sssssxssssssssssssssssssssssssssssssssssssssssssssssssxsssssssssssssssss [ 81%]
ssssssssssxsssssssssssssssssssxsssxsssss.ssxx.sssx.ssssssssssssssssssssx [ 81%]
ssssssssxsssssssxssssssss.sssssssssssss.ssssssssssssssssssssssssssssssss [ 82%]
ss.ssssssssssssssssxssssxssssxssssssssssssssssssxsssssss.sssssssssssssss [ 82%]
ssssssssssssssssssssxssssssxssssssssssss.x.xx.xsssssssxssxsxssssssxxxxsx [ 82%]
.x.xxxssssxxx.xx.xxxx.x.x.xxx.xssssx.xssssxxxxxx..xssss..xx.xx.x.xs.ssss [ 82%]
.xxxxxxxxxxxxxx.xxx.xx..ssssxxx.x.xssxsxsssss.ssssssxssssssssssssssxsxss [ 82%]
sxxsssssss.ssx.ssxxsssssssxssssssssssxs.sssssxxsxss.s...xx.xxxx.xsxsss.x [ 82%]
.xxxxxxxxssssxxxxxxsssxsxxxx.xxxxsssxsxssssxx.xxxxxx.xs.sxssxsssssxxxsxs [ 82%]
ssssxsssssssssssssssssxx.xxssss.x.xxxxxssssssssx.xxssss..xx.xxxxxssssx.x [ 83%]
x..xssssx.xxxxssssssssssxssssssssssssssxssssxsssssssssxsssssxssssxssssss [ 83%]
sssssssxssssssssssx.sssxsssssssssssxssxsssssss.sxsssssxssssssssssssssssss [ 83%]
sssssssssss.sssxsssssxssxs.xsssssssssss.sssssxsssssssssssssss.sx.sxssssxs [ 83%]
sxsssxxssss.xxxxx.xxxssssxxxx.xsssxsx.xxxxxx.xx..xxsxsssxsxsssxx..xx.xxsx [ 83%]
ssssssssssxssssssssssssssxsssssxssssssssssssssssssssssssssssxsssssssssss [ 83%]
ssxsssxsssssssxsssssss.sssssssssss.sxssssssssssssssssssssssxsssssssssssss [ 83%]
ssssssssssssxssssssssxssssxssssssssssssssssssxsssssssss.sxssssssssssxsss [ 84%]
ssssssss.sssssssssssssssssssssssssxssssssssssssss.ssxssxsssssxssssssssss [ 84%]
sssss..sssssssssssxsssssssssssssssssxssssss.sss.ssxsssssssxssssssssssssx [ 84%]
sssxssssssssssxssssssssssssssssssssssssssssssss.sxsssxsssssss.ssssssssss [ 84%]
ssssss.sssssssssssssssssssssssssssssssxssssssssssxssssssssssss.ssssssssxs [ 84%]
ssxsssssssssxsssssssssxssxssssssssssssssssssssss.sssssssssssssssssssssss [ 84%]
sssxsssssssssssssssssss.ssssss.sssssssssssxsssssss.ssssssssxxssxssssxsxs [ 84%]
ssssssssxs.ssssssssss.s.sss.ssssssssssxsss.sssssssssssssssxsxsssssssssss [ 85%]
sssxsssss.ssssssssssssss.sssssssssssssss.ssssssssxssssssssssssssssssssss [ 85%]
ssssxxsssssssssssssss.sssssssssssssss.sssssssssxsssssssssssssssxsssssssss [ 85%]
sssssssssssssssssxs.sssssssssssssssssssssssssssssssssssssssssxsssssssss.s [ 85%]
ssssssxssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 85%]
.sssssssssssssssxssssssssssssssssssssssssssssssssxssssssssxssssssssssssss [ 85%]
sssssssssssssssssssssssssssss.sssssxssssss.sssssss.ssssss.ssssssxsssssss [ 86%]
sssssssssssssssssssssssssssssssssssssssssssxsssssssxssxss.sssssssssss.ss [ 86%]
sssssssssssssssssssssxssss.sssssssssxssss.ssssssss.ssssssxssssssssssssss [ 86%]
sssssssssssssssssxxsssssxssssssssssxssssssxssxssssssssxssssssssssssxssss [ 86%]
ssssssssssssssssssssssssssssssssssssssssxsssssssxxxsssssssssssssssssssss [ 86%]
ssxsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxss.s [ 86%]
sssssssssssxssssssssssssssssssssssssssxsssssssssssxxsxssssssssssxsssssss [ 86%]
ssxssssssssssssssssssssss.sssssssssssssssssssssssxssssssxssssssssssxsxss [ 87%]
sssssssxssssssssssssssssxxxsssssssssssssssssssssssxsssxssssssssssssssssx [ 87%]
xsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxsxssx [ 87%]
ssssssssssssssssxsssssssssssssssssssxsxsssssssssssssssssssssssssxxxssssss [ 87%]
sssssssssssssssssssssssssssssxssssssssssssxxxxxxxxsxssssssssxsssxs.xssss [ 87%]
xxsss.sssssssxsssssssssssssss.s.xx.xxxxxssssxx..xx.xssssxxxxxxssssxxxxxx [ 87%]
ssssxssssxx.xxxxsssxs..xxxs.sxssxssssssssssxsssxss.sssssssssssssxxssssxs [ 87%]
sssssssssxs.sx.x.xxsssx..x.xx.xxxxx..xxs.sssxxxxx.x.xxxx.ssssxx.xx.x.xx. [ 88%]
s.xs.sssxssssssxsxsxss.sssxssssxsssssssssssssssssssssxssssssssssssssssss [ 88%]
sssxsssss.ss.sssssss.sxsxsssssxx.xxxxx.xxxxxx.xsxsssxxxxxssssxxsssss.sss [ 88%]
sssxssxsssssxsxsssssssxssxxxxx.xxssssxsssssssssssssssssxsssssxsss.ssxsss [ 88%]
xsssxssssssssssssssss.sssssssssssxsxsssssssssssssss.ssxssssss.ssssssssss [ 88%]
sxsssxsssssxsssss.sxssssssssssssssssxsssss.x.xxxssssx..x..xsssxs.xxxx.xx [ 88%]
xxxxxxssss.xssssxxxs.sssxx.xxxx.x.xxx..xxxssssxxssssxxssssxxsssssssxxs.x [ 88%]
ssssssssss.sxssxsxsxssssxsssss.ssssssxss.sssss.xx.x.xxssss.xxxssss.xsss. [ 89%]
x.xxx.xssssxx.xxssxssssssxsssssssxsxsxssssssssssssxssss.s.ssssxsssxsssss [ 89%]
sssxsssssxss.ssxssssssssx.xssssxxxxx..x.sssssssssssssssxssssssssxssxssss. [ 89%]
sssss.x..xsssxsssss.xxxxsssxxxssssxxssssssss.xxx..xxxxssssxxxx..xxxx.xxx [ 89%]
xxxxxss.ssx..xx.x.sxsssssss..xxxxx..xx.x.x.ssssxx.xxssssxxsssxsxxx.xxxx. [ 89%]
.xx.xxxxxx.x.xx.xsxssxsxssxxxxxx.xxx.xxx.xxx.xx.xxxxxxxxsxssss.xxxx.xxx. [ 89%]
xxxssssssxsssssssssssssssssss.ssssssssssssssssssxssssssss.xsssss.sssssss [ 89%]
sssssxssxsssssxsssss.sssssss.xssss.sxssssxxssssssssssssxsssssxssssssssxx [ 90%]
sssss.sxxxssxssssxssssssssssssxsxssssssssssssssxssssssxssss.x.xx.xx.xxxx [ 90%]
ssxsxx.xx.xx..x..xxxsssssssss.sxssssssss.ssssss..x.xssxssxxx.xxxxxxxxsss [ 90%]
sx.xxx.xxx.xxxxxxxssxssssssxsssxs.xssssxxxxxx.xxx.ssssxsxxsssssssssssssx [ 90%]
ssxssssssssssssxxssssxss.ssssssssssssssssssxsxsssssssssssssssssss.xsssss [ 90%]
s.xsssssssxs.sssssssssssssssssxsssssxsssssxsxs.sxsssssssssssss.sssssssss [ 90%]
ssssssssssssxssssssssssssssssssssxsssssssssssssssssssxssssssssssss.ssxxs [ 90%]
s.xxssssssssssssssssssssssssssssssssssxsssssxsssxssssssssssssssssxxsssss [ 91%]
xsxsssxxssssxsssxssssssxssssssssssssssssssssssssssss.sxssxsssss.ssssssxs [ 91%]
ssxsxsxssxsssssxsssxssssssssssssssssssssssssssssxsssssxssssssssxsssxsxss [ 91%]
ssssxssssssssssssssssssssssxxssssssssssssssxssssssssssssssssssss.sssssss [ 91%]
ssssssssssssssssssxssssssssssssxsssssssssssssssssssssssssxssssssssssssss [ 91%]
ssssssssssxssssssssssssssssssxs.ssssss.sssssxsssssssxsssssssssssssssssss [ 91%]
sss.xsssssssss.sssssxsssssssssssssssssssssssssssssssssssssssxsssss.sssss [ 91%]
sssssssssssssssssxsss.s.ssssssssssssxssssxssssssssssssssssssssssssssssss [ 92%]
sssssssssssssssssxsssssssssssssssssssssssssssssssssssssssssxssssssssssss [ 92%]
.s.xsss.ssssssssssssssssssssxsssxssssssssssss.xssssxxsssxssxxx.x.xxx..xx [ 92%]
ssssx..xx..x.xx.x.x.xxxxx.xxssssxs.xxx.xxsssssssss..xssssx..x.xxx.xx..x. [ 92%]
x...xssssxxss.s.sxxx.xssxsssx..sss.ss...xssssxssssssss.sxssssssssssssx.. [ 92%]
.xxssss..x....x..xxx..x...xsxsssxxs.ssxs.x...x.xx....x.x...xxxxxxxsssss.s [ 92%]
sssssssss.ssxxxxssssxxssssx.x...xxx...xxxsssssss.sx.x.x...xx..x..x.xx.... [ 92%]
xssxssx...x.xssss..xxx.x.x.xxxxxxxx..xsssxs.xxxx..xx..x.x.x.x.xx...x..x. [ 93%]
..x..xxxssxssssssxxsssx.....x.xssssx.xxx..xx..x......xs.sssx.xxxsxsss.xx [ 93%]
xxx..xxxxx..xx.xsssssssxxx.sssxsss.sss.ssxsssssss.ss..xsxsss.x.xx.xxsssx [ 93%]
ssssssssx..x..x..x..x..x.......x.xxss.ss.x.x....x..x.x..x.x.x.xx...x.x.. [ 93%]
xx.x..x.x..x.....x...xxsx.s.ss...xxssss.x...xx.........xxx..xx.xxxxx.xxx [ 93%]
...xxx..xsx.xss....x..x.x..xxxx....xsssxsssssxx.....xssssss.s.x.....x... [ 93%]
..xxx.ssssssssssssss.sssssss...xxxx.......xssss....xxssssx.xss.ss.xss.ss [ 94%]
x.xssss.......x.sxss.s....x.x..xx....x.........xs.ssssss.ssssssssss.sx.. [ 94%]
.x.......x.......x.....xx.xssssxx...x.x....x........xx......xx..x.x..... [ 94%]
.x.x..xx....x......x.........xssssxssxssssssxss.s.s................x.x.. [ 94%]
x..x.......xx.......x.....x.x.........xx....xsss.s...x........x...xssss. [ 94%]
.x.......x.ssss............x..........x..xx.........x...x...xssxs.s...x.. [ 94%]
...xss.ss.x.....x...........x.x......x...x...x........xx.....x.........x [ 94%]
x....xsss.s...x...x..........x.....x....x...................x...x.x...... [ 95%]
...x........x.xxssssx..x..x...x.x.........x...x.x....x...xxssx..xx....x. [ 95%]
.x.x.xs......x...............x..xssss.....x....x........xx.ss.......x... [ 95%]
.xssss...xx.....xx...x...sss..sss.sss.s.ssssss.sssss..sxss.sssx..x...... [ 95%]
..xx......xss.ss......x..............x.x.......x..........xs..x.ssss.... [ 95%]
.............x..x.xx.................x.................x............x... [ 95%]
......x.............x.x.......xx...x....xx.......xsxsssxx..xsssssssss.s. [ 95%]
s.ssssssxss.xssssss.sssxs.sss.s..sxss..sssssssss.s.s.sss.ss.sssssssssss. [ 96%]
ssssss.x...............x................................................ [ 96%]
.............................x...............x..........x.........x..... [ 96%]
.........x............x.........x.sss.s..............x.................. [ 96%]
............................................................x........... [ 96%]
..............................x...........x................x............. [ 96%]
...........x..........x.........................xs..ss..s............... [ 96%]
x....................................................................... [ 97%]
........................................................................ [ 97%]
........................................................................ [ 97%]
.................x.ssss................................................. [ 97%]
........................................................................ [ 97%]
........................................................................ [ 97%]
.....................x.........................x....ssss......sss....... [ 97%]
....x....ss.............s....s.s.......x..........ssssssssssssssssssssss [ 98%]
sssssssssssssssss.....s..sss..........ss.............x...............xss [ 98%]
ss.ssssssssssssssssssssssssss.sssssssssssss.ssssssssssssssssssssssssssss [ 98%]
sssssssssssssssssssssss......x...x..s...s.....s.........x.....s......... [ 98%]
................s.............................x.......s.s.........s.x... [ 98%]
s..........s....s.....ss....s.....s.ss..s.x..ss.ss.s.ssss....s.s...s.... [ 98%]
.s......s......s......ss.......s.s..ss....ss...........sss......ss.ss..s [ 98%]
...........sss.ss..s.s...ss.......s..s..x..s..sssss.ss.s.s...s.......... [ 99%]
s.....s........x.s..................ss.ss.s....s....s......s...........s [ 99%]
................x............................................s.......... [ 99%]
................x.....x...s....................s.x....x....x............ [ 99%]
..xx.......................sssssssssssssssssssssssssssssssssssssssssssss [ 99%]
sssssssssssssssssss.xx.xx.xxssssssssssssssssssssssssssss..xxxxxxssss..xx [ 99%]
xxxxssssssssssssssssssssssssssss..xxxxxxssss..xxxxxxssssssssssssssssssss [ 99%]
ssssssss.                                                                [100%]error: object directory /localdisk/tc_agent/system/git/git-CE4319E5.git/objects does not exist; check .git/objects/info/alternates
fatal: bad object HEAD

=================================== FAILURES ===================================
______________________ test_loc_iter_assignment[0-False] _______________________
[gw23] linux -- Python 3.8.13 /home/ray/anaconda3/envs/modin/bin/python
Traceback (most recent call last):
  File "/modin/modin/pandas/test/dataframe/test_indexing.py", line 516, in test_loc_iter_assignment
    md_df.loc[select] = md_df.loc[select] + md_df.loc[select]
  File "/modin/modin/pandas/indexing.py", line 719, in __setitem__
    super(_LocIndexer, self).__setitem__(
  File "/modin/modin/pandas/indexing.py", line 389, in __setitem__
    item = self._broadcast_item(row_lookup, col_lookup, item, to_shape)
  File "/modin/modin/pandas/indexing.py", line 445, in _broadcast_item
    item = np.array(item)
  File "/modin/modin/pandas/base.py", line 3485, in __array__
    arr = self.to_numpy(dtype)
  File "/modin/modin/pandas/base.py", line 3174, in to_numpy
    return self._query_compiler.to_numpy(
  File "/modin/modin/core/storage_formats/pandas/query_compiler.py", line 354, in to_numpy
    ErrorMessage.catch_bugs_and_request_email(
  File "/modin/modin/error_message.py", line 60, in catch_bugs_and_request_email
    raise Exception(
Exception: Internal Error. Please email [email protected] with the traceback and command that caused this error.

______________________ test_loc_iter_assignment[1-False] _______________________
[gw21] linux -- Python 3.8.13 /home/ray/anaconda3/envs/modin/bin/python
Traceback (most recent call last):
  File "/modin/modin/pandas/test/dataframe/test_indexing.py", line 516, in test_loc_iter_assignment
    md_df.loc[select] = md_df.loc[select] + md_df.loc[select]
  File "/modin/modin/pandas/indexing.py", line 719, in __setitem__
    super(_LocIndexer, self).__setitem__(
  File "/modin/modin/pandas/indexing.py", line 389, in __setitem__
    item = self._broadcast_item(row_lookup, col_lookup, item, to_shape)
  File "/modin/modin/pandas/indexing.py", line 445, in _broadcast_item
    item = np.array(item)
  File "/modin/modin/pandas/base.py", line 3485, in __array__
    arr = self.to_numpy(dtype)
  File "/modin/modin/pandas/base.py", line 3174, in to_numpy
    return self._query_compiler.to_numpy(
  File "/modin/modin/core/storage_formats/pandas/query_compiler.py", line 354, in to_numpy
    ErrorMessage.catch_bugs_and_request_email(
  File "/modin/modin/error_message.py", line 60, in catch_bugs_and_request_email
    raise Exception(
Exception: Internal Error. Please email [email protected] with the traceback and command that caused this error.


---------- coverage: platform linux, python 3.8.13-final-0 -----------
Coverage XML written to file coverage.xml

=========================== short test summary info ============================
FAILED modin/pandas/test/dataframe/test_indexing.py::test_loc_iter_assignment[0-False]
FAILED modin/pandas/test/dataframe/test_indexing.py::test_loc_iter_assignment[1-False]
= 2 failed, 8829 passed, 37801 skipped, 2917 xfailed, 25409 warnings in 410.20s (0:06:50) =
PytestBenchmarkWarning: Benchmarks are automatically disabled because xdist plugin is active.Benchmarks cannot be performed reliably in a parallelized environment.


<b>Remaining output truncated<b>


@anmyachev
Copy link
Collaborator

@prutskov any updates here?

@prutskov
Copy link
Contributor Author

@prutskov any updates here?

This PR is in a draft state, work is on hold.

@prutskov prutskov force-pushed the prutskov/issue4182 branch from cdfc466 to 1727cc1 Compare June 1, 2022 11:08
@prutskov
Copy link
Contributor Author

prutskov commented Jun 3, 2022

Cell-wise execution requires an align partitioning by rows and cols at the same time that's expensive and sometimes isn't possible (in the case when left and right operands have significantly different shapes). Possible, that's reason why this is implemented as row-wise processing (#3100 (comment), @dchigarev).

After additional investigation it was found, that Ray uses the same workers for execution for several axis-partitions. In this case at least one of the remote tasks waits until worker finished previous tasks. This can be observed for any Modin/Ray setup. Example:

import time

import ray

ray.init(num_cpus=16) # We have 16 workers to distribute execution of remote tasks
import numpy as np
# import pandas as pd
import modin.pandas as pd
import modin.config as cfg
from modin.logging import get_logger

cfg.NPartitions.put(2) # We have 2 axis partitions, which should be processed in different workers to be parallel processed
cfg.BenchmarkMode.put(True)
cfg.LogMode.enable()

logger = get_logger()

def generate_data(nrows=5000, ncols=100):
    data = {f"col{i}":  np.random.rand(nrows) for i in range(ncols)}
    return pd.DataFrame(data), pd.DataFrame(data)


if __name__ == "__main__":
    print("Generating data...")
    df1, df2 = generate_data(nrows=2_000_000, ncols=50)

    print(f"Original shape: {df1.shape}")

    t = time.time()
    logger.info("Start")
    result = df1 + df2             ---------> # Internally we have 2 row-partitions, which are processed in the same worker (print `pid` from remote function call to see).
    logger.info("End")
    print(f'Time binary op: {time.time() - t} s')

In case of correct scheduling the time of axis-partitions processing could be reduced at least to 2 times.

Does anyone faced with this scheduling problems?

CC @modin-project/modin-core, @modin-project/modin-contributors

@mvashishtha
Copy link
Collaborator

@prutskov I am taking a look at this and have made some progress! I'll hopefully have an update within a few hours.

@mvashishtha
Copy link
Collaborator

@prutskov I can reproduce that serial execution on my mac. I added a print statement to the remote function here and saw a single task executing both remote functions. However, on an Ubuntu EC2 instance (specs below) with more RAM, I got parallel execution. I also get parallel execution on my mac when I decrease nrows to 10_000. I tracked the serial execution down to what looks like a ray bug: ray-project/ray#25448

What are the specs of the machine you're testing on?

My mac:

macOS Monterey 12.2.1
MacBook Pro (16-inch, 2019) with 2.3 GHz 8-Core Intel Core i9
Memory: 16 GB 2667 MHz DDR4
Ray: 1.12.1
Python: 3.9.12

The Ubuntu EC2 instance:

AMI name: ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20211129
instance type: t2.2xlarge
Ubuntu 20.04.3 LTS
8 physical CPUs
Memory: 32 GiB
Ray: 1.12.0
Python: 3.9.7

@prutskov
Copy link
Contributor Author

prutskov commented Jun 3, 2022

@prutskov I can reproduce that serial execution on my mac. I added a print statement to the remote function here and saw a single task executing both remote functions. However, on an Ubuntu EC2 instance (specs below) with more RAM, I got parallel execution. I also get parallel execution on my mac when I decrease nrows to 10_000. I tracked the serial execution down to what looks like a ray bug: ray-project/ray#25448

What are the specs of the machine you're testing on?

My mac:

macOS Monterey 12.2.1 MacBook Pro (16-inch, 2019) with 2.3 GHz 8-Core Intel Core i9 Memory: 16 GB 2667 MHz DDR4 Ray: 1.12.1 Python: 3.9.12

The Ubuntu EC2 instance:

AMI name: ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20211129 instance type: t2.2xlarge Ubuntu 20.04.3 LTS 8 physical CPUs Memory: 32 GiB Ray: 1.12.0 Python: 3.9.7

Thank you @mvashishtha! Really, reducing of data size makes execution parallel. Thank you a lot for investigating! I will continue investigating with taking this in mind

My laptop:

OS: Linux WSL2 5.10.16.3-microsoft-standard-WSL2
CPU: AMD Ryzen 7 5800HS 3.2 GHz 8 cores (16 threads)
RAM: 16 GB DDR4 3200 MHz
Ray: 1.12.1
Python: 3.8.13

@mvashishtha
Copy link
Collaborator

I think we have a good explanation of the ray serial execution here: ray-project/ray#25448 (comment)

@alexey Prutskov i think you saw the serial execution in your script here because the default ray object store from ray.init() is smaller than the size modin should be using. on my mac, ray artificially limits object store size even lower to 2 GB so there was no way it could handle all of the data. You can confirm by looking for statements like Dispatching task 9d172512a06e513526abaf75f5a71b612dd74bb601000000 would put this node over the max memory allowed for arguments of executing tasks (1503238528). Waiting to dispatch task until other tasks complete in /tmp/ray/session_latest/logs/ if you run your script with RAY_BACKEND_LOG_LEVEL=debug.

In practice, do we expect the total active arguments to hit the limit of 70% of plasma store? If so, we should look into how we can get away with using less plasma.

@prutskov
Copy link
Contributor Author

@mvashishtha, thank you for finding of explanation of such behavior case!

In practice, do we expect the total active arguments to hit the limit of 70% of plasma store? If so, we should look into how we can get away with using less plasma.

It's difficult question. I guess we can to hit the limit of 70% of plasma store for both cell/axis-wise executions type in case we have "large" ray.ObjectRef(s) per one remote call, and also we should have several remote calls. It will be more visibly for operations with several Modin DataFrames (binary ops, concat, merge etc). In this case we will have a number of ray.ObjectRef with partition data per one remote call.

For axis-wise operations, waiting/execution of remaining operations will take more time that for the same cell-wise (all depends from size of one remote task, which is bigger for axis-wise opertions).

For now I have no ideas how we can reduce the usage of plasma except increasing the size of plasma store during ray initialization.

For binary operations cell-wise execution will be used, because in that case we have a smaller impact of possible serial execution in case we reach the limit of 70% of plasma store.

@mvashishtha
Copy link
Collaborator

mvashishtha commented Jun 10, 2022

For binary operations cell-wise execution will be used, because in that case we have a smaller impact of possible serial execution in case we reach the limit of 70% of plasma store.

As I understand the 70% limit, making binary operations cell-wise could help, but in a subtle way. The limit seems to be on the total size of arguments to all executing tasks. Right now for your serial script above we have 2 remote functions that each take 4 block partitions (a full column partition for each 2x2 partitioned frame). The total size of the arguments when we kick off the remote tasks are 4 block partitions. If instead we had 4 remote functions that each took 1 pair of blocks, we'd have 4 tasks but the total size of all arguments would be the same. However, when each task's argument size is smaller, ray can pack more tasks in at once. For example, say your object store size is 10 GB and your total argument cap is 7 GB, and each of the 8 blocks is 1 GB. In the axis-partition case, we can only schedule one task at once, because each task requires 4 GB (4 partitions) and both tasks would be 8 GB, over the limit. In the block-partition case, we can schedule 3/4 of the tasks at once since each requires 2 GB, and 3 tasks require 6 GB, which is under the limit. The smaller tasks can be "packed" tighter and closer to the limit, with 3x parallelism for most of the execution instead of no parallelism.

edit: but again, I don't know whether this argument limit is something we hit in practice with the size of object store that modin sets by default. If not, we shouldn't take the limit into consideration in our design.

edit: made some math errors :)

edit: Also, in practice for us, the object store for us probably has many things besides arguments. how does that affect this problem 🤔 ? Does that mean we are even tighter on space for arguments?

@prutskov prutskov force-pushed the prutskov/issue4182 branch from 0090468 to 14d993a Compare June 10, 2022 15:08
@prutskov
Copy link
Contributor Author

For binary operations cell-wise execution will be used, because in that case we have a smaller impact of possible serial execution in case we reach the limit of 70% of plasma store.

As I understand the 70% limit, making binary operations cell-wise could help, but in a subtle way. The limit seems to be on the total size of arguments to all executing tasks. Right now for your serial script above we have 2 remote functions that each take 4 block partitions (a full column partition for each 2x2 partitioned frame). The total size of the arguments when we kick off the remote tasks are 4 block partitions. If instead we had 4 remote functions that each took 1 pair of blocks, we'd have 4 tasks but the total size of all arguments would be the same. However, when each task's argument size is smaller, ray can pack more tasks in at once. For example, say your object store size is 10 GB and your total argument cap is 7 GB, and each of the 8 blocks is 1 GB. In the axis-partition case, we can only schedule one task at once, because each task requires 4 GB (4 partitions) and both tasks would be 8 GB, over the limit. In the block-partition case, we can schedule 3/4 of the tasks at once since each requires 2 GB, and 3 tasks require 6 GB, which is under the limit. The smaller tasks can be "packed" tighter and closer to the limit, with 3x parallelism for most of the execution instead of no parallelism.

I thought about the same example:)

edit: but again, I don't know whether this argument limit is something we hit in practice with the size of object store that modin sets by default. If not, we shouldn't take the limit into consideration in our design.

I don't think that we should take the limit into consideration for our implementations. The warning message from ray about serial execution (which is mentioned in ray-project/ray#25448 (comment) ) will be enough.

edit: made some math errors :)

edit: Also, in practice for us, the object store for us probably has many things besides arguments. how does that affect this problem 🤔 ? Does that mean we are even tighter on space for arguments?

I think many other objects in object storage can exacerbate the problem because in this case we will have less space for active arguments and sequential execution will happen more often.

@prutskov
Copy link
Contributor Author

prutskov commented Jun 13, 2022

Performance results were attached in PR description.

Blocked by #4563

@prutskov prutskov force-pushed the prutskov/issue4182 branch from 14d993a to 98b7f2d Compare June 13, 2022 15:56
@prutskov prutskov changed the title FIX-#4182: Add cell-wise execution for binary operations PERF-#4182: Add cell-wise execution for binary operations Jun 13, 2022
@prutskov prutskov marked this pull request as ready for review June 13, 2022 15:57
@prutskov prutskov requested a review from a team as a code owner June 13, 2022 15:57
@prutskov prutskov force-pushed the prutskov/issue4182 branch from 98b7f2d to 04a7ef5 Compare June 14, 2022 08:38
Copy link
Collaborator

@mvashishtha mvashishtha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The performance looks great!

@YarShev
Copy link
Collaborator

YarShev commented Jun 14, 2022

I am not sure the performance looks great and comprehensive. We should check all/most corner cases such as applying a function to df and s, s and df, for example, as well as at least 2 or 3 general scenarios.

right_partitions = cls.column_partitions(right)
func = cls.preprocess_func(func)
result = np.array(
[part.drain_call_queue() for part in right.flatten()]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the case when we can pass the right partitions and the respective call queues in the remote calls.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can but I don't see any benefit from applying of the respective call queue of right partition in the remote call here. This will be useful in case we have lazy execution (but even that is questionable, described below), but here we use partition.apply which runs an execution of remote calls right now.

In this row we run an early execution of the call queue in background for each right_partition and immediately actualize right_partition._data. After, during serial logic of left_partition.apply call for each partition we will have already finished remote calls from the call queue of the each right_partition with some probability.

If we will use your way we can than draining of call queue for right_partition will happen only after draining of call queue for left_partition in remote call.

Also, by providing the call queue of right partition together with right_partition._data in left_partition.apply we don't drain right_partition.call_queue and don't actualize the right_partition._data. If we will work with the right dataframe further in the code we will again run drain_call_queue for each partition of right dataframe. In the result we have double work of the same calls but in different places.

What benefits do you see from your suggestion? How we will resolve the issue which I described in this case?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are by far valid points but on the other hand there are others that can affect the performance. For instance, it we are considering Ray, the following factors but probably not limited to can affect the performance: 1. how many partitions are contained in the right array. 2. how many physical (materialized) data of the right partitions will be saved into in-process memory of the driver. 3. how many physical (materialized) data of the right partitions will be saved into the plasma.

We can experiment this case as part of a separate issue if we see good times without passing the call queues of the right partitions in to the remote calls.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still believe that the main issue with implementation you suggest will in duplicating of processing operations for right partition(the first one is draining of call queue in remote call from the left partition, the second one in right partition directly in other part of code).

I mean the next flow in the sentences above:

df1 = pd.DataFrame(...) 
df2 = pd.DataFrame(...).T # Add tranpose operation in call queue of parts in df2

result = df1 + df2    # Perform cell-wise execution. Each remote call for left partition also runs transpose operation for right part. The parts of df2 isn't updated.
print(df2) # Drain call queue for parts of df2 (transpose operation)

So, I suggest to experiment with this new execution flow in a separate issue, because it, possible, requires a lot of architectural changes.

@prutskov
Copy link
Contributor Author

@dchigarev, thanks for pointing this out! I didn't notice that Binary operator and the broadcast logic are untouched. Still, I suggest checking the performance for fillna and where, which call the binary_op at the QC layer, as well as for series_update and one of the binary operations. We have the numbers for the latter (mul as I see) in the PR description.

The performance results were added for fillna too. Testing of other you proposed functions is in progress.

@prutskov prutskov requested a review from mvashishtha June 15, 2022 17:08
mvashishtha
mvashishtha previously approved these changes Jun 15, 2022
@prutskov prutskov force-pushed the prutskov/issue4182 branch from 9e90c5e to 859b079 Compare June 16, 2022 08:34
@prutskov prutskov changed the title PERF-#4182: Add cell-wise execution for binary operations PERF-#4182, FIX-#4059: Add cell-wise execution for binary ops, fix bin ops for empty dataframes Jun 16, 2022
@prutskov prutskov linked an issue Jun 16, 2022 that may be closed by this pull request
@prutskov
Copy link
Contributor Author

The actual benchmark results for all affected funcionality(binary ops, fillna, where, update) were added in the PR description. In the most cases performance was increased or not changed for some cases of usage.

@prutskov
Copy link
Contributor Author

@YarShev

We should check all/most corner cases such as applying a function to df and s, s and df

The PR only modifies the modin_frame.binary_op behavior. The thing is that the binary_op is designed for df + df operations only. The handling of mixin a frame and a series has to be done differently via broadcasting a series to every column of the frame instead of attempting to align the shapes of two operands. We already have the broadcasting logic inside the Binary operator, the flow goes to the modin_frame.broadcast_apply which wasn't touched in this PR.

We would potentially try the same cell-wise execution approach on the Series+DF operations, but it seems like a different task.

I agree that the case Series+DF/DF+Series should be implemented in a separate PR (as resolution of #4578, probably). This type of operations formes the result in a different from DF+DF form. It will require an additional changes.

Copy link
Collaborator

@YarShev YarShev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@prutskov, thanks for the changes and measurements, LGTM!

@YarShev YarShev merged commit 8f35ab5 into modin-project:master Jun 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants