Compare commits
27 Commits
erase-betw
...
0a9ac59676
Author | SHA1 | Date | |
---|---|---|---|
0a9ac59676 | |||
e3a77ed773 | |||
cdf9a8a7b0 | |||
305dfdd52f | |||
7261c91492 | |||
f11720f5ae | |||
e2b7298af5 | |||
8e1e344f4b | |||
3634b6a59b | |||
a3cc14c807 | |||
55b3275434 | |||
3a5b86ed9e | |||
159f2eef74 | |||
2952abe811 | |||
ce54746a4a | |||
b15959d62c | |||
b009de1c2b | |||
55a230c75e | |||
0711ec3831 | |||
0280bd77e5 | |||
359f6f0042 | |||
aa8504ddba | |||
fb7cf18f9b | |||
b808b97940 | |||
e480f66846 | |||
d5bc9221a0 | |||
9d23b81d6f |
760
ConflictSet.cpp
760
ConflictSet.cpp
File diff suppressed because it is too large
Load Diff
13
Internal.h
13
Internal.h
@@ -273,6 +273,16 @@ template <class T> struct Vector {
|
||||
size_ += slice.size();
|
||||
}
|
||||
|
||||
// Caller must write to the returned slice
|
||||
std::span<T> unsafePrepareAppend(int appendSize) {
|
||||
if (size_ + appendSize > capacity) {
|
||||
grow(std::max<int>(size_ + appendSize, capacity * 2));
|
||||
}
|
||||
auto result = std::span<T>(t + size_, appendSize);
|
||||
size_ += appendSize;
|
||||
return result;
|
||||
}
|
||||
|
||||
void push_back(const T &t) { append(std::span<const T>(&t, 1)); }
|
||||
|
||||
T *begin() { return t; }
|
||||
@@ -738,7 +748,10 @@ struct TestDriver {
|
||||
fprintf(stderr, "%p Set oldest version: %" PRId64 "\n", this,
|
||||
oldestVersion);
|
||||
#endif
|
||||
CALLGRIND_START_INSTRUMENTATION;
|
||||
cs.setOldestVersion(oldestVersion);
|
||||
CALLGRIND_STOP_INSTRUMENTATION;
|
||||
|
||||
if constexpr (kEnableAssertions) {
|
||||
refImpl.setOldestVersion(oldestVersion);
|
||||
}
|
||||
|
21
README.md
21
README.md
@@ -24,16 +24,15 @@ Hardware for all benchmarks is an AMD Ryzen 9 7900 with (2x32GB) 5600MT/s CL28-3
|
||||
|
||||
| ns/op | op/s | err% | ins/op | cyc/op | IPC | bra/op | miss% | total | benchmark
|
||||
|--------------------:|--------------------:|--------:|----------------:|----------------:|-------:|---------------:|--------:|----------:|:----------
|
||||
| 10.80 | 92,600,541.52 | 0.6% | 180.38 | 54.49 | 3.310 | 41.51 | 0.4% | 0.01 | `point reads`
|
||||
| 15.00 | 66,687,691.68 | 0.4% | 278.44 | 76.44 | 3.642 | 55.56 | 0.3% | 0.01 | `prefix reads`
|
||||
| 36.81 | 27,163,394.61 | 0.4% | 795.06 | 187.91 | 4.231 | 142.67 | 0.2% | 0.01 | `range reads`
|
||||
| 18.14 | 55,137,674.01 | 1.2% | 338.19 | 92.86 | 3.642 | 42.81 | 0.4% | 0.01 | `point writes`
|
||||
| 33.19 | 30,127,119.71 | 0.1% | 681.03 | 170.05 | 4.005 | 98.68 | 0.2% | 0.01 | `prefix writes`
|
||||
| 37.37 | 26,759,432.70 | 1.9% | 779.70 | 195.45 | 3.989 | 114.21 | 0.0% | 0.01 | `range writes`
|
||||
| 74.36 | 13,448,582.47 | 1.9% | 1,425.68 | 389.08 | 3.664 | 258.88 | 0.1% | 0.01 | `monotonic increasing point writes`
|
||||
| 316,928.00 | 3,155.29 | 1.5% | 3,992,986.00 | 1,699,813.00 | 2.349 | 806,226.50 | 0.0% | 0.01 | `worst case for radix tree`
|
||||
| 75.26 | 13,286,517.16 | 0.5% | 1,590.01 | 386.67 | 4.112 | 258.00 | 0.0% | 0.01 | `create and destroy`
|
||||
|
||||
| 11.04 | 90,614,308.12 | 0.8% | 180.38 | 55.13 | 3.272 | 41.51 | 0.4% | 0.01 | `point reads`
|
||||
| 14.96 | 66,843,629.12 | 0.4% | 274.41 | 74.73 | 3.672 | 55.05 | 0.3% | 0.01 | `prefix reads`
|
||||
| 37.06 | 26,982,847.61 | 0.2% | 791.04 | 185.28 | 4.269 | 142.67 | 0.2% | 0.01 | `range reads`
|
||||
| 17.89 | 55,887,365.73 | 0.6% | 335.54 | 89.79 | 3.737 | 43.84 | 0.4% | 0.01 | `point writes`
|
||||
| 31.85 | 31,394,336.65 | 0.3% | 615.32 | 159.63 | 3.855 | 87.69 | 0.2% | 0.01 | `prefix writes`
|
||||
| 36.17 | 27,647,221.45 | 0.6% | 705.11 | 182.80 | 3.857 | 100.62 | 0.1% | 0.01 | `range writes`
|
||||
| 79.01 | 12,656,457.78 | 0.7% | 1,498.35 | 402.46 | 3.723 | 270.50 | 0.1% | 0.01 | `monotonic increasing point writes`
|
||||
| 303,667.50 | 3,293.08 | 1.1% | 3,931,273.00 | 1,612,702.50 | 2.438 | 806,223.33 | 0.0% | 0.01 | `worst case for radix tree`
|
||||
| 83.70 | 11,947,443.83 | 0.7% | 1,738.03 | 429.06 | 4.051 | 270.01 | 0.0% | 0.01 | `create and destroy`
|
||||
|
||||
# "Real data" test
|
||||
|
||||
@@ -48,7 +47,7 @@ Check: 4.47891 seconds, 364.05 MB/s, Add: 4.55599 seconds, 123.058 MB/s, Gc rati
|
||||
## radix tree
|
||||
|
||||
```
|
||||
Check: 0.910234 seconds, 1791.35 MB/s, Add: 1.25908 seconds, 445.287 MB/s, Gc ratio: 44.0415%
|
||||
Check: 0.958985 seconds, 1700.28 MB/s, Add: 1.35083 seconds, 415.044 MB/s, Gc ratio: 44.4768%, Peak idle memory: 2.33588e+06
|
||||
```
|
||||
|
||||
## hash table
|
||||
|
144
ServerBench.cpp
144
ServerBench.cpp
@@ -6,11 +6,15 @@
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/uio.h>
|
||||
#include <thread>
|
||||
#include <unistd.h>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "ConflictSet.h"
|
||||
#include "third_party/nadeau.h"
|
||||
@@ -20,8 +24,8 @@ std::atomic<int64_t> transactions;
|
||||
constexpr int kBaseSearchDepth = 32;
|
||||
constexpr int kWindowSize = 10000000;
|
||||
|
||||
std::basic_string<uint8_t> numToKey(int64_t num) {
|
||||
std::basic_string<uint8_t> result;
|
||||
std::string numToKey(int64_t num) {
|
||||
std::string result;
|
||||
result.resize(kBaseSearchDepth + sizeof(int64_t));
|
||||
memset(result.data(), 0, kBaseSearchDepth);
|
||||
int64_t be = __builtin_bswap64(num);
|
||||
@@ -41,13 +45,13 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
auto pointK = numToKey(pointRv);
|
||||
weaselab::ConflictSet::ReadRange reads[] = {
|
||||
{
|
||||
{pointK.data(), int(pointK.size())},
|
||||
{(const uint8_t *)pointK.data(), int(pointK.size())},
|
||||
{nullptr, 0},
|
||||
pointRv,
|
||||
},
|
||||
{
|
||||
{beginK.data(), int(beginK.size())},
|
||||
{endK.data(), int(endK.size())},
|
||||
{(const uint8_t *)beginK.data(), int(beginK.size())},
|
||||
{(const uint8_t *)endK.data(), int(endK.size())},
|
||||
version - 2,
|
||||
},
|
||||
};
|
||||
@@ -66,7 +70,7 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
{
|
||||
weaselab::ConflictSet::WriteRange w;
|
||||
auto k = numToKey(version);
|
||||
w.begin.p = k.data();
|
||||
w.begin.p = (const uint8_t *)k.data();
|
||||
w.end.len = 0;
|
||||
if (version % (kWindowSize / 2) == 0) {
|
||||
for (int l = 0; l <= k.size(); ++l) {
|
||||
@@ -79,9 +83,9 @@ void workload(weaselab::ConflictSet *cs) {
|
||||
int64_t beginN = version - kWindowSize + rand() % kWindowSize;
|
||||
auto b = numToKey(beginN);
|
||||
auto e = numToKey(beginN + 1000);
|
||||
w.begin.p = b.data();
|
||||
w.begin.p = (const uint8_t *)b.data();
|
||||
w.begin.len = b.size();
|
||||
w.end.p = e.data();
|
||||
w.end.p = (const uint8_t *)e.data();
|
||||
w.end.len = e.size();
|
||||
cs->addWrites(&w, 1, version);
|
||||
}
|
||||
@@ -164,6 +168,68 @@ double toSeconds(timeval t) {
|
||||
return double(t.tv_sec) + double(t.tv_usec) * 1e-6;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
#include <linux/perf_event.h>
|
||||
struct PerfCounter {
|
||||
PerfCounter(int type, int config, const std::string &labels = {},
|
||||
int groupLeaderFd = -1)
|
||||
: labels(labels) {
|
||||
struct perf_event_attr pe;
|
||||
|
||||
memset(&pe, 0, sizeof(pe));
|
||||
pe.type = type;
|
||||
pe.size = sizeof(pe);
|
||||
pe.config = config;
|
||||
pe.inherit = 1;
|
||||
pe.exclude_kernel = 1;
|
||||
pe.exclude_hv = 1;
|
||||
|
||||
fd = perf_event_open(&pe, 0, -1, groupLeaderFd, 0);
|
||||
if (fd < 0 && errno != ENOENT && errno != EINVAL) {
|
||||
perror(labels.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
int64_t total() const {
|
||||
int64_t count;
|
||||
if (read(fd, &count, sizeof(count)) != sizeof(count)) {
|
||||
perror("read instructions from perf");
|
||||
abort();
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
PerfCounter(PerfCounter &&other)
|
||||
: fd(std::exchange(other.fd, -1)), labels(std::move(other.labels)) {}
|
||||
PerfCounter &operator=(PerfCounter &&other) {
|
||||
fd = std::exchange(other.fd, -1);
|
||||
labels = std::move(other.labels);
|
||||
return *this;
|
||||
}
|
||||
|
||||
~PerfCounter() {
|
||||
if (fd >= 0) {
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
bool ok() const { return fd >= 0; }
|
||||
const std::string &getLabels() const { return labels; }
|
||||
int getFd() const { return fd; }
|
||||
|
||||
private:
|
||||
int fd;
|
||||
std::string labels;
|
||||
static long perf_event_open(struct perf_event_attr *hw_event, pid_t pid,
|
||||
int cpu, int group_fd, unsigned long flags) {
|
||||
int ret;
|
||||
|
||||
ret = syscall(SYS_perf_event_open, hw_event, pid, cpu, group_fd, flags);
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc != 3) {
|
||||
goto fail;
|
||||
@@ -176,6 +242,50 @@ int main(int argc, char **argv) {
|
||||
int metricsCount;
|
||||
cs.getMetricsV1(&metrics, &metricsCount);
|
||||
|
||||
#ifdef __linux__
|
||||
PerfCounter instructions{PERF_TYPE_HARDWARE, PERF_COUNT_HW_INSTRUCTIONS};
|
||||
PerfCounter cycles{PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, "",
|
||||
instructions.getFd()};
|
||||
|
||||
std::vector<PerfCounter> cacheCounters;
|
||||
for (auto [id, idStr] : std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_L1D, "l1d"},
|
||||
{PERF_COUNT_HW_CACHE_L1I, "l1i"},
|
||||
{PERF_COUNT_HW_CACHE_LL, "ll"},
|
||||
{PERF_COUNT_HW_CACHE_DTLB, "dtlb"},
|
||||
{PERF_COUNT_HW_CACHE_ITLB, "itlb"},
|
||||
{PERF_COUNT_HW_CACHE_BPU, "bpu"},
|
||||
{PERF_COUNT_HW_CACHE_NODE, "node"},
|
||||
}) {
|
||||
for (auto [op, opStr] :
|
||||
std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_OP_READ, "read"},
|
||||
{PERF_COUNT_HW_CACHE_OP_WRITE, "write"},
|
||||
{PERF_COUNT_HW_CACHE_OP_PREFETCH, "prefetch"},
|
||||
}) {
|
||||
int groupLeaderFd = -1;
|
||||
for (auto [result, resultStr] :
|
||||
std::initializer_list<std::pair<int, std::string>>{
|
||||
{PERF_COUNT_HW_CACHE_RESULT_MISS, "miss"},
|
||||
{PERF_COUNT_HW_CACHE_RESULT_ACCESS, "access"},
|
||||
}) {
|
||||
auto labels = "{id=\"" + idStr + "\", op=\"" + opStr +
|
||||
"\", result=\"" + resultStr + "\"}";
|
||||
cacheCounters.emplace_back(PERF_TYPE_HW_CACHE,
|
||||
id | (op << 8) | (result << 16), labels,
|
||||
groupLeaderFd);
|
||||
if (!cacheCounters.back().ok()) {
|
||||
cacheCounters.pop_back();
|
||||
} else {
|
||||
if (groupLeaderFd == -1) {
|
||||
groupLeaderFd = cacheCounters.back().getFd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
auto w = std::thread{workload, &cs};
|
||||
|
||||
for (;;) {
|
||||
@@ -203,6 +313,24 @@ int main(int argc, char **argv) {
|
||||
"transactions_total ";
|
||||
body += std::to_string(transactions.load(std::memory_order_relaxed));
|
||||
body += "\n";
|
||||
#ifdef __linux__
|
||||
body += "# HELP instructions_total Total number of instructions\n"
|
||||
"# TYPE instructions_total counter\n"
|
||||
"instructions_total ";
|
||||
body += std::to_string(instructions.total());
|
||||
body += "\n";
|
||||
body += "# HELP cycles_total Total number of cycles\n"
|
||||
"# TYPE cycles_total counter\n"
|
||||
"cycles_total ";
|
||||
body += std::to_string(cycles.total());
|
||||
body += "\n";
|
||||
body += "# HELP cache_event_total Total number of cache events\n"
|
||||
"# TYPE cache_event_total counter\n";
|
||||
for (const auto &counter : cacheCounters) {
|
||||
body += "cache_event_total" + counter.getLabels() + " " +
|
||||
std::to_string(counter.total()) + "\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < metricsCount; ++i) {
|
||||
body += "# HELP ";
|
||||
|
BIN
corpus/0164e1ae452d063faa26b90d924f52189f268011
Normal file
BIN
corpus/0164e1ae452d063faa26b90d924f52189f268011
Normal file
Binary file not shown.
BIN
corpus/0325e533cf35c1e7ac95326c9b189911deffb27e
Normal file
BIN
corpus/0325e533cf35c1e7ac95326c9b189911deffb27e
Normal file
Binary file not shown.
BIN
corpus/05a091a7d5e921098504585a4201967860d310c6
Normal file
BIN
corpus/05a091a7d5e921098504585a4201967860d310c6
Normal file
Binary file not shown.
BIN
corpus/0da7d6000805c1f25907f3a2e8499ee119673f28
Normal file
BIN
corpus/0da7d6000805c1f25907f3a2e8499ee119673f28
Normal file
Binary file not shown.
BIN
corpus/10838bd79f36f824c41afa600c86f176f213ff79
Normal file
BIN
corpus/10838bd79f36f824c41afa600c86f176f213ff79
Normal file
Binary file not shown.
BIN
corpus/158d2f871afe1bf811833d07a03415d89a868efe
Normal file
BIN
corpus/158d2f871afe1bf811833d07a03415d89a868efe
Normal file
Binary file not shown.
BIN
corpus/15f6e61dd6edef971d7c79bef0d14069b0a75c77
Normal file
BIN
corpus/15f6e61dd6edef971d7c79bef0d14069b0a75c77
Normal file
Binary file not shown.
BIN
corpus/1ab0a409dbf44496ea9d7027ba8898805f396140
Normal file
BIN
corpus/1ab0a409dbf44496ea9d7027ba8898805f396140
Normal file
Binary file not shown.
BIN
corpus/1e656ebd6c39b9fd6bea8c1bdaf12fe92642d507
Normal file
BIN
corpus/1e656ebd6c39b9fd6bea8c1bdaf12fe92642d507
Normal file
Binary file not shown.
BIN
corpus/2141828fbf5049e21a703dac83d5726fdf32aaaf
Normal file
BIN
corpus/2141828fbf5049e21a703dac83d5726fdf32aaaf
Normal file
Binary file not shown.
BIN
corpus/21540fec17d78467a6fe450592da42ca03e8e268
Normal file
BIN
corpus/21540fec17d78467a6fe450592da42ca03e8e268
Normal file
Binary file not shown.
BIN
corpus/233112524bdcd6f77d4d51c080039bf1e1358bc2
Normal file
BIN
corpus/233112524bdcd6f77d4d51c080039bf1e1358bc2
Normal file
Binary file not shown.
BIN
corpus/29ae192a6404273b14be44d0f06d354e9eb5084b
Normal file
BIN
corpus/29ae192a6404273b14be44d0f06d354e9eb5084b
Normal file
Binary file not shown.
BIN
corpus/2a32a3d39a663771bda1be99ecfbe55ff780d2b2
Normal file
BIN
corpus/2a32a3d39a663771bda1be99ecfbe55ff780d2b2
Normal file
Binary file not shown.
BIN
corpus/2e28e709dc7a313255964e2c21d3c8c9b6c3ef1d
Normal file
BIN
corpus/2e28e709dc7a313255964e2c21d3c8c9b6c3ef1d
Normal file
Binary file not shown.
BIN
corpus/31bf521be5d9f9e7d99e1384b9ffe26197324c37
Normal file
BIN
corpus/31bf521be5d9f9e7d99e1384b9ffe26197324c37
Normal file
Binary file not shown.
BIN
corpus/3276a649b804693762b06581bf459b2f2accc03e
Normal file
BIN
corpus/3276a649b804693762b06581bf459b2f2accc03e
Normal file
Binary file not shown.
BIN
corpus/34a4d2436527e903d806a63c002cea88522f3a5e
Normal file
BIN
corpus/34a4d2436527e903d806a63c002cea88522f3a5e
Normal file
Binary file not shown.
BIN
corpus/351af0b05e0c3f3c74954de9f5aa64d292d1dcab
Normal file
BIN
corpus/351af0b05e0c3f3c74954de9f5aa64d292d1dcab
Normal file
Binary file not shown.
BIN
corpus/35df5d1e51e37343461d1246ea693ea55ae46413
Normal file
BIN
corpus/35df5d1e51e37343461d1246ea693ea55ae46413
Normal file
Binary file not shown.
BIN
corpus/3a5cb027cf0d324ad95683dd26c4fee6bfa322c3
Normal file
BIN
corpus/3a5cb027cf0d324ad95683dd26c4fee6bfa322c3
Normal file
Binary file not shown.
BIN
corpus/3ba58d43a24139a702c6d5c83ce3cc9f82bac804
Normal file
BIN
corpus/3ba58d43a24139a702c6d5c83ce3cc9f82bac804
Normal file
Binary file not shown.
BIN
corpus/3c07b3837fed49692b1fe1b9c1f878d135f3ecda
Normal file
BIN
corpus/3c07b3837fed49692b1fe1b9c1f878d135f3ecda
Normal file
Binary file not shown.
BIN
corpus/3e0b0439c9bd2b077379f35731c86f15d1ad67e6
Normal file
BIN
corpus/3e0b0439c9bd2b077379f35731c86f15d1ad67e6
Normal file
Binary file not shown.
BIN
corpus/4151500a97ee02841d558a8d5a366a2a8ba679b2
Normal file
BIN
corpus/4151500a97ee02841d558a8d5a366a2a8ba679b2
Normal file
Binary file not shown.
BIN
corpus/41539eb8863f7459144f13a027c931229d744349
Normal file
BIN
corpus/41539eb8863f7459144f13a027c931229d744349
Normal file
Binary file not shown.
BIN
corpus/46e31ef9b45b3ad66b33b2ff28b6357b7c9836d2
Normal file
BIN
corpus/46e31ef9b45b3ad66b33b2ff28b6357b7c9836d2
Normal file
Binary file not shown.
BIN
corpus/494bfcf88bc305649d5296dcd44a79b55e63f199
Normal file
BIN
corpus/494bfcf88bc305649d5296dcd44a79b55e63f199
Normal file
Binary file not shown.
BIN
corpus/4a31e09cd8d98f2f1b5485a6e9448b3d0f18dd41
Normal file
BIN
corpus/4a31e09cd8d98f2f1b5485a6e9448b3d0f18dd41
Normal file
Binary file not shown.
BIN
corpus/4d8ad2784eaf3d6a3ddeb2424d5c75a95e417252
Normal file
BIN
corpus/4d8ad2784eaf3d6a3ddeb2424d5c75a95e417252
Normal file
Binary file not shown.
BIN
corpus/54807c2d37bb3e47f6042beee1b508bb022699ca
Normal file
BIN
corpus/54807c2d37bb3e47f6042beee1b508bb022699ca
Normal file
Binary file not shown.
BIN
corpus/561bd20b55c4467ba932999b8a5a7a73ebb77b09
Normal file
BIN
corpus/561bd20b55c4467ba932999b8a5a7a73ebb77b09
Normal file
Binary file not shown.
BIN
corpus/572de429bbad5360c133ee2eb609d19db2d62e9c
Normal file
BIN
corpus/572de429bbad5360c133ee2eb609d19db2d62e9c
Normal file
Binary file not shown.
BIN
corpus/5954b3b4be666cc702277edb0e50d0f2bcfef42f
Normal file
BIN
corpus/5954b3b4be666cc702277edb0e50d0f2bcfef42f
Normal file
Binary file not shown.
BIN
corpus/5d24680a1a0033cc3201d0662b2ee27f3f5fef71
Normal file
BIN
corpus/5d24680a1a0033cc3201d0662b2ee27f3f5fef71
Normal file
Binary file not shown.
BIN
corpus/5e0c4292ae5deebeddb5dfafbca8910de4d47f4c
Normal file
BIN
corpus/5e0c4292ae5deebeddb5dfafbca8910de4d47f4c
Normal file
Binary file not shown.
BIN
corpus/5e9f11a3626a4fffc92c226f41bb16745f91708c
Normal file
BIN
corpus/5e9f11a3626a4fffc92c226f41bb16745f91708c
Normal file
Binary file not shown.
BIN
corpus/6383fbe0cd35f501116fa8325165a7f8e2c06ee1
Normal file
BIN
corpus/6383fbe0cd35f501116fa8325165a7f8e2c06ee1
Normal file
Binary file not shown.
BIN
corpus/66412d9a19faa194559619f741d7a5d889c09bcb
Normal file
BIN
corpus/66412d9a19faa194559619f741d7a5d889c09bcb
Normal file
Binary file not shown.
BIN
corpus/6f264e10a7118afa70bf09c4c41eeba3a7ca8830
Normal file
BIN
corpus/6f264e10a7118afa70bf09c4c41eeba3a7ca8830
Normal file
Binary file not shown.
BIN
corpus/6f5d60d25770f597a46853f7b851c93b6b07817b
Normal file
BIN
corpus/6f5d60d25770f597a46853f7b851c93b6b07817b
Normal file
Binary file not shown.
BIN
corpus/71cf9feba09ecb14c67769b79af7a3e17db96fc7
Normal file
BIN
corpus/71cf9feba09ecb14c67769b79af7a3e17db96fc7
Normal file
Binary file not shown.
BIN
corpus/741499f04b663d651df0969791c1b9d84f8257a0
Normal file
BIN
corpus/741499f04b663d651df0969791c1b9d84f8257a0
Normal file
Binary file not shown.
BIN
corpus/787c062d8bc33ebfa4b713a15c40c112e645388b
Normal file
BIN
corpus/787c062d8bc33ebfa4b713a15c40c112e645388b
Normal file
Binary file not shown.
BIN
corpus/85071ebfc498d2efef56ddab909c7b620150f06f
Normal file
BIN
corpus/85071ebfc498d2efef56ddab909c7b620150f06f
Normal file
Binary file not shown.
BIN
corpus/8536fc6a83a01ddf77b6b9ed3c42c43068ab9bce
Normal file
BIN
corpus/8536fc6a83a01ddf77b6b9ed3c42c43068ab9bce
Normal file
Binary file not shown.
BIN
corpus/8a424a8152063157d97fbccf0caa08170ce54cef
Normal file
BIN
corpus/8a424a8152063157d97fbccf0caa08170ce54cef
Normal file
Binary file not shown.
BIN
corpus/8db6490863a8b4287d702480d565aabe9789b971
Normal file
BIN
corpus/8db6490863a8b4287d702480d565aabe9789b971
Normal file
Binary file not shown.
BIN
corpus/8e871f447604dcdd1b52711d91de8f886c6e005f
Normal file
BIN
corpus/8e871f447604dcdd1b52711d91de8f886c6e005f
Normal file
Binary file not shown.
BIN
corpus/91c838cb372d5023474bc9c15ea5aa3e48a30414
Normal file
BIN
corpus/91c838cb372d5023474bc9c15ea5aa3e48a30414
Normal file
Binary file not shown.
BIN
corpus/9629a746347892fe0f16a97b283b1d83dd2f0baf
Normal file
BIN
corpus/9629a746347892fe0f16a97b283b1d83dd2f0baf
Normal file
Binary file not shown.
BIN
corpus/97b7b08317abc0847ff8bc24df5dca33a553b805
Normal file
BIN
corpus/97b7b08317abc0847ff8bc24df5dca33a553b805
Normal file
Binary file not shown.
BIN
corpus/9d3024f064aea96bf7392ca3f71e01ac5493453e
Normal file
BIN
corpus/9d3024f064aea96bf7392ca3f71e01ac5493453e
Normal file
Binary file not shown.
BIN
corpus/a8e2d3d290c934c832fa405fb4f3c9fb3a54919a
Normal file
BIN
corpus/a8e2d3d290c934c832fa405fb4f3c9fb3a54919a
Normal file
Binary file not shown.
BIN
corpus/abe9e47223d0aeee953c650052431555c64886f7
Normal file
BIN
corpus/abe9e47223d0aeee953c650052431555c64886f7
Normal file
Binary file not shown.
BIN
corpus/ad471e8eebe223c1afc13d172fb3c8c39746f9b0
Normal file
BIN
corpus/ad471e8eebe223c1afc13d172fb3c8c39746f9b0
Normal file
Binary file not shown.
BIN
corpus/b0ab4e5be422e9b86dd4d0f7215caa867eb489f6
Normal file
BIN
corpus/b0ab4e5be422e9b86dd4d0f7215caa867eb489f6
Normal file
Binary file not shown.
BIN
corpus/b44b9971ef924a12d393b4dfbe149c6270b6e3c6
Normal file
BIN
corpus/b44b9971ef924a12d393b4dfbe149c6270b6e3c6
Normal file
Binary file not shown.
BIN
corpus/b6546e8ce829f9032920603f45ffe969cf46ab42
Normal file
BIN
corpus/b6546e8ce829f9032920603f45ffe969cf46ab42
Normal file
Binary file not shown.
BIN
corpus/b6e34d0828f2113d75fc4d8223f7ce0d6f808199
Normal file
BIN
corpus/b6e34d0828f2113d75fc4d8223f7ce0d6f808199
Normal file
Binary file not shown.
BIN
corpus/b7dad2b0884374b6a304435ab8daa6b70aef0617
Normal file
BIN
corpus/b7dad2b0884374b6a304435ab8daa6b70aef0617
Normal file
Binary file not shown.
BIN
corpus/bd5a8061ac65c0b80a351191d5e36461233c4fd8
Normal file
BIN
corpus/bd5a8061ac65c0b80a351191d5e36461233c4fd8
Normal file
Binary file not shown.
BIN
corpus/be65fc01ef13fe43f3f31c01ba6ddf6d715c583d
Normal file
BIN
corpus/be65fc01ef13fe43f3f31c01ba6ddf6d715c583d
Normal file
Binary file not shown.
BIN
corpus/be77377ac9fe6c450dd79266f18bf77f49e0aca4
Normal file
BIN
corpus/be77377ac9fe6c450dd79266f18bf77f49e0aca4
Normal file
Binary file not shown.
BIN
corpus/c0c35545f24afb1bad2ad4f225a3de11aa10c532
Normal file
BIN
corpus/c0c35545f24afb1bad2ad4f225a3de11aa10c532
Normal file
Binary file not shown.
BIN
corpus/c42c174dabf14d9a19f815087a28e1ca3773a2ab
Normal file
BIN
corpus/c42c174dabf14d9a19f815087a28e1ca3773a2ab
Normal file
Binary file not shown.
BIN
corpus/c469f8ad0e2bfd2158f46b9f1683a16b4c1e7112
Normal file
BIN
corpus/c469f8ad0e2bfd2158f46b9f1683a16b4c1e7112
Normal file
Binary file not shown.
BIN
corpus/c6054ba4c80a543fadc119f3aa3193a797d32bb9
Normal file
BIN
corpus/c6054ba4c80a543fadc119f3aa3193a797d32bb9
Normal file
Binary file not shown.
BIN
corpus/c7f64fef6b239d02dff3856dbf7a837733ffa63f
Normal file
BIN
corpus/c7f64fef6b239d02dff3856dbf7a837733ffa63f
Normal file
Binary file not shown.
BIN
corpus/c80544f858e9243fe82e63298b9a10565f5c331a
Normal file
BIN
corpus/c80544f858e9243fe82e63298b9a10565f5c331a
Normal file
Binary file not shown.
BIN
corpus/cb0e598d2a5c3604371540f854ffe6475d2cc30e
Normal file
BIN
corpus/cb0e598d2a5c3604371540f854ffe6475d2cc30e
Normal file
Binary file not shown.
BIN
corpus/cb5c1ae4758ada5488b0da806b92e0b96363f7a6
Normal file
BIN
corpus/cb5c1ae4758ada5488b0da806b92e0b96363f7a6
Normal file
Binary file not shown.
BIN
corpus/cbb02b7a3535fc3e4b98a5882369fd46388d54ce
Normal file
BIN
corpus/cbb02b7a3535fc3e4b98a5882369fd46388d54ce
Normal file
Binary file not shown.
BIN
corpus/cc0af1aa2b4414007f764e827f7f6a273d4e45fa
Normal file
BIN
corpus/cc0af1aa2b4414007f764e827f7f6a273d4e45fa
Normal file
Binary file not shown.
BIN
corpus/ce99657a71215223b038c7fe204a44e18efb9914
Normal file
BIN
corpus/ce99657a71215223b038c7fe204a44e18efb9914
Normal file
Binary file not shown.
BIN
corpus/d06a6b29ca2650b98bd137656d0c3f20e3d01d68
Normal file
BIN
corpus/d06a6b29ca2650b98bd137656d0c3f20e3d01d68
Normal file
Binary file not shown.
BIN
corpus/d37d2795b555040c9d133027e6ad21be37eef5d2
Normal file
BIN
corpus/d37d2795b555040c9d133027e6ad21be37eef5d2
Normal file
Binary file not shown.
BIN
corpus/d5c0badb87670b4c8b3f69132f6181b77e30b547
Normal file
BIN
corpus/d5c0badb87670b4c8b3f69132f6181b77e30b547
Normal file
Binary file not shown.
BIN
corpus/d88b0d861be9f6487a94bc851f810650c443a322
Normal file
BIN
corpus/d88b0d861be9f6487a94bc851f810650c443a322
Normal file
Binary file not shown.
BIN
corpus/d9e3b04d684fd81612e89c4df4b6ea4fba28c551
Normal file
BIN
corpus/d9e3b04d684fd81612e89c4df4b6ea4fba28c551
Normal file
Binary file not shown.
BIN
corpus/dc5cfa2e3393eae88ddb853cce48dd9dd5b3ea5b
Normal file
BIN
corpus/dc5cfa2e3393eae88ddb853cce48dd9dd5b3ea5b
Normal file
Binary file not shown.
BIN
corpus/e6c53e2ce3900206ee5cbc9b412fa0f3a0bdc06b
Normal file
BIN
corpus/e6c53e2ce3900206ee5cbc9b412fa0f3a0bdc06b
Normal file
Binary file not shown.
BIN
corpus/ead41617afe5f204c9bff8013ebdec61ca3eb78a
Normal file
BIN
corpus/ead41617afe5f204c9bff8013ebdec61ca3eb78a
Normal file
Binary file not shown.
BIN
corpus/eb097d0cf0b8c08f61afde1e55086382641c7a45
Normal file
BIN
corpus/eb097d0cf0b8c08f61afde1e55086382641c7a45
Normal file
Binary file not shown.
BIN
corpus/ec28d45e6226d89bcfa1a0d721d1d8abde8fc938
Normal file
BIN
corpus/ec28d45e6226d89bcfa1a0d721d1d8abde8fc938
Normal file
Binary file not shown.
BIN
corpus/eded3d23b7a010f3b6796ce19515e6f8eb2bc15b
Normal file
BIN
corpus/eded3d23b7a010f3b6796ce19515e6f8eb2bc15b
Normal file
Binary file not shown.
BIN
corpus/f6bcb347784d7c538b991970f4ebf10fa8bb1533
Normal file
BIN
corpus/f6bcb347784d7c538b991970f4ebf10fa8bb1533
Normal file
Binary file not shown.
BIN
corpus/f878b651e945a1e5853232edc315f5abf11b592f
Normal file
BIN
corpus/f878b651e945a1e5853232edc315f5abf11b592f
Normal file
Binary file not shown.
BIN
corpus/ffd75ab88261864051be4a884a9c2fa2797b36a0
Normal file
BIN
corpus/ffd75ab88261864051be4a884a9c2fa2797b36a0
Normal file
Binary file not shown.
Reference in New Issue
Block a user