RED-9010: remove redaction log
This commit is contained in:
parent
f93e59e29e
commit
b2a837bc54
@ -4,7 +4,7 @@ plugins {
|
||||
}
|
||||
|
||||
description = "redaction-service-api-v1"
|
||||
val persistenceServiceVersion = "2.545.0"
|
||||
val persistenceServiceVersion = "2.564.0-RED9010.0"
|
||||
|
||||
dependencies {
|
||||
implementation("org.springframework:spring-web:6.0.12")
|
||||
|
||||
@ -16,7 +16,7 @@ val layoutParserVersion = "0.174.0"
|
||||
val jacksonVersion = "2.15.2"
|
||||
val droolsVersion = "9.44.0.Final"
|
||||
val pdfBoxVersion = "3.0.0"
|
||||
val persistenceServiceVersion = "2.545.0"
|
||||
val persistenceServiceVersion = "2.564.0-RED9010.0"
|
||||
val llmServiceVersion = "1.11.0"
|
||||
val springBootStarterVersion = "3.1.5"
|
||||
val springCloudVersion = "4.0.4"
|
||||
|
||||
@ -1,438 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.migration;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualLegalBasisChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Change;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ChangeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualRedactionType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Point;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Rectangle;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class LegacyRedactionLogMergeService {
|
||||
|
||||
private final DictionaryService dictionaryService;
|
||||
|
||||
|
||||
public RedactionLog addManualAddEntriesAndRemoveSkippedImported(RedactionLog redactionLog, ManualRedactions manualRedactions, String dossierTemplateId) {
|
||||
|
||||
Set<String> skippedImportedRedactions = new HashSet<>();
|
||||
log.info("Adding manual add Entries and removing skipped or imported entries");
|
||||
if (manualRedactions != null) {
|
||||
|
||||
var manualRedactionLogEntries = addManualAddEntries(manualRedactions.getEntriesToAdd(), redactionLog.getAnalysisNumber());
|
||||
|
||||
redactionLog.getRedactionLogEntry().addAll(manualRedactionLogEntries);
|
||||
|
||||
var manualRedactionWrappers = createManualRedactionWrappers(manualRedactions);
|
||||
|
||||
for (RedactionLogEntry entry : redactionLog.getRedactionLogEntry()) {
|
||||
|
||||
if (entry.isImported()) {
|
||||
processRedactionLogEntry(manualRedactionWrappers.stream()
|
||||
.filter(ManualRedactionWrapper::isApproved)
|
||||
.filter(mr -> entry.getId().equals(mr.getId()))
|
||||
.collect(Collectors.toList()), entry, dossierTemplateId);
|
||||
if (!entry.isRedacted()) {
|
||||
skippedImportedRedactions.add(entry.getId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Set<String> processedIds = new HashSet<>();
|
||||
redactionLog.getRedactionLogEntry().removeIf(entry -> {
|
||||
if (entry.isFalsePositive()) {
|
||||
return true;
|
||||
}
|
||||
if (entry.getImportedRedactionIntersections() != null) {
|
||||
entry.getImportedRedactionIntersections().removeAll(skippedImportedRedactions);
|
||||
if (!entry.getImportedRedactionIntersections().isEmpty() && (!entry.isImage() || entry.isImage() && !(entry.getType().equals("image") || entry.getType()
|
||||
.equals("ocr")))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (processedIds.contains(entry.getId())) {
|
||||
log.info("Duplicate annotation found with id {}", entry.getId());
|
||||
return true;
|
||||
}
|
||||
processedIds.add(entry.getId());
|
||||
return false;
|
||||
});
|
||||
return redactionLog;
|
||||
}
|
||||
|
||||
|
||||
public long getNumberOfAffectedAnnotations(ManualRedactions manualRedactions) {
|
||||
|
||||
return createManualRedactionWrappers(manualRedactions).stream()
|
||||
.map(ManualRedactionWrapper::getId)
|
||||
.distinct()
|
||||
.count();
|
||||
}
|
||||
|
||||
|
||||
private List<ManualRedactionWrapper> createManualRedactionWrappers(ManualRedactions manualRedactions) {
|
||||
|
||||
List<ManualRedactionWrapper> manualRedactionWrappers = new ArrayList<>();
|
||||
|
||||
manualRedactions.getRecategorizations()
|
||||
.forEach(item -> {
|
||||
if (item.getSoftDeletedTime() == null) {
|
||||
manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item, item.isApproved()));
|
||||
}
|
||||
});
|
||||
|
||||
manualRedactions.getIdsToRemove()
|
||||
.forEach(item -> {
|
||||
if (item.getSoftDeletedTime() == null) {
|
||||
manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item, item.isApproved()));
|
||||
}
|
||||
});
|
||||
|
||||
manualRedactions.getForceRedactions()
|
||||
.forEach(item -> {
|
||||
if (item.getSoftDeletedTime() == null) {
|
||||
manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item, item.isApproved()));
|
||||
}
|
||||
});
|
||||
|
||||
manualRedactions.getLegalBasisChanges()
|
||||
.forEach(item -> {
|
||||
if (item.getSoftDeletedTime() == null) {
|
||||
manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item, item.isApproved()));
|
||||
}
|
||||
});
|
||||
|
||||
manualRedactions.getResizeRedactions()
|
||||
.forEach(item -> {
|
||||
if (item.getSoftDeletedTime() == null) {
|
||||
manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item, item.isApproved()));
|
||||
}
|
||||
});
|
||||
|
||||
Collections.sort(manualRedactionWrappers);
|
||||
|
||||
return manualRedactionWrappers;
|
||||
}
|
||||
|
||||
|
||||
private void processRedactionLogEntry(List<ManualRedactionWrapper> manualRedactionWrappers, RedactionLogEntry redactionLogEntry, String dossierTemplateId) {
|
||||
|
||||
manualRedactionWrappers.forEach(mrw -> {
|
||||
|
||||
Object item = mrw.getItem();
|
||||
if (item instanceof ManualRecategorization imageRecategorization) {
|
||||
processManualImageRecategorization(redactionLogEntry, dossierTemplateId, imageRecategorization);
|
||||
}
|
||||
|
||||
if (item instanceof IdRemoval manualRemoval) {
|
||||
processIdRemoval(redactionLogEntry, manualRemoval);
|
||||
}
|
||||
|
||||
if (item instanceof ManualForceRedaction manualForceRedact) {
|
||||
processManualForceRedaction(redactionLogEntry, dossierTemplateId, manualForceRedact);
|
||||
}
|
||||
|
||||
if (item instanceof ManualLegalBasisChange manualLegalBasisChange) {
|
||||
processManualLegalBasisChange(redactionLogEntry, manualLegalBasisChange);
|
||||
}
|
||||
|
||||
if (item instanceof ManualResizeRedaction manualResizeRedact) {
|
||||
processManualResizeRedaction(redactionLogEntry, manualResizeRedact);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void processManualImageRecategorization(RedactionLogEntry redactionLogEntry, String dossierTemplateId, ManualRecategorization imageRecategorization) {
|
||||
|
||||
String manualOverrideReason = null;
|
||||
if (imageRecategorization.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
|
||||
redactionLogEntry.setType(imageRecategorization.getType());
|
||||
redactionLogEntry.setSection("Image:" + redactionLogEntry.getType());
|
||||
|
||||
if (dictionaryService.isHint(imageRecategorization.getType(), dossierTemplateId)) {
|
||||
redactionLogEntry.setRedacted(false);
|
||||
redactionLogEntry.setHint(true);
|
||||
} else {
|
||||
redactionLogEntry.setHint(false);
|
||||
}
|
||||
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", recategorized by manual override");
|
||||
} else if (imageRecategorization.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to recategorize");
|
||||
}
|
||||
|
||||
if (manualOverrideReason != null) {
|
||||
redactionLogEntry.setReason(manualOverrideReason);
|
||||
}
|
||||
|
||||
redactionLogEntry.getManualChanges()
|
||||
.add(ManualChange.from(imageRecategorization)
|
||||
.withManualRedactionType(ManualRedactionType.RECATEGORIZE)
|
||||
.withChange("type", imageRecategorization.getType())
|
||||
.withChange("section", imageRecategorization.getSection())
|
||||
.withChange("legalBasis", imageRecategorization.getLegalBasis())
|
||||
.withChange("value", imageRecategorization.getValue()));
|
||||
}
|
||||
|
||||
|
||||
private String mergeReasonIfNecessary(String currentReason, String addition) {
|
||||
|
||||
if (currentReason != null) {
|
||||
if (!currentReason.contains(addition)) {
|
||||
return currentReason + addition;
|
||||
}
|
||||
return currentReason;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void processIdRemoval(RedactionLogEntry redactionLogEntry, IdRemoval manualRemoval) {
|
||||
|
||||
boolean isApprovedRedaction = manualRemoval.getStatus().equals(AnnotationStatus.APPROVED);
|
||||
if (isApprovedRedaction && manualRemoval.isRemoveFromDictionary() && isBasedOnDictionaryOnly(redactionLogEntry)) {
|
||||
log.debug("Skipping merge for dictionary-modifying entry");
|
||||
} else {
|
||||
String manualOverrideReason = null;
|
||||
if (isApprovedRedaction) {
|
||||
redactionLogEntry.setRedacted(false);
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", removed by manual override");
|
||||
redactionLogEntry.setHint(false);
|
||||
} else if (manualRemoval.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to remove");
|
||||
}
|
||||
|
||||
if (manualOverrideReason != null) {
|
||||
redactionLogEntry.setReason(manualOverrideReason);
|
||||
}
|
||||
}
|
||||
|
||||
redactionLogEntry.getManualChanges()
|
||||
.add(ManualChange.from(manualRemoval)
|
||||
.withManualRedactionType(manualRemoval.isRemoveFromDictionary() ? ManualRedactionType.REMOVE_FROM_DICTIONARY : ManualRedactionType.REMOVE_LOCALLY));
|
||||
}
|
||||
|
||||
|
||||
private boolean isBasedOnDictionaryOnly(RedactionLogEntry redactionLogEntry) {
|
||||
|
||||
return redactionLogEntry.getEngines().contains(Engine.DICTIONARY) && redactionLogEntry.getEngines().size() == 1;
|
||||
}
|
||||
|
||||
|
||||
private void processManualForceRedaction(RedactionLogEntry redactionLogEntry, String dossierTemplateId, ManualForceRedaction manualForceRedact) {
|
||||
|
||||
String manualOverrideReason = null;
|
||||
var dictionaryIsHint = dictionaryService.isHint(redactionLogEntry.getType(), dossierTemplateId);
|
||||
if (manualForceRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
// Forcing a skipped hint should result in a hint
|
||||
if (dictionaryIsHint) {
|
||||
redactionLogEntry.setHint(true);
|
||||
} else {
|
||||
redactionLogEntry.setRedacted(true);
|
||||
}
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", forced by manual override");
|
||||
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
||||
} else if (manualForceRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to force " + (dictionaryIsHint ? "hint" : "redact"));
|
||||
redactionLogEntry.setLegalBasis(manualForceRedact.getLegalBasis());
|
||||
}
|
||||
|
||||
if (manualOverrideReason != null) {
|
||||
redactionLogEntry.setReason(manualOverrideReason);
|
||||
}
|
||||
|
||||
var manualChange = ManualChange.from(manualForceRedact).withManualRedactionType(dictionaryIsHint ? ManualRedactionType.FORCE_HINT : ManualRedactionType.FORCE_REDACT);
|
||||
|
||||
redactionLogEntry.getManualChanges().add(manualChange);
|
||||
}
|
||||
|
||||
|
||||
private void processManualLegalBasisChange(RedactionLogEntry redactionLogEntry, ManualLegalBasisChange manualLegalBasisChange) {
|
||||
|
||||
String manualOverrideReason = null;
|
||||
if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis was manually changed");
|
||||
redactionLogEntry.setLegalBasis(manualLegalBasisChange.getLegalBasis());
|
||||
redactionLogEntry.setRedacted(true);
|
||||
if (manualLegalBasisChange.getSection() != null) {
|
||||
redactionLogEntry.setSection(manualLegalBasisChange.getSection());
|
||||
}
|
||||
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
||||
redactionLogEntry.setValue(manualLegalBasisChange.getValue());
|
||||
}
|
||||
} else if (manualLegalBasisChange.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", legal basis change requested");
|
||||
}
|
||||
|
||||
if (manualOverrideReason != null) {
|
||||
redactionLogEntry.setReason(manualOverrideReason);
|
||||
}
|
||||
|
||||
var manualChange = ManualChange.from(manualLegalBasisChange).withManualRedactionType(ManualRedactionType.LEGAL_BASIS_CHANGE);
|
||||
manualChange.withChange("legalBasis", manualLegalBasisChange.getLegalBasis());
|
||||
if (manualLegalBasisChange.getSection() != null) {
|
||||
manualChange.withChange("section", manualLegalBasisChange.getSection());
|
||||
}
|
||||
if (redactionLogEntry.isRectangle() && manualLegalBasisChange.getValue() != null) {
|
||||
manualChange.withChange("value", manualLegalBasisChange.getValue());
|
||||
}
|
||||
redactionLogEntry.getManualChanges().add(manualChange);
|
||||
}
|
||||
|
||||
|
||||
private void processManualResizeRedaction(RedactionLogEntry redactionLogEntry, ManualResizeRedaction manualResizeRedact) {
|
||||
|
||||
String manualOverrideReason = null;
|
||||
if (manualResizeRedact.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
||||
if (!"signature".equalsIgnoreCase(redactionLogEntry.getType()) && !"logo".equalsIgnoreCase(redactionLogEntry.getType())) {
|
||||
redactionLogEntry.setValue(manualResizeRedact.getValue());
|
||||
}
|
||||
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
||||
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
||||
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
||||
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
||||
}
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", resized by manual override");
|
||||
} else if (manualResizeRedact.getStatus().equals(AnnotationStatus.REQUESTED)) {
|
||||
manualOverrideReason = mergeReasonIfNecessary(redactionLogEntry.getReason(), ", requested to resize redact");
|
||||
redactionLogEntry.setPositions(convertPositions(manualResizeRedact.getPositions()));
|
||||
|
||||
// This is for backwards compatibility, now the text after/before is calculated during reanalysis because we need to find dict entries on positions where entries are resized to smaller.
|
||||
if (manualResizeRedact.getTextBefore() != null || manualResizeRedact.getTextAfter() != null) {
|
||||
redactionLogEntry.setTextBefore(manualResizeRedact.getTextBefore());
|
||||
redactionLogEntry.setTextAfter(manualResizeRedact.getTextAfter());
|
||||
}
|
||||
}
|
||||
|
||||
redactionLogEntry.setReason(manualOverrideReason);
|
||||
redactionLogEntry.getManualChanges()
|
||||
.add(ManualChange.from(manualResizeRedact).withManualRedactionType(ManualRedactionType.RESIZE).withChange("value", manualResizeRedact.getValue()));
|
||||
}
|
||||
|
||||
|
||||
public List<RedactionLogEntry> addManualAddEntries(Set<ManualRedactionEntry> manualAdds, int analysisNumber) {
|
||||
|
||||
List<RedactionLogEntry> redactionLogEntries = new ArrayList<>();
|
||||
|
||||
for (ManualRedactionEntry manualRedactionEntry : manualAdds) {
|
||||
|
||||
if (shouldCreateManualEntry(manualRedactionEntry)) {
|
||||
RedactionLogEntry redactionLogEntry = createRedactionLogEntry(manualRedactionEntry, manualRedactionEntry.getAnnotationId(), analysisNumber);
|
||||
redactionLogEntry.setPositions(convertPositions(manualRedactionEntry.getPositions()));
|
||||
redactionLogEntry.setTextBefore(manualRedactionEntry.getTextBefore());
|
||||
redactionLogEntry.setTextAfter(manualRedactionEntry.getTextAfter());
|
||||
|
||||
redactionLogEntries.add(redactionLogEntry);
|
||||
}
|
||||
}
|
||||
|
||||
return redactionLogEntries;
|
||||
}
|
||||
|
||||
|
||||
private List<Rectangle> convertPositions(List<com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle> positions) {
|
||||
|
||||
return positions.stream()
|
||||
.map(pos -> new Rectangle(new Point(pos.getTopLeftX(), pos.getTopLeftY()), pos.getWidth(), pos.getHeight(), pos.getPage()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("PMD.UselessParentheses")
|
||||
private boolean shouldCreateManualEntry(ManualRedactionEntry manualRedactionEntry) {
|
||||
|
||||
if (!manualRedactionEntry.isApproved()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (!manualRedactionEntry.isAddToDictionary() && !manualRedactionEntry.isAddToDossierDictionary()) || ((manualRedactionEntry.isAddToDictionary()
|
||||
|| manualRedactionEntry.isAddToDossierDictionary())
|
||||
&& manualRedactionEntry.getProcessedDate() == null);
|
||||
}
|
||||
|
||||
|
||||
private RedactionLogEntry createRedactionLogEntry(ManualRedactionEntry manualRedactionEntry, String id, int analysisNumber) {
|
||||
|
||||
var addToDictionary = manualRedactionEntry.isAddToDictionary() || manualRedactionEntry.isAddToDossierDictionary();
|
||||
|
||||
var change = ManualChange.from(manualRedactionEntry).withManualRedactionType(addToDictionary ? ManualRedactionType.ADD_TO_DICTIONARY : ManualRedactionType.ADD_LOCALLY);
|
||||
List<ManualChange> changeList = new ArrayList<>();
|
||||
changeList.add(change);
|
||||
|
||||
return RedactionLogEntry.builder()
|
||||
.id(id)
|
||||
.reason(manualRedactionEntry.getReason())
|
||||
.isDictionaryEntry(manualRedactionEntry.isAddToDictionary())
|
||||
.isDossierDictionaryEntry(manualRedactionEntry.isAddToDossierDictionary())
|
||||
.legalBasis(manualRedactionEntry.getLegalBasis())
|
||||
.value(manualRedactionEntry.getValue())
|
||||
.sourceId(manualRedactionEntry.getSourceId())
|
||||
.section(manualRedactionEntry.getSection())
|
||||
.type(manualRedactionEntry.getType())
|
||||
.redacted(true)
|
||||
.isHint(false)
|
||||
.sectionNumber(-1)
|
||||
.rectangle(manualRedactionEntry.isRectangle())
|
||||
.manualChanges(changeList)
|
||||
.changes(List.of(new Change(analysisNumber + 1, ChangeType.ADDED, manualRedactionEntry.getRequestDate())))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
private static class ManualRedactionWrapper implements Comparable<ManualRedactionWrapper> {
|
||||
|
||||
private String id;
|
||||
private OffsetDateTime date;
|
||||
private Object item;
|
||||
private boolean approved;
|
||||
|
||||
|
||||
@Override
|
||||
public int compareTo(ManualRedactionWrapper o) {
|
||||
|
||||
return this.date.compareTo(o.date);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,75 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.migration;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@Service
|
||||
@SuppressWarnings("PMD")
|
||||
public class LegacyVersion0MigrationService {
|
||||
|
||||
public RedactionLog mergeDuplicateAnnotationIds(RedactionLog redactionLog) {
|
||||
|
||||
List<RedactionLogEntry> mergedEntries = new LinkedList<>();
|
||||
Map<String, List<RedactionLogEntry>> entriesById = redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(RedactionLogEntry::getId));
|
||||
for (List<RedactionLogEntry> entries : entriesById.values()) {
|
||||
|
||||
if (entries.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (entries.size() == 1) {
|
||||
mergedEntries.add(entries.get(0));
|
||||
continue;
|
||||
}
|
||||
|
||||
List<RedactionLogEntry> sortedEntries = entries.stream()
|
||||
.sorted(Comparator.comparing(entry -> entry.getChanges()
|
||||
.get(0).getDateTime()))
|
||||
.toList();
|
||||
|
||||
RedactionLogEntry initialEntry = sortedEntries.get(0);
|
||||
for (RedactionLogEntry entry : sortedEntries.subList(1, sortedEntries.size())) {
|
||||
copyNonNullFields(entry, initialEntry);
|
||||
}
|
||||
mergedEntries.add(initialEntry);
|
||||
}
|
||||
|
||||
redactionLog.setRedactionLogEntry(mergedEntries);
|
||||
return redactionLog;
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
public static void copyNonNullFields(RedactionLogEntry source, RedactionLogEntry destination) {
|
||||
|
||||
if (source == null || destination == null) {
|
||||
throw new IllegalArgumentException("Source and destination objects must not be null");
|
||||
}
|
||||
|
||||
Class<?> sourceClass = source.getClass();
|
||||
|
||||
Field[] sourceFields = sourceClass.getDeclaredFields();
|
||||
|
||||
for (Field field : sourceFields) {
|
||||
field.setAccessible(true);
|
||||
Object value = field.get(source);
|
||||
if (value != null) {
|
||||
field.set(destination, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,103 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.migration;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ChangeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Change;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualRedactionType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
|
||||
public class MigrationMapper {
|
||||
|
||||
public static com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change toEntityLogChanges(Change change) {
|
||||
|
||||
return new com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change(change.getAnalysisNumber(),
|
||||
toEntityLogType(change.getType()),
|
||||
change.getDateTime(),
|
||||
Collections.emptyMap());
|
||||
}
|
||||
|
||||
|
||||
public static com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange toEntityLogManualChanges(com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualChange manualChange) {
|
||||
|
||||
return new com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange(toManualRedactionType(manualChange.getManualRedactionType()),
|
||||
manualChange.getProcessedDate(),
|
||||
manualChange.getRequestedDate(),
|
||||
manualChange.getUserId(),
|
||||
manualChange.getPropertyChanges(),
|
||||
0);
|
||||
}
|
||||
|
||||
|
||||
public static ChangeType toEntityLogType(com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ChangeType type) {
|
||||
|
||||
return switch (type) {
|
||||
case ADDED -> ChangeType.ADDED;
|
||||
case REMOVED -> ChangeType.REMOVED;
|
||||
case CHANGED -> ChangeType.CHANGED;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public static com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType toManualRedactionType(ManualRedactionType manualRedactionType) {
|
||||
|
||||
return switch (manualRedactionType) {
|
||||
case ADD_LOCALLY -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.ADD;
|
||||
case ADD_TO_DICTIONARY -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.ADD_TO_DICTIONARY;
|
||||
case REMOVE_LOCALLY -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.REMOVE;
|
||||
case REMOVE_FROM_DICTIONARY -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.REMOVE_FROM_DICTIONARY;
|
||||
case FORCE_REDACT -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.FORCE;
|
||||
case FORCE_HINT -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.FORCE;
|
||||
case RECATEGORIZE -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.RECATEGORIZE;
|
||||
case LEGAL_BASIS_CHANGE -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.LEGAL_BASIS_CHANGE;
|
||||
case RESIZE -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.RESIZE;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public static com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine toEntityLogEngine(Engine engine) {
|
||||
|
||||
return switch (engine) {
|
||||
case DICTIONARY -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine.DICTIONARY;
|
||||
case NER -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine.NER;
|
||||
case RULE -> com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine.RULE;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public static Set<com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine> getMigratedEngines(RedactionLogEntry entry) {
|
||||
|
||||
Set<com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine> engines = new HashSet<>();
|
||||
|
||||
if (entry.isImported()) {
|
||||
engines.add(com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine.IMPORTED);
|
||||
}
|
||||
|
||||
if (entry.getEngines() == null) {
|
||||
return engines;
|
||||
}
|
||||
entry.getEngines()
|
||||
.stream()
|
||||
.map(MigrationMapper::toEntityLogEngine)
|
||||
.forEach(engines::add);
|
||||
|
||||
return engines;
|
||||
}
|
||||
|
||||
|
||||
public List<ManualChange> migrateManualChanges(List<com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualChange> manualChanges) {
|
||||
|
||||
if (manualChanges == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return manualChanges.stream()
|
||||
.map(MigrationMapper::toEntityLogManualChanges)
|
||||
.toList();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,96 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.migration;
|
||||
|
||||
import static com.iqser.red.service.redaction.v1.model.QueueNames.MIGRATION_REQUEST_QUEUE;
|
||||
import static com.iqser.red.service.redaction.v1.model.QueueNames.MIGRATION_RESPONSE_QUEUE;
|
||||
|
||||
import org.springframework.amqp.core.Message;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.MigrationRequest;
|
||||
import com.iqser.red.service.redaction.v1.model.MigrationResponse;
|
||||
import com.iqser.red.service.redaction.v1.server.model.MigratedEntityLog;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
|
||||
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.document.DocumentGraphMapper;
|
||||
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class MigrationMessageReceiver {
|
||||
|
||||
ObjectMapper objectMapper;
|
||||
RedactionLogToEntityLogMigrationService redactionLogToEntityLogMigrationService;
|
||||
RedactionStorageService redactionStorageService;
|
||||
LegacyRedactionLogMergeService legacyRedactionLogMergeService;
|
||||
LegacyVersion0MigrationService legacyVersion0MigrationService;
|
||||
RabbitTemplate rabbitTemplate;
|
||||
DictionaryService dictionaryService;
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@RabbitHandler
|
||||
@RabbitListener(queues = MIGRATION_REQUEST_QUEUE)
|
||||
public void receiveMigrationRequest(Message message) {
|
||||
|
||||
MigrationRequest migrationRequest = objectMapper.readValue(message.getBody(), MigrationRequest.class);
|
||||
log.info("--------------------------------------------------------------------");
|
||||
log.info("Starting redactionLog to entityLog migration for dossierId {} and fileId {}", migrationRequest.getDossierId(), migrationRequest.getFileId());
|
||||
|
||||
dictionaryService.updateDictionary(migrationRequest.getDossierTemplateId(), migrationRequest.getDossierId());
|
||||
|
||||
Document document = DocumentGraphMapper.toDocumentGraph(redactionStorageService.getDocumentData(migrationRequest.getDossierId(), migrationRequest.getFileId()));
|
||||
RedactionLog redactionLog = redactionStorageService.getRedactionLog(migrationRequest.getDossierId(), migrationRequest.getFileId());
|
||||
|
||||
if (redactionLog.getAnalysisVersion() == 0) {
|
||||
redactionLog = legacyVersion0MigrationService.mergeDuplicateAnnotationIds(redactionLog);
|
||||
} else {
|
||||
redactionLog = legacyRedactionLogMergeService.addManualAddEntriesAndRemoveSkippedImported(redactionLog,
|
||||
migrationRequest.getManualRedactions(),
|
||||
migrationRequest.getDossierTemplateId());
|
||||
}
|
||||
|
||||
MigratedEntityLog migratedEntityLog = redactionLogToEntityLogMigrationService.migrate(redactionLog,
|
||||
document,
|
||||
migrationRequest.getDossierTemplateId(),
|
||||
migrationRequest.getManualRedactions(),
|
||||
migrationRequest.getFileId(),
|
||||
migrationRequest.getEntitiesWithComments(),
|
||||
migrationRequest.isFileIsApproved());
|
||||
|
||||
log.info("Storing migrated entityLog and ids to migrate in DB for file {}", migrationRequest.getFileId());
|
||||
|
||||
redactionStorageService.storeObject(migrationRequest.getDossierId(), migrationRequest.getFileId(), FileType.ENTITY_LOG, migratedEntityLog.getEntityLog());
|
||||
redactionStorageService.storeObject(migrationRequest.getDossierId(), migrationRequest.getFileId(), FileType.MIGRATED_IDS, migratedEntityLog.getMigratedIds());
|
||||
|
||||
sendFinished(MigrationResponse.builder().dossierId(migrationRequest.getDossierId()).fileId(migrationRequest.getFileId()).build());
|
||||
log.info("Migrated {} redactionLog entries, found {} annotation ids for migration in the db, {} new manual entries, for dossierId {} and fileId {}",
|
||||
migratedEntityLog.getEntityLog().getEntityLogEntry().size(),
|
||||
migratedEntityLog.getMigratedIds().getMappings().size(),
|
||||
migratedEntityLog.getMigratedIds().getManualRedactionEntriesToAdd().size(),
|
||||
migrationRequest.getDossierId(),
|
||||
migrationRequest.getFileId());
|
||||
log.info("");
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
public void sendFinished(MigrationResponse migrationResponse) {
|
||||
|
||||
rabbitTemplate.convertAndSend(MIGRATION_RESPONSE_QUEUE, migrationResponse);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,360 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.migration;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogLegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.migration.MigratedIds;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Rectangle;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogLegalBasis;
|
||||
import com.iqser.red.service.redaction.v1.server.model.MigratedEntityLog;
|
||||
import com.iqser.red.service.redaction.v1.server.model.MigrationEntity;
|
||||
import com.iqser.red.service.redaction.v1.server.model.PrecursorEntity;
|
||||
import com.iqser.red.service.redaction.v1.server.model.RectangleWithPage;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Image;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.ImageType;
|
||||
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.ManualChangesApplicationService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.document.EntityFindingUtility;
|
||||
import com.iqser.red.service.redaction.v1.server.service.document.EntityFromPrecursorCreationService;
|
||||
import com.iqser.red.service.redaction.v1.server.utils.IdBuilder;
|
||||
import com.iqser.red.service.redaction.v1.server.utils.MigratedIdsCollector;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
//TODO: remove this, once the migration is done
|
||||
public class RedactionLogToEntityLogMigrationService {
|
||||
|
||||
private static final double MATCH_THRESHOLD = 10;
|
||||
EntityFindingUtility entityFindingUtility;
|
||||
DictionaryService dictionaryService;
|
||||
ManualChangesApplicationService manualChangesApplicationService;
|
||||
|
||||
|
||||
public MigratedEntityLog migrate(RedactionLog redactionLog,
|
||||
Document document,
|
||||
String dossierTemplateId,
|
||||
ManualRedactions manualRedactions,
|
||||
String fileId,
|
||||
Set<String> entitiesWithComments,
|
||||
boolean fileIsApproved) {
|
||||
|
||||
log.info("Migrating entities for file {}", fileId);
|
||||
List<MigrationEntity> entitiesToMigrate = calculateMigrationEntitiesFromRedactionLog(redactionLog, document, dossierTemplateId, fileId);
|
||||
|
||||
MigratedIds migratedIds = entitiesToMigrate.stream()
|
||||
.collect(new MigratedIdsCollector());
|
||||
|
||||
log.info("applying manual changes to migrated entities for file {}", fileId);
|
||||
applyLocalProcessedManualChanges(entitiesToMigrate, manualRedactions, fileIsApproved);
|
||||
|
||||
EntityLog entityLog = new EntityLog();
|
||||
entityLog.setAnalysisNumber(redactionLog.getAnalysisNumber());
|
||||
entityLog.setRulesVersion(redactionLog.getRulesVersion());
|
||||
entityLog.setDictionaryVersion(redactionLog.getDictionaryVersion());
|
||||
entityLog.setDossierDictionaryVersion(redactionLog.getDossierDictionaryVersion());
|
||||
entityLog.setLegalBasisVersion(redactionLog.getLegalBasisVersion());
|
||||
entityLog.setAnalysisVersion(redactionLog.getAnalysisVersion());
|
||||
entityLog.setLegalBasis(redactionLog.getLegalBasis()
|
||||
.stream()
|
||||
.map(RedactionLogToEntityLogMigrationService::toEntityLogLegalBasis)
|
||||
.toList());
|
||||
|
||||
Map<String, String> oldToNewIDMapping = migratedIds.buildOldToNewMapping();
|
||||
|
||||
log.info("Writing migrated entities to entityLog for file {}", fileId);
|
||||
entityLog.setEntityLogEntry(entitiesToMigrate.stream()
|
||||
.map(migrationEntity -> migrationEntity.toEntityLogEntry(oldToNewIDMapping))
|
||||
.toList());
|
||||
|
||||
if (getNumberOfApprovedEntries(redactionLog, document.getNumberOfPages()) != entityLog.getEntityLogEntry().size()) {
|
||||
String message = String.format("Not all entities have been found during the migration redactionLog has %d entries and new entityLog %d",
|
||||
redactionLog.getRedactionLogEntry().size(),
|
||||
entityLog.getEntityLogEntry().size());
|
||||
log.error(message);
|
||||
throw new AssertionError(message);
|
||||
}
|
||||
|
||||
Set<String> entitiesWithUnprocessedChanges = manualRedactions.buildAll()
|
||||
.stream()
|
||||
.filter(manualRedaction -> manualRedaction.getProcessedDate() == null)
|
||||
.map(BaseAnnotation::getAnnotationId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
MigratedIds idsToMigrateInDb = entitiesToMigrate.stream()
|
||||
.filter(migrationEntity -> migrationEntity.hasManualChangesOrComments(entitiesWithComments, entitiesWithUnprocessedChanges))
|
||||
.filter(m -> !m.getOldId().equals(m.getNewId()))
|
||||
.collect(new MigratedIdsCollector());
|
||||
|
||||
List<ManualRedactionEntry> manualRedactionEntriesToAdd = entitiesToMigrate.stream()
|
||||
.filter(MigrationEntity::needsManualEntry)
|
||||
.map(MigrationEntity::buildManualRedactionEntry)
|
||||
.toList();
|
||||
idsToMigrateInDb.setManualRedactionEntriesToAdd(manualRedactionEntriesToAdd);
|
||||
|
||||
List<String> manualForceRedactionIdsToDelete = entitiesToMigrate.stream()
|
||||
.filter(MigrationEntity::needsForceDeletion)
|
||||
.map(MigrationEntity::getNewId)
|
||||
.toList();
|
||||
idsToMigrateInDb.setForceRedactionIdsToDelete(manualForceRedactionIdsToDelete);
|
||||
|
||||
return new MigratedEntityLog(idsToMigrateInDb, entityLog);
|
||||
}
|
||||
|
||||
|
||||
private void applyLocalProcessedManualChanges(List<MigrationEntity> entitiesToMigrate, ManualRedactions manualRedactions, boolean fileIsApproved) {
|
||||
|
||||
if (manualRedactions == null) {
|
||||
return;
|
||||
}
|
||||
Map<String, List<BaseAnnotation>> manualChangesPerAnnotationId;
|
||||
|
||||
if (fileIsApproved) {
|
||||
manualChangesPerAnnotationId = manualRedactions.buildAll()
|
||||
.stream()
|
||||
.filter(manualChange -> (manualChange.getProcessedDate() != null && manualChange.isLocal()) //
|
||||
// unprocessed dict change of type IdRemoval or ManualResize must be applied for approved documents
|
||||
|| (manualChange.getProcessedDate() == null && !manualChange.isLocal() //
|
||||
&& (manualChange instanceof IdRemoval || manualChange instanceof ManualResizeRedaction)))
|
||||
.map(this::convertPendingDictChangesToLocal)
|
||||
.collect(Collectors.groupingBy(BaseAnnotation::getAnnotationId));
|
||||
} else {
|
||||
manualChangesPerAnnotationId = manualRedactions.buildAll()
|
||||
.stream()
|
||||
.filter(manualChange -> manualChange.getProcessedDate() != null)
|
||||
.filter(BaseAnnotation::isLocal)
|
||||
.collect(Collectors.groupingBy(BaseAnnotation::getAnnotationId));
|
||||
}
|
||||
|
||||
entitiesToMigrate.forEach(migrationEntity -> migrationEntity.applyManualChanges(manualChangesPerAnnotationId.getOrDefault(migrationEntity.getOldId(),
|
||||
Collections.emptyList()),
|
||||
manualChangesApplicationService));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private BaseAnnotation convertPendingDictChangesToLocal(BaseAnnotation baseAnnotation) {
|
||||
|
||||
if (baseAnnotation.getProcessedDate() != null) {
|
||||
return baseAnnotation;
|
||||
}
|
||||
|
||||
if (baseAnnotation.isLocal()) {
|
||||
return baseAnnotation;
|
||||
}
|
||||
|
||||
if (baseAnnotation instanceof ManualResizeRedaction manualResizeRedaction) {
|
||||
manualResizeRedaction.setAddToAllDossiers(false);
|
||||
manualResizeRedaction.setUpdateDictionary(false);
|
||||
} else if (baseAnnotation instanceof IdRemoval idRemoval) {
|
||||
idRemoval.setRemoveFromAllDossiers(false);
|
||||
idRemoval.setRemoveFromDictionary(false);
|
||||
}
|
||||
|
||||
return baseAnnotation;
|
||||
}
|
||||
|
||||
|
||||
private long getNumberOfApprovedEntries(RedactionLog redactionLog, int numberOfPages) {
|
||||
|
||||
return redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(redactionLogEntry -> isOnExistingPage(redactionLogEntry, numberOfPages))
|
||||
.count();
|
||||
}
|
||||
|
||||
|
||||
private List<MigrationEntity> calculateMigrationEntitiesFromRedactionLog(RedactionLog redactionLog, Document document, String dossierTemplateId, String fileId) {
|
||||
|
||||
List<MigrationEntity> images = getImageBasedMigrationEntities(redactionLog, document, fileId, dossierTemplateId);
|
||||
List<MigrationEntity> textMigrationEntities = getTextBasedMigrationEntities(redactionLog, document, dossierTemplateId, fileId);
|
||||
return Stream.of(textMigrationEntities.stream(), images.stream())
|
||||
.flatMap(Function.identity())
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
private static EntityLogLegalBasis toEntityLogLegalBasis(RedactionLogLegalBasis redactionLogLegalBasis) {
|
||||
|
||||
return new EntityLogLegalBasis(redactionLogLegalBasis.getName(), redactionLogLegalBasis.getDescription(), redactionLogLegalBasis.getReason(), "");
|
||||
}
|
||||
|
||||
|
||||
private List<MigrationEntity> getImageBasedMigrationEntities(RedactionLog redactionLog, Document document, String fileId, String dossierTemplateId) {
|
||||
|
||||
List<Image> images = document.streamAllImages()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<RedactionLogEntry> redactionLogImages = redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(RedactionLogEntry::isImage)
|
||||
.toList();
|
||||
|
||||
List<MigrationEntity> migrationEntities = new LinkedList<>();
|
||||
for (RedactionLogEntry redactionLogImage : redactionLogImages) {
|
||||
List<RectangleWithPage> imagePositions = redactionLogImage.getPositions()
|
||||
.stream()
|
||||
.map(RectangleWithPage::fromRedactionLogRectangle)
|
||||
.toList();
|
||||
assert imagePositions.size() == 1;
|
||||
Optional<Image> optionalClosestImage = images.stream()
|
||||
.filter(image -> image.onPage(redactionLogImage.getPositions()
|
||||
.get(0).getPage()))
|
||||
.min(Comparator.comparingDouble(image -> EntityFindingUtility.calculateDistance(image.getPosition(), imagePositions.get(0).rectangle2D())))
|
||||
.filter(image -> EntityFindingUtility.calculateDistance(image.getPosition(), imagePositions.get(0).rectangle2D()) <= MATCH_THRESHOLD);
|
||||
|
||||
Image closestImage;
|
||||
if (optionalClosestImage.isEmpty()) { // if no fitting image can be found create a new one with the previous values!
|
||||
closestImage = buildImageDirectly(document, redactionLogImage);
|
||||
} else {
|
||||
closestImage = optionalClosestImage.get();
|
||||
images.remove(closestImage);
|
||||
}
|
||||
|
||||
String ruleIdentifier;
|
||||
String reason = Optional.ofNullable(redactionLogImage.getReason())
|
||||
.orElse("");
|
||||
if (redactionLogImage.getMatchedRule().isBlank() || redactionLogImage.getMatchedRule() == null) {
|
||||
ruleIdentifier = "OLDIMG.0.0";
|
||||
} else {
|
||||
ruleIdentifier = "OLDIMG." + redactionLogImage.getMatchedRule() + ".0";
|
||||
}
|
||||
|
||||
if (redactionLogImage.lastChangeIsRemoved()) {
|
||||
closestImage.remove(ruleIdentifier, reason);
|
||||
} else if (redactionLogImage.isRedacted()) {
|
||||
closestImage.apply(ruleIdentifier, reason, redactionLogImage.getLegalBasis());
|
||||
} else {
|
||||
closestImage.skip(ruleIdentifier, reason);
|
||||
}
|
||||
migrationEntities.add(MigrationEntity.fromRedactionLogImage(redactionLogImage, closestImage, fileId, dictionaryService, dossierTemplateId));
|
||||
}
|
||||
return migrationEntities;
|
||||
}
|
||||
|
||||
|
||||
private static Image buildImageDirectly(Document document, RedactionLogEntry redactionLogImage) {
|
||||
|
||||
Image image = Image.builder()
|
||||
.documentTree(document.getDocumentTree())
|
||||
.imageType(ImageType.fromString(redactionLogImage.getType()))
|
||||
.transparent(redactionLogImage.isImageHasTransparency())
|
||||
.page(document.getPages()
|
||||
.stream()
|
||||
.filter(p -> p.getNumber() == redactionLogImage.getPositions()
|
||||
.get(0).getPage())
|
||||
.findFirst()
|
||||
.orElseThrow())
|
||||
.position(toRectangle2D(redactionLogImage.getPositions()
|
||||
.get(0)))
|
||||
.build();
|
||||
|
||||
List<Integer> treeId = document.getDocumentTree().createNewMainEntryAndReturnId(image);
|
||||
image.setTreeId(treeId);
|
||||
image.setId(IdBuilder.buildId(image.getPages(),
|
||||
image.getBBox().values()
|
||||
.stream()
|
||||
.toList(),
|
||||
"",
|
||||
""));
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
|
||||
private static Rectangle2D toRectangle2D(Rectangle rect) {
|
||||
|
||||
return new Rectangle2D.Double(rect.getTopLeft().getX(), rect.getTopLeft().getY(), rect.getWidth(), rect.getHeight());
|
||||
}
|
||||
|
||||
|
||||
private List<MigrationEntity> getTextBasedMigrationEntities(RedactionLog redactionLog, Document document, String dossierTemplateId, String fileId) {
|
||||
|
||||
List<MigrationEntity> entitiesToMigrate = redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(redactionLogEntry -> !redactionLogEntry.isImage())
|
||||
.filter(redactionLogEntry -> isOnExistingPage(redactionLogEntry, document.getNumberOfPages()))
|
||||
.map(entry -> MigrationEntity.fromRedactionLogEntry(entry, fileId, dictionaryService, dossierTemplateId))
|
||||
.toList();
|
||||
|
||||
List<PrecursorEntity> precursorEntities = entitiesToMigrate.stream()
|
||||
.map(MigrationEntity::getPrecursorEntity)
|
||||
.toList();
|
||||
|
||||
log.info("Finding all possible entities");
|
||||
Map<String, List<TextEntity>> tempEntitiesByValue = entityFindingUtility.findAllPossibleEntitiesAndGroupByValue(document, precursorEntities);
|
||||
|
||||
for (MigrationEntity migrationEntity : entitiesToMigrate) {
|
||||
Optional<TextEntity> optionalTextEntity = entityFindingUtility.findClosestEntityAndReturnEmptyIfNotFound(migrationEntity.getPrecursorEntity(),
|
||||
tempEntitiesByValue,
|
||||
MATCH_THRESHOLD);
|
||||
|
||||
if (optionalTextEntity.isEmpty()) {
|
||||
migrationEntity.setMigratedEntity(migrationEntity.getPrecursorEntity());
|
||||
migrationEntity.setOldId(migrationEntity.getPrecursorEntity().getId());
|
||||
migrationEntity.setNewId(migrationEntity.getPrecursorEntity().getId());
|
||||
continue;
|
||||
}
|
||||
|
||||
TextEntity migratedEntity = EntityFromPrecursorCreationService.createCorrectEntity(migrationEntity.getPrecursorEntity(), optionalTextEntity.get(), true);
|
||||
|
||||
migrationEntity.setMigratedEntity(migratedEntity);
|
||||
migrationEntity.setOldId(migrationEntity.getPrecursorEntity().getId());
|
||||
migrationEntity.setNewId(migratedEntity.getId());
|
||||
}
|
||||
|
||||
tempEntitiesByValue.values()
|
||||
.stream()
|
||||
.flatMap(Collection::stream)
|
||||
.forEach(TextEntity::removeFromGraph);
|
||||
|
||||
return entitiesToMigrate;
|
||||
}
|
||||
|
||||
|
||||
private boolean isOnExistingPage(RedactionLogEntry redactionLogEntry, int numberOfPages) {
|
||||
|
||||
var pages = redactionLogEntry.getPositions()
|
||||
.stream()
|
||||
.map(Rectangle::getPage)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
for (int page : pages) {
|
||||
if (page > numberOfPages) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,483 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.model;
|
||||
|
||||
import static com.iqser.red.service.redaction.v1.server.service.EntityLogCreatorService.buildEntryState;
|
||||
import static com.iqser.red.service.redaction.v1.server.service.EntityLogCreatorService.buildEntryType;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ChangeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualChangeFactory;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.ManualRedactionType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
import com.iqser.red.service.redaction.v1.server.migration.MigrationMapper;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.IEntity;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.ManualChangeOverwrite;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Image;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.ImageType;
|
||||
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.ManualChangesApplicationService;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
public final class MigrationEntity {
|
||||
|
||||
private final PrecursorEntity precursorEntity;
|
||||
private final RedactionLogEntry redactionLogEntry;
|
||||
private final DictionaryService dictionaryService;
|
||||
private final String dossierTemplateId;
|
||||
private IEntity migratedEntity;
|
||||
private String oldId;
|
||||
private String newId;
|
||||
private String fileId;
|
||||
|
||||
@Builder.Default
|
||||
List<BaseAnnotation> manualChanges = new LinkedList<>();
|
||||
|
||||
|
||||
public static MigrationEntity fromRedactionLogEntry(RedactionLogEntry redactionLogEntry, String fileId, DictionaryService dictionaryService, String dossierTemplateId) {
|
||||
|
||||
boolean hint = dictionaryService.isHint(redactionLogEntry.getType(), dossierTemplateId);
|
||||
PrecursorEntity precursorEntity = createPrecursorEntity(redactionLogEntry, hint);
|
||||
if (precursorEntity.getEntityType().equals(EntityType.HINT) && !redactionLogEntry.isHint() && !redactionLogEntry.isRedacted()) {
|
||||
precursorEntity.ignore(precursorEntity.getRuleIdentifier(), precursorEntity.getReason());
|
||||
} else if (redactionLogEntry.lastChangeIsRemoved()) {
|
||||
precursorEntity.remove(precursorEntity.getRuleIdentifier(), precursorEntity.getReason());
|
||||
} else if (lastManualChangeIsRemove(redactionLogEntry)) {
|
||||
precursorEntity.ignore(precursorEntity.getRuleIdentifier(), precursorEntity.getReason());
|
||||
} else if (precursorEntity.isApplied() && redactionLogEntry.isRecommendation()) {
|
||||
precursorEntity.skip(precursorEntity.getRuleIdentifier(), precursorEntity.getReason());
|
||||
} else if (precursorEntity.isApplied()) {
|
||||
precursorEntity.apply(precursorEntity.getRuleIdentifier(), precursorEntity.getReason(), precursorEntity.getLegalBasis());
|
||||
} else {
|
||||
precursorEntity.skip(precursorEntity.getRuleIdentifier(), precursorEntity.getReason());
|
||||
}
|
||||
|
||||
return MigrationEntity.builder()
|
||||
.precursorEntity(precursorEntity)
|
||||
.redactionLogEntry(redactionLogEntry)
|
||||
.oldId(redactionLogEntry.getId())
|
||||
.fileId(fileId)
|
||||
.dictionaryService(dictionaryService)
|
||||
.dossierTemplateId(dossierTemplateId)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
public static MigrationEntity fromRedactionLogImage(RedactionLogEntry redactionLogImage,
|
||||
Image image,
|
||||
String fileId,
|
||||
DictionaryService dictionaryService,
|
||||
String dossierTemplateId) {
|
||||
|
||||
return MigrationEntity.builder()
|
||||
.redactionLogEntry(redactionLogImage)
|
||||
.migratedEntity(image)
|
||||
.oldId(redactionLogImage.getId())
|
||||
.newId(image.getId())
|
||||
.fileId(fileId)
|
||||
.dictionaryService(dictionaryService)
|
||||
.dossierTemplateId(dossierTemplateId)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private static boolean lastManualChangeIsRemove(RedactionLogEntry redactionLogEntry) {
|
||||
|
||||
if (redactionLogEntry.getManualChanges() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return redactionLogEntry.getManualChanges()
|
||||
.stream()
|
||||
.reduce((a, b) -> b)
|
||||
.map(m -> m.getManualRedactionType().equals(ManualRedactionType.REMOVE_LOCALLY))
|
||||
.orElse(false);
|
||||
}
|
||||
|
||||
|
||||
public static PrecursorEntity createPrecursorEntity(RedactionLogEntry redactionLogEntry, boolean hint) {
|
||||
|
||||
String ruleIdentifier = buildRuleIdentifier(redactionLogEntry);
|
||||
List<RectangleWithPage> rectangleWithPages = redactionLogEntry.getPositions()
|
||||
.stream()
|
||||
.map(RectangleWithPage::fromRedactionLogRectangle)
|
||||
.toList();
|
||||
EntityType entityType = getEntityType(redactionLogEntry, hint);
|
||||
return PrecursorEntity.builder()
|
||||
.id(redactionLogEntry.getId())
|
||||
.value(redactionLogEntry.getValue())
|
||||
.entityPosition(rectangleWithPages)
|
||||
.ruleIdentifier(ruleIdentifier)
|
||||
.reason(Optional.ofNullable(redactionLogEntry.getReason())
|
||||
.orElse(""))
|
||||
.legalBasis(redactionLogEntry.getLegalBasis())
|
||||
.type(redactionLogEntry.getType())
|
||||
.section(redactionLogEntry.getSection())
|
||||
.engines(MigrationMapper.getMigratedEngines(redactionLogEntry))
|
||||
.entityType(entityType)
|
||||
.applied(redactionLogEntry.isRedacted())
|
||||
.isDictionaryEntry(redactionLogEntry.isDictionaryEntry())
|
||||
.isDossierDictionaryEntry(redactionLogEntry.isDossierDictionaryEntry())
|
||||
.rectangle(redactionLogEntry.isRectangle())
|
||||
.manualOverwrite(new ManualChangeOverwrite(entityType))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private static String buildRuleIdentifier(RedactionLogEntry redactionLogEntry) {
|
||||
|
||||
String ruleIdentifier;
|
||||
if (redactionLogEntry.getMatchedRule() != null) {
|
||||
ruleIdentifier = "OLD." + redactionLogEntry.getMatchedRule() + ".0";
|
||||
} else {
|
||||
ruleIdentifier = "MAN.5.0"; // pure ManualRedactions used to have no matched rule
|
||||
}
|
||||
return ruleIdentifier;
|
||||
}
|
||||
|
||||
|
||||
private static EntityType getEntityType(RedactionLogEntry redactionLogEntry, boolean hint) {
|
||||
|
||||
if (hint) {
|
||||
return EntityType.HINT;
|
||||
}
|
||||
if (redactionLogEntry.isFalsePositive()) {
|
||||
return EntityType.FALSE_POSITIVE;
|
||||
}
|
||||
if (redactionLogEntry.isHint()) {
|
||||
return EntityType.HINT;
|
||||
}
|
||||
if (redactionLogEntry.isRecommendation()) {
|
||||
return EntityType.RECOMMENDATION;
|
||||
}
|
||||
return EntityType.ENTITY;
|
||||
}
|
||||
|
||||
|
||||
public EntityLogEntry toEntityLogEntry(Map<String, String> oldToNewIdMapping) {
|
||||
|
||||
EntityLogEntry entityLogEntry;
|
||||
if (migratedEntity instanceof Image image) {
|
||||
entityLogEntry = createEntityLogEntry(image);
|
||||
} else if (migratedEntity instanceof TextEntity textEntity) {
|
||||
entityLogEntry = createEntityLogEntry(textEntity);
|
||||
} else if (migratedEntity instanceof PrecursorEntity entity) {
|
||||
entityLogEntry = createEntityLogEntry(entity);
|
||||
} else {
|
||||
throw new UnsupportedOperationException("Unknown subclass " + migratedEntity.getClass());
|
||||
}
|
||||
|
||||
entityLogEntry.setManualChanges(ManualChangeFactory.toLocalManualChangeList(migratedEntity.getManualOverwrite().getManualChangeLog(), true, 0));
|
||||
entityLogEntry.setColor(redactionLogEntry.getColor());
|
||||
entityLogEntry.setChanges(redactionLogEntry.getChanges()
|
||||
.stream()
|
||||
.map(MigrationMapper::toEntityLogChanges)
|
||||
.toList());
|
||||
entityLogEntry.setReference(migrateSetOfIds(redactionLogEntry.getReference(), oldToNewIdMapping));
|
||||
entityLogEntry.setImportedRedactionIntersections(migrateSetOfIds(redactionLogEntry.getImportedRedactionIntersections(), oldToNewIdMapping));
|
||||
entityLogEntry.setEngines(MigrationMapper.getMigratedEngines(redactionLogEntry));
|
||||
|
||||
if (entityLogEntry.getEntryType().equals(EntryType.HINT) && lastManualChangeIsRemoveLocally(entityLogEntry)) {
|
||||
entityLogEntry.setState(EntryState.IGNORED);
|
||||
}
|
||||
|
||||
if (redactionLogEntry.isImported() && redactionLogEntry.getValue() == null) {
|
||||
entityLogEntry.setValue("Imported Redaction");
|
||||
}
|
||||
|
||||
if (entityLogEntry.getChanges() != null && !entityLogEntry.getChanges().isEmpty() && entityLogEntry.getChanges()
|
||||
.stream()
|
||||
.map(Change::getType)
|
||||
.toList()
|
||||
.get(entityLogEntry.getChanges().size() - 1).equals(ChangeType.REMOVED)) {
|
||||
entityLogEntry.setState(EntryState.REMOVED);
|
||||
if (!entityLogEntry.getManualChanges().isEmpty()) {
|
||||
entityLogEntry.getManualChanges()
|
||||
.removeIf(manualChange -> manualChange.getManualRedactionType()
|
||||
.equals(com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.FORCE));
|
||||
}
|
||||
}
|
||||
|
||||
return entityLogEntry;
|
||||
}
|
||||
|
||||
|
||||
private static boolean lastManualChangeIsRemoveLocally(EntityLogEntry entityLogEntry) {
|
||||
|
||||
return entityLogEntry.getManualChanges()
|
||||
.stream()
|
||||
.reduce((a, b) -> b)
|
||||
.filter(mc -> mc.getManualRedactionType().equals(com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType.REMOVE))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
|
||||
private Set<String> migrateSetOfIds(Set<String> ids, Map<String, String> oldToNewIdMapping) {
|
||||
|
||||
if (ids == null) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return ids.stream()
|
||||
.map(oldToNewIdMapping::get)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
|
||||
public EntityLogEntry createEntityLogEntry(Image image) {
|
||||
|
||||
String imageType = image.getImageType().equals(ImageType.OTHER) ? "image" : image.getImageType().toString().toLowerCase(Locale.ENGLISH);
|
||||
List<Position> positions = getPositionsFromOverride(image).orElse(List.of(new Position(image.getPosition(), image.getPage().getNumber())));
|
||||
return EntityLogEntry.builder()
|
||||
.id(image.getId())
|
||||
.value(image.getValue())
|
||||
.type(imageType)
|
||||
.reason(image.buildReasonWithManualChangeDescriptions())
|
||||
.legalBasis(image.getManualOverwrite().getLegalBasis()
|
||||
.orElse(redactionLogEntry.getLegalBasis()))
|
||||
.matchedRule(image.getMatchedRule().getRuleIdentifier().toString())
|
||||
.dictionaryEntry(false)
|
||||
.positions(positions)
|
||||
.containingNodeId(image.getTreeId())
|
||||
.closestHeadline(image.getHeadline().getTextBlock().getSearchText())
|
||||
.section(image.getManualOverwrite().getSection()
|
||||
.orElse(redactionLogEntry.getSection()))
|
||||
.textAfter(redactionLogEntry.getTextAfter())
|
||||
.textBefore(redactionLogEntry.getTextBefore())
|
||||
.imageHasTransparency(image.isTransparent())
|
||||
.state(buildEntryState(image))
|
||||
.entryType(dictionaryService.isHint(imageType, dossierTemplateId) ? EntryType.IMAGE_HINT : EntryType.IMAGE)
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public EntityLogEntry createEntityLogEntry(PrecursorEntity precursorEntity) {
|
||||
|
||||
return EntityLogEntry.builder()
|
||||
.id(precursorEntity.getId())
|
||||
.reason(precursorEntity.buildReasonWithManualChangeDescriptions())
|
||||
.legalBasis(precursorEntity.getManualOverwrite().getLegalBasis()
|
||||
.orElse(redactionLogEntry.getLegalBasis()))
|
||||
.value(precursorEntity.value())
|
||||
.type(precursorEntity.type())
|
||||
.state(buildEntryState(precursorEntity))
|
||||
.entryType(buildEntryType(precursorEntity))
|
||||
.section(precursorEntity.getManualOverwrite().getSection()
|
||||
.orElse(redactionLogEntry.getSection()))
|
||||
.textAfter(redactionLogEntry.getTextAfter())
|
||||
.textBefore(redactionLogEntry.getTextBefore())
|
||||
.containingNodeId(Collections.emptyList())
|
||||
.closestHeadline("")
|
||||
.matchedRule(precursorEntity.getMatchedRule().getRuleIdentifier().toString())
|
||||
.dictionaryEntry(precursorEntity.isDictionaryEntry())
|
||||
.dossierDictionaryEntry(precursorEntity.isDossierDictionaryEntry())
|
||||
.startOffset(-1)
|
||||
.endOffset(-1)
|
||||
.positions(precursorEntity.getManualOverwrite().getPositions()
|
||||
.orElse(precursorEntity.getEntityPosition())
|
||||
.stream()
|
||||
.map(entityPosition -> new Position(entityPosition.rectangle2D(), entityPosition.pageNumber()))
|
||||
.toList())
|
||||
.engines(Collections.emptySet())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
public EntityLogEntry createEntityLogEntry(TextEntity entity) {
|
||||
|
||||
assert entity.getPositionsOnPagePerPage().size() == 1;
|
||||
List<Position> rectanglesPerLine = getRectanglesPerLine(entity);
|
||||
return EntityLogEntry.builder()
|
||||
.id(entity.getId())
|
||||
.positions(rectanglesPerLine)
|
||||
.reason(entity.buildReasonWithManualChangeDescriptions())
|
||||
.legalBasis(entity.getManualOverwrite().getLegalBasis()
|
||||
.orElse(redactionLogEntry.getLegalBasis()))
|
||||
.value(entity.getManualOverwrite().getValue()
|
||||
.orElse(entity.getMatchedRule().isWriteValueWithLineBreaks() ? entity.getValueWithLineBreaks() : entity.getValue()))
|
||||
.type(entity.type())
|
||||
.section(entity.getManualOverwrite().getSection()
|
||||
.orElse(redactionLogEntry.getSection()))
|
||||
.textAfter(entity.getTextAfter())
|
||||
.textBefore(entity.getTextBefore())
|
||||
.containingNodeId(entity.getDeepestFullyContainingNode().getTreeId())
|
||||
.closestHeadline(entity.getDeepestFullyContainingNode().getHeadline().getTextBlock().getSearchText())
|
||||
.matchedRule(entity.getMatchedRule().getRuleIdentifier().toString())
|
||||
.dictionaryEntry(entity.isDictionaryEntry())
|
||||
.startOffset(entity.getTextRange().start())
|
||||
.endOffset(entity.getTextRange().end())
|
||||
.dossierDictionaryEntry(entity.isDossierDictionaryEntry())
|
||||
.engines(entity.getEngines() != null ? entity.getEngines() : Collections.emptySet())
|
||||
.state(buildEntryState(entity))
|
||||
.entryType(buildEntryType(entity))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private static List<Position> getRectanglesPerLine(TextEntity entity) {
|
||||
|
||||
return getPositionsFromOverride(entity).orElse(entity.getPositionsOnPagePerPage()
|
||||
.get(0).getRectanglePerLine()
|
||||
.stream()
|
||||
.map(rectangle2D -> new Position(rectangle2D,
|
||||
entity.getPositionsOnPagePerPage()
|
||||
.get(0).getPage().getNumber()))
|
||||
.toList());
|
||||
}
|
||||
|
||||
|
||||
private static Optional<List<Position>> getPositionsFromOverride(IEntity entity) {
|
||||
|
||||
return entity.getManualOverwrite().getPositions()
|
||||
.map(rects -> rects.stream()
|
||||
.map(r -> new Position(r.rectangle2D(), r.pageNumber()))
|
||||
.toList());
|
||||
}
|
||||
|
||||
|
||||
public boolean hasManualChangesOrComments(Set<String> entitiesWithComments, Set<String> entitiesWithUnprocessedChanges) {
|
||||
|
||||
return !(redactionLogEntry.getManualChanges() == null || redactionLogEntry.getManualChanges().isEmpty()) || //
|
||||
!(redactionLogEntry.getComments() == null || redactionLogEntry.getComments().isEmpty()) //
|
||||
|| hasManualChanges() || entitiesWithComments.contains(oldId) || entitiesWithUnprocessedChanges.contains(oldId);
|
||||
}
|
||||
|
||||
|
||||
public boolean hasManualChanges() {
|
||||
|
||||
return !manualChanges.isEmpty();
|
||||
}
|
||||
|
||||
|
||||
public void applyManualChanges(List<BaseAnnotation> manualChangesToApply, ManualChangesApplicationService manualChangesApplicationService) {
|
||||
|
||||
manualChanges.addAll(manualChangesToApply);
|
||||
manualChangesToApply.forEach(manualChange -> {
|
||||
if (manualChange instanceof ManualResizeRedaction manualResizeRedaction && migratedEntity instanceof TextEntity textEntity) {
|
||||
manualResizeRedaction.setAnnotationId(newId);
|
||||
manualChangesApplicationService.resize(textEntity, manualResizeRedaction);
|
||||
} else if (manualChange instanceof ManualRecategorization manualRecategorization && migratedEntity instanceof Image image) {
|
||||
image.setImageType(ImageType.fromString(manualRecategorization.getType()));
|
||||
migratedEntity.getManualOverwrite().addChange(manualChange);
|
||||
} else {
|
||||
migratedEntity.getManualOverwrite().addChange(manualChange);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public ManualRedactionEntry buildManualRedactionEntry() {
|
||||
|
||||
assert hasManualChanges();
|
||||
|
||||
// currently we need to insert a manual redaction entry, whenever an entity has been resized.
|
||||
String user = manualChanges.stream()
|
||||
.filter(mc -> mc instanceof ManualResizeRedaction)
|
||||
.findFirst()
|
||||
.orElse(manualChanges.get(0)).getUser();
|
||||
|
||||
OffsetDateTime requestDate = manualChanges.get(0).getRequestDate();
|
||||
|
||||
return ManualRedactionEntry.builder()
|
||||
.annotationId(newId)
|
||||
.fileId(fileId)
|
||||
.user(user)
|
||||
.requestDate(requestDate)
|
||||
.type(redactionLogEntry.getType())
|
||||
.value(redactionLogEntry.getValue())
|
||||
.reason(redactionLogEntry.getReason())
|
||||
.legalBasis(redactionLogEntry.getLegalBasis())
|
||||
.section(redactionLogEntry.getSection())
|
||||
.rectangle(false)
|
||||
.addToDictionary(false)
|
||||
.addToDossierDictionary(false)
|
||||
.positions(buildPositions(migratedEntity))
|
||||
.textAfter(redactionLogEntry.getTextAfter())
|
||||
.textBefore(redactionLogEntry.getTextBefore())
|
||||
.dictionaryEntryType(DictionaryEntryType.ENTRY)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private List<Rectangle> buildPositions(IEntity entity) {
|
||||
|
||||
if (entity instanceof TextEntity textEntity) {
|
||||
|
||||
var positionsOnPage = textEntity.getPositionsOnPagePerPage()
|
||||
.get(0);
|
||||
return positionsOnPage.getRectanglePerLine()
|
||||
.stream()
|
||||
.map(p -> new Rectangle((float) p.getX(), (float) p.getY(), (float) p.getWidth(), (float) p.getHeight(), positionsOnPage.getPage().getNumber()))
|
||||
.toList();
|
||||
}
|
||||
if (entity instanceof PrecursorEntity pEntity) {
|
||||
|
||||
return pEntity.getManualOverwrite().getPositions()
|
||||
.orElse(pEntity.getEntityPosition())
|
||||
.stream()
|
||||
.map(p -> new Rectangle((float) p.rectangle2D().getX(),
|
||||
(float) p.rectangle2D().getY(),
|
||||
(float) p.rectangle2D().getWidth(),
|
||||
(float) p.rectangle2D().getHeight(),
|
||||
p.pageNumber()))
|
||||
.toList();
|
||||
}
|
||||
if (entity instanceof Image image) {
|
||||
|
||||
Rectangle2D position = image.getManualOverwrite().getPositions()
|
||||
.map(p -> p.get(0).rectangle2D())
|
||||
.orElse(image.getPosition());
|
||||
|
||||
return List.of(new Rectangle((float) position.getX(), (float) position.getY(), (float) position.getWidth(), (float) position.getHeight(), image.getPage().getNumber()));
|
||||
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean needsManualEntry() {
|
||||
|
||||
return manualChanges.stream()
|
||||
.anyMatch(mc -> mc instanceof ManualResizeRedaction && !((ManualResizeRedaction) mc).getUpdateDictionary()) && !(migratedEntity instanceof Image);
|
||||
}
|
||||
|
||||
public boolean needsForceDeletion() {
|
||||
|
||||
return manualChanges.stream()
|
||||
.anyMatch(mc -> mc instanceof ManualForceRedaction) && this.precursorEntity != null && this.precursorEntity.removed();
|
||||
}
|
||||
|
||||
}
|
||||
@ -24,7 +24,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactionsPerPage;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.mongo.service.EntityLogMongoService;
|
||||
import com.iqser.red.service.redaction.v1.server.client.model.NerEntitiesModel;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.DocumentData;
|
||||
@ -180,27 +179,6 @@ public class RedactionStorageService {
|
||||
}
|
||||
|
||||
|
||||
@Deprecated(forRemoval = true)
|
||||
@Timed("redactmanager_getRedactionLog")
|
||||
public RedactionLog getRedactionLog(String dossierId, String fileId) {
|
||||
|
||||
try {
|
||||
RedactionLog redactionLog = storageService.readJSONObject(TenantContext.getTenantId(),
|
||||
StorageIdUtils.getStorageId(dossierId, fileId, FileType.REDACTION_LOG),
|
||||
RedactionLog.class);
|
||||
redactionLog.setRedactionLogEntry(redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(entry -> !(entry.getPositions() == null || entry.getPositions().isEmpty()))
|
||||
.collect(Collectors.toList()));
|
||||
return redactionLog;
|
||||
} catch (StorageObjectDoesNotExist e) {
|
||||
log.debug("RedactionLog not available.");
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Timed("redactmanager_getRedactionLog")
|
||||
public EntityLog getEntityLog(String dossierId, String fileId) {
|
||||
|
||||
|
||||
@ -1,55 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server.utils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.BinaryOperator;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collector;
|
||||
|
||||
import com.google.common.base.Functions;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.migration.MigratedIds;
|
||||
import com.iqser.red.service.redaction.v1.server.model.MigrationEntity;
|
||||
|
||||
public class MigratedIdsCollector implements Collector<MigrationEntity, MigratedIds, MigratedIds> {
|
||||
|
||||
@Override
|
||||
public Supplier<MigratedIds> supplier() {
|
||||
|
||||
return () -> new MigratedIds(new LinkedList<>(), Collections.emptyList(), Collections.emptyList());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BiConsumer<MigratedIds, MigrationEntity> accumulator() {
|
||||
|
||||
return (migratedIds, migrationEntity) -> migratedIds.addMapping(migrationEntity.getOldId(), migrationEntity.getNewId());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BinaryOperator<MigratedIds> combiner() {
|
||||
|
||||
return (migratedIds, migratedIds2) -> {
|
||||
migratedIds.getMappings().addAll(migratedIds2.getMappings());
|
||||
return migratedIds;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Function<MigratedIds, MigratedIds> finisher() {
|
||||
|
||||
return Functions.identity();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Set<Characteristics> characteristics() {
|
||||
|
||||
return Set.of(Characteristics.IDENTITY_FINISH, Characteristics.CONCURRENT, Characteristics.UNORDERED);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,353 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.migration.MigratedIds;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Rectangle;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry;
|
||||
import com.iqser.red.service.redaction.v1.server.annotate.AnnotateRequest;
|
||||
import com.iqser.red.service.redaction.v1.server.annotate.AnnotateResponse;
|
||||
import com.iqser.red.service.redaction.v1.server.document.graph.BuildDocumentIntegrationTest;
|
||||
import com.iqser.red.service.redaction.v1.server.migration.LegacyRedactionLogMergeService;
|
||||
import com.iqser.red.service.redaction.v1.server.migration.RedactionLogToEntityLogMigrationService;
|
||||
import com.iqser.red.service.redaction.v1.server.model.MigratedEntityLog;
|
||||
import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document;
|
||||
import com.iqser.red.service.redaction.v1.server.redaction.utils.OsUtils;
|
||||
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.document.EntityFindingUtility;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
//@Disabled
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@Import(MigrationIntegrationTest.TestConfiguration.class)
|
||||
public class MigrationIntegrationTest extends BuildDocumentIntegrationTest {
|
||||
|
||||
@Autowired
|
||||
RedactionLogToEntityLogMigrationService redactionLogToEntityLogMigrationService;
|
||||
|
||||
@Autowired
|
||||
LegacyRedactionLogMergeService legacyRedactionLogMergeService;
|
||||
|
||||
@Autowired
|
||||
DictionaryService dictionaryService;
|
||||
|
||||
@Autowired
|
||||
ObjectMapper mapper;
|
||||
|
||||
private final String TEST_DOSSIER_TEMPLATE_ID = "123";
|
||||
|
||||
|
||||
@BeforeEach
|
||||
public void stubClients() {
|
||||
|
||||
TenantContext.setTenantId("redaction");
|
||||
|
||||
loadDictionaryForTest();
|
||||
loadTypeForTest();
|
||||
when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L);
|
||||
when(dictionaryClient.getAllTypesForDossierTemplate(TEST_DOSSIER_TEMPLATE_ID, null, true)).thenReturn(getTemplateDictionaryTypeResponse());
|
||||
|
||||
when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L);
|
||||
when(dictionaryClient.getAllTypesForDossier(TEST_DOSSIER_ID, null, true)).thenReturn(getDossierDictionaryTypeResponse());
|
||||
|
||||
mockDictionaryCalls(null);
|
||||
|
||||
when(dictionaryClient.getColors(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(colors);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testSave() {
|
||||
|
||||
MigratedIds ids = new MigratedIds(new LinkedList<>(), null, null);
|
||||
ids.addMapping("123", "321");
|
||||
ids.addMapping("123", "321");
|
||||
ids.addMapping("123", "321");
|
||||
ids.addMapping("123", "321");
|
||||
ids.addMapping("123", "321");
|
||||
|
||||
mapper.writeValue(new FileOutputStream("/tmp/testIds.json"), ids);
|
||||
var ids2 = mapper.readValue(new FileInputStream("/tmp/testIds.json"), MigratedIds.class);
|
||||
assert ids2.getMappings().size() == 5;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testMigration() {
|
||||
|
||||
String filesPrefix = "files/migration/test";
|
||||
|
||||
String fileName = filesPrefix + ".ORIGIN.pdf";
|
||||
String imageFileName = filesPrefix + ".IMAGE_INFO.json";
|
||||
String tableFileName = filesPrefix + ".TABLES.json";
|
||||
String manualChangesFileName = filesPrefix + ".MANUAL_CHANGES.json";
|
||||
String migratedIdsFileName = filesPrefix + ".MIGRATED_IDS.json";
|
||||
|
||||
Document document = buildGraph(fileName, imageFileName, tableFileName);
|
||||
RedactionLog redactionLog;
|
||||
RedactionLog mergedRedactionLog;
|
||||
|
||||
dictionaryService.updateDictionary(TEST_DOSSIER_TEMPLATE_ID, TEST_DOSSIER_ID);
|
||||
|
||||
try (var in = new ClassPathResource(filesPrefix + ".REDACTION_LOG.json").getInputStream()) {
|
||||
redactionLog = mapper.readValue(in, RedactionLog.class);
|
||||
}
|
||||
var manualChangesResource = new ClassPathResource(manualChangesFileName);
|
||||
ManualRedactions manualRedactions;
|
||||
if (manualChangesResource.exists()) {
|
||||
try (var in = manualChangesResource.getInputStream()) {
|
||||
manualRedactions = mapper.readValue(in, ManualRedactions.class);
|
||||
if (manualRedactions.getEntriesToAdd() == null) {
|
||||
manualRedactions.setEntriesToAdd(Collections.emptySet());
|
||||
}
|
||||
if (manualRedactions.getForceRedactions() == null) {
|
||||
manualRedactions.setForceRedactions(Collections.emptySet());
|
||||
}
|
||||
if (manualRedactions.getIdsToRemove() == null) {
|
||||
manualRedactions.setIdsToRemove(Collections.emptySet());
|
||||
}
|
||||
if (manualRedactions.getLegalBasisChanges() == null) {
|
||||
manualRedactions.setLegalBasisChanges(Collections.emptySet());
|
||||
}
|
||||
if (manualRedactions.getRecategorizations() == null) {
|
||||
manualRedactions.setRecategorizations(Collections.emptySet());
|
||||
}
|
||||
if (manualRedactions.getResizeRedactions() == null) {
|
||||
manualRedactions.setResizeRedactions(Collections.emptySet());
|
||||
}
|
||||
}
|
||||
// MigratedIds migratedIds = getMigratedIds(migratedIdsFileName);
|
||||
// revertMigration(manualRedactions, migratedIds);
|
||||
mergedRedactionLog = legacyRedactionLogMergeService.addManualAddEntriesAndRemoveSkippedImported(redactionLog, manualRedactions, TEST_DOSSIER_TEMPLATE_ID);
|
||||
} else {
|
||||
manualRedactions = new ManualRedactions();
|
||||
mergedRedactionLog = redactionLog;
|
||||
}
|
||||
|
||||
MigratedEntityLog migratedEntityLog = redactionLogToEntityLogMigrationService.migrate(mergedRedactionLog,
|
||||
document,
|
||||
TEST_DOSSIER_TEMPLATE_ID,
|
||||
manualRedactions,
|
||||
TEST_FILE_ID,
|
||||
Collections.emptySet(),
|
||||
false);
|
||||
|
||||
redactionStorageService.storeObject(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.ENTITY_LOG, migratedEntityLog.getEntityLog());
|
||||
AnnotateResponse annotateResponse = annotationService.annotate(AnnotateRequest.builder().dossierId(TEST_DOSSIER_ID).fileId(TEST_FILE_ID).build());
|
||||
File outputFile = Path.of(OsUtils.getTemporaryDirectory()).resolve(Path.of(fileName.replaceAll(".pdf", "_MIGRATED.pdf")).getFileName()).toFile();
|
||||
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) {
|
||||
fileOutputStream.write(annotateResponse.getDocument());
|
||||
}
|
||||
assertEquals(mergedRedactionLog.getRedactionLogEntry().size(), migratedEntityLog.getEntityLog().getEntityLogEntry().size());
|
||||
EntityLog entityLog = migratedEntityLog.getEntityLog();
|
||||
assertEquals(mergedRedactionLog.getAnalysisNumber(), entityLog.getAnalysisNumber());
|
||||
assertEquals(mergedRedactionLog.getAnalysisVersion(), entityLog.getAnalysisVersion());
|
||||
assertEquals(mergedRedactionLog.getDictionaryVersion(), entityLog.getDictionaryVersion());
|
||||
assertEquals(mergedRedactionLog.getDossierDictionaryVersion(), entityLog.getDossierDictionaryVersion());
|
||||
assertEquals(mergedRedactionLog.getLegalBasisVersion(), entityLog.getLegalBasisVersion());
|
||||
assertEquals(mergedRedactionLog.getRulesVersion(), entityLog.getRulesVersion());
|
||||
assertEquals(mergedRedactionLog.getLegalBasis().size(), entityLog.getLegalBasis().size());
|
||||
|
||||
Map<String, String> migratedIds = migratedEntityLog.getMigratedIds().buildOldToNewMapping();
|
||||
// assertEquals(legacyRedactionLogMergeService.getNumberOfAffectedAnnotations(manualRedactions), migratedIds.size());
|
||||
|
||||
migratedIds.forEach((oldId, newId) -> assertEntryIsEqual(oldId, newId, mergedRedactionLog, entityLog, migratedIds));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void revertMigration(ManualRedactions manualRedactions, MigratedIds migratedIds) {
|
||||
|
||||
var mapping = migratedIds.buildNewToOldMapping();
|
||||
manualRedactions.getEntriesToAdd()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
|
||||
manualRedactions.getRecategorizations()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
|
||||
manualRedactions.getResizeRedactions()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
|
||||
manualRedactions.getIdsToRemove()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
|
||||
manualRedactions.getLegalBasisChanges()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
|
||||
manualRedactions.getForceRedactions()
|
||||
.stream()
|
||||
.filter(e -> mapping.containsKey(e.getAnnotationId()))
|
||||
.forEach(e -> e.setAnnotationId(mapping.get(e.getAnnotationId())));
|
||||
}
|
||||
|
||||
|
||||
private MigratedIds getMigratedIds(String migratedIdsFileName) throws IOException {
|
||||
|
||||
var migratedIdsResource = new ClassPathResource(migratedIdsFileName);
|
||||
if (!migratedIdsResource.exists()) {
|
||||
return new MigratedIds();
|
||||
}
|
||||
try (var in = migratedIdsResource.getInputStream()) {
|
||||
return mapper.readValue(in, MigratedIds.class);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static boolean hasManualChanges(RedactionLogEntry entry) {
|
||||
|
||||
return !entry.getManualChanges().isEmpty() || (entry.getComments() != null && !entry.getComments().isEmpty());
|
||||
}
|
||||
|
||||
|
||||
private void assertEntryIsEqual(String oldId, String newId, RedactionLog redactionLog, EntityLog entityLog, Map<String, String> oldToNewMapping) {
|
||||
|
||||
RedactionLogEntry redactionLogEntry = redactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(entry -> entry.getId().equals(oldId))
|
||||
.findAny()
|
||||
.orElseThrow();
|
||||
EntityLogEntry entityLogEntry = entityLog.getEntityLogEntry()
|
||||
.stream()
|
||||
.filter(entry -> entry.getId().equals(newId))
|
||||
.findAny()
|
||||
.orElseThrow();
|
||||
|
||||
if (!redactionLogEntry.isImage()) {
|
||||
assertEquals(redactionLogEntry.getValue().toLowerCase(Locale.ENGLISH), entityLogEntry.getValue().toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
if (entityLogEntry.getManualChanges()
|
||||
.stream()
|
||||
.noneMatch(mc -> mc.getManualRedactionType().equals(ManualRedactionType.RECATEGORIZE))) {
|
||||
assertEquals(redactionLogEntry.getType(), entityLogEntry.getType());
|
||||
}
|
||||
assertEquals(redactionLogEntry.getChanges().size(), entityLogEntry.getChanges().size());
|
||||
assertTrue(redactionLogEntry.getManualChanges().size() <= entityLogEntry.getManualChanges().size());
|
||||
assertEquals(redactionLogEntry.getPositions().size(), entityLogEntry.getPositions().size());
|
||||
if (entityLogEntry.getManualChanges()
|
||||
.stream()
|
||||
.noneMatch(mc -> mc.getManualRedactionType().equals(ManualRedactionType.RESIZE) || mc.getManualRedactionType().equals(ManualRedactionType.RESIZE_IN_DICTIONARY))) {
|
||||
assertTrue(positionsAlmostEqual(redactionLogEntry.getPositions(), entityLogEntry.getPositions()));
|
||||
}
|
||||
if (entityLogEntry.getManualChanges()
|
||||
.stream()
|
||||
.noneMatch(mc -> mc.getManualRedactionType().equals(ManualRedactionType.FORCE))) {
|
||||
assertEqualsNullSafe(redactionLogEntry.getLegalBasis(), entityLogEntry.getLegalBasis());
|
||||
}
|
||||
assertReferencesEqual(redactionLogEntry.getReference(), entityLogEntry.getReference(), oldToNewMapping);
|
||||
assertEquals(redactionLogEntry.isDictionaryEntry(), entityLogEntry.isDictionaryEntry());
|
||||
assertEquals(redactionLogEntry.isDossierDictionaryEntry(), entityLogEntry.isDossierDictionaryEntry());
|
||||
if (redactionLogEntry.getEngines() == null) {
|
||||
assertTrue(entityLogEntry.getEngines().isEmpty());
|
||||
} else {
|
||||
assertEquals(redactionLogEntry.getEngines()
|
||||
.stream()
|
||||
.map(Enum::name)
|
||||
.collect(Collectors.toSet()),
|
||||
entityLogEntry.getEngines()
|
||||
.stream()
|
||||
.map(Enum::name)
|
||||
.collect(Collectors.toSet()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private boolean positionsAlmostEqual(List<Rectangle> positions1, List<Position> positions2) {
|
||||
|
||||
double tolerance = 10;
|
||||
double averageDistance = 0;
|
||||
for (int i = 0; i < positions1.size(); i++) {
|
||||
Rectangle r1 = positions1.get(i);
|
||||
Rectangle2D p1 = new Rectangle2D.Double(r1.getTopLeft().getX(), r1.getTopLeft().getY(), r1.getWidth(), r1.getHeight());
|
||||
Position p2 = positions2.get(i);
|
||||
double distance = EntityFindingUtility.calculateDistance(p1, p2.toRectangle2D());
|
||||
if (r1.getPage() != p2.getPageNumber()) {
|
||||
return false;
|
||||
}
|
||||
averageDistance += distance;
|
||||
}
|
||||
|
||||
averageDistance /= positions1.size();
|
||||
|
||||
return averageDistance <= tolerance;
|
||||
}
|
||||
|
||||
|
||||
private void assertEqualsNullSafe(String string1, String string2) {
|
||||
|
||||
if (Objects.isNull(string1) && Objects.isNull(string2)) {
|
||||
assertEquals(string1, string2);
|
||||
} else if (Objects.isNull(string1)) {
|
||||
assertEquals("", string2);
|
||||
} else if (Objects.isNull(string2)) {
|
||||
assertEquals("", string1);
|
||||
} else {
|
||||
assertEquals(string1, string2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void assertReferencesEqual(Set<String> reference, Set<String> reference1, Map<String, String> oldToNewMapping) {
|
||||
|
||||
if (reference == null) {
|
||||
assertTrue(reference1.isEmpty());
|
||||
return;
|
||||
}
|
||||
|
||||
assertEquals(reference.stream()
|
||||
.map(oldToNewMapping::get)
|
||||
.collect(Collectors.toSet()), reference1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,940 +0,0 @@
|
||||
package com.iqser.red.service.redaction.v1.server;
|
||||
|
||||
import static java.util.Map.entry;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.math.BigInteger;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.DirectoryStream;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.security.MessageDigest;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.kie.api.KieServices;
|
||||
import org.kie.api.builder.KieBuilder;
|
||||
import org.kie.api.builder.KieFileSystem;
|
||||
import org.kie.api.builder.KieModule;
|
||||
import org.kie.api.runtime.KieContainer;
|
||||
import org.springframework.amqp.rabbit.core.RabbitAdmin;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import com.iqser.red.commons.jackson.ObjectMapperFactory;
|
||||
import com.iqser.red.service.dictionarymerge.commons.DictionaryEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLog;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogLegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Position;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.Colors;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.Engine;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.server.client.DictionaryClient;
|
||||
import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient;
|
||||
import com.iqser.red.service.redaction.v1.server.client.RulesClient;
|
||||
import com.iqser.red.service.redaction.v1.server.controller.RedactionController;
|
||||
import com.iqser.red.service.redaction.v1.server.service.AnalyzeService;
|
||||
import com.iqser.red.service.redaction.v1.server.service.websocket.RedisSyncedWebSocketService;
|
||||
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
|
||||
import com.iqser.red.service.redaction.v1.server.utils.LayoutParsingRequestProvider;
|
||||
import com.iqser.red.service.redaction.v1.server.utils.ResourceLoader;
|
||||
import com.iqser.red.service.redaction.v1.server.utils.TextNormalizationUtilities;
|
||||
import com.iqser.red.storage.commons.StorageAutoConfiguration;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import com.iqser.red.storage.commons.utils.FileSystemBackedStorageService;
|
||||
import com.knecon.fforesight.keycloakcommons.security.TenantAuthenticationManagerResolver;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingFinishedEvent;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
import com.knecon.fforesight.service.layoutparser.processor.LayoutParsingPipeline;
|
||||
import com.knecon.fforesight.service.layoutparser.processor.LayoutParsingServiceProcessorConfiguration;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
import com.knecon.fforesight.tenantcommons.TenantsClient;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
@Import(RulesTest.RulesTestConfiguration.class)
|
||||
public class RulesTest {
|
||||
|
||||
private static final String RULES_PATH = "drools/rules.drl";
|
||||
private static final String RULES = loadFromClassPath(RULES_PATH);
|
||||
private static final String VERTEBRATE = "vertebrate";
|
||||
private static final String ADDRESS = "CBI_address";
|
||||
private static final String AUTHOR = "CBI_author";
|
||||
private static final String SPONSOR = "CBI_sponsor";
|
||||
private static final String NO_REDACTION_INDICATOR = "no_redaction_indicator";
|
||||
private static final String REDACTION_INDICATOR = "redaction_indicator";
|
||||
private static final String HINT_ONLY = "hint_only";
|
||||
private static final String MUST_REDACT = "must_redact";
|
||||
private static final String PUBLISHED_INFORMATION = "published_information";
|
||||
private static final String TEST_METHOD = "test_method";
|
||||
private static final String PURITY = "purity";
|
||||
private static final String IMAGE = "image";
|
||||
private static final String LOGO = "logo";
|
||||
private static final String SIGNATURE = "signature";
|
||||
private static final String FORMULA = "formula";
|
||||
private static final String OCR = "ocr";
|
||||
private static final String DOSSIER_REDACTIONS = "dossier_redactions";
|
||||
private static final String IMPORTED_REDACTION = "imported_redaction";
|
||||
private static final String PII = "PII";
|
||||
private static final String RESOURCES_PATH = "src/test/resources/";
|
||||
private static final String REDACTION_LOG_PATH = "RedactionLog/";
|
||||
private static final String REDACTION_LOG_RESOURCES_PATH = RESOURCES_PATH + REDACTION_LOG_PATH;
|
||||
private final static String TEST_DOSSIER_TEMPLATE_ID = "123";
|
||||
private final static String TEST_DOSSIER_ID = "123";
|
||||
private String TEST_FILE_ID = "123";
|
||||
private int counter;
|
||||
private int fileSize;
|
||||
private final Map<String, List<String>> dictionary = new HashMap<>();
|
||||
private final Map<String, List<String>> dossierDictionary = new HashMap<>();
|
||||
private final Map<String, List<String>> falsePositive = new HashMap<>();
|
||||
private static final Map<String, String> typeColorMap = Map.ofEntries(entry(VERTEBRATE, "#ff85f7"),
|
||||
entry(ADDRESS, "#ffe187"),
|
||||
entry(AUTHOR, "#ffe187"),
|
||||
entry(SPONSOR, "#85ebff"),
|
||||
entry(NO_REDACTION_INDICATOR, "#be85ff"),
|
||||
entry(REDACTION_INDICATOR, "#caff85"),
|
||||
entry(HINT_ONLY, "#abc0c4"),
|
||||
entry(MUST_REDACT, "#fab4c0"),
|
||||
entry(PUBLISHED_INFORMATION, "#85ebff"),
|
||||
entry(TEST_METHOD, "#91fae8"),
|
||||
entry(PII, "#66ccff"),
|
||||
entry(PURITY, "#ffe187"),
|
||||
entry(IMAGE, "#fcc5fb"),
|
||||
entry(OCR, "#fcc5fb"),
|
||||
entry(LOGO, "#ffe187"),
|
||||
entry(FORMULA, "#ffe187"),
|
||||
entry(SIGNATURE, "#ffe187"),
|
||||
entry(IMPORTED_REDACTION, "#fcfbe6"));
|
||||
private static final Map<String, Boolean> hintTypeMap = Map.ofEntries(entry(VERTEBRATE, true),
|
||||
entry(ADDRESS, false),
|
||||
entry(AUTHOR, false),
|
||||
entry(SPONSOR, false),
|
||||
entry(NO_REDACTION_INDICATOR, true),
|
||||
entry(REDACTION_INDICATOR, true),
|
||||
entry(HINT_ONLY, true),
|
||||
entry(MUST_REDACT, true),
|
||||
entry(PUBLISHED_INFORMATION, true),
|
||||
entry(TEST_METHOD, true),
|
||||
entry(PII, false),
|
||||
entry(PURITY, false),
|
||||
entry(IMAGE, true),
|
||||
entry(OCR, true),
|
||||
entry(FORMULA, false),
|
||||
entry(LOGO, false),
|
||||
entry(SIGNATURE, false),
|
||||
entry(DOSSIER_REDACTIONS, false),
|
||||
entry(IMPORTED_REDACTION, false));
|
||||
private static final Map<String, Boolean> caseInSensitiveMap = Map.ofEntries(entry(VERTEBRATE, true),
|
||||
entry(ADDRESS, false),
|
||||
entry(AUTHOR, false),
|
||||
entry(SPONSOR, false),
|
||||
entry(NO_REDACTION_INDICATOR, true),
|
||||
entry(REDACTION_INDICATOR, true),
|
||||
entry(HINT_ONLY, true),
|
||||
entry(MUST_REDACT, true),
|
||||
entry(PUBLISHED_INFORMATION, true),
|
||||
entry(TEST_METHOD, false),
|
||||
entry(PII, false),
|
||||
entry(PURITY, false),
|
||||
entry(IMAGE, true),
|
||||
entry(OCR, true),
|
||||
entry(SIGNATURE, true),
|
||||
entry(LOGO, true),
|
||||
entry(FORMULA, true),
|
||||
entry(DOSSIER_REDACTIONS, false),
|
||||
entry(IMPORTED_REDACTION, false));
|
||||
private static final Map<String, Boolean> recommendationTypeMap = Map.ofEntries(entry(VERTEBRATE, false),
|
||||
entry(ADDRESS, false),
|
||||
entry(AUTHOR, false),
|
||||
entry(SPONSOR, false),
|
||||
entry(NO_REDACTION_INDICATOR, false),
|
||||
entry(REDACTION_INDICATOR, false),
|
||||
entry(HINT_ONLY, false),
|
||||
entry(MUST_REDACT, false),
|
||||
entry(PUBLISHED_INFORMATION, false),
|
||||
entry(TEST_METHOD, false),
|
||||
entry(PII, false),
|
||||
entry(PURITY, false),
|
||||
entry(IMAGE, false),
|
||||
entry(OCR, false),
|
||||
entry(FORMULA, false),
|
||||
entry(SIGNATURE, false),
|
||||
entry(LOGO, false),
|
||||
entry(DOSSIER_REDACTIONS, false),
|
||||
entry(IMPORTED_REDACTION, false));
|
||||
private static final Map<String, Integer> rankTypeMap = Map.ofEntries(entry(PURITY, 155),
|
||||
entry(PII, 150),
|
||||
entry(ADDRESS, 140),
|
||||
entry(AUTHOR, 130),
|
||||
entry(SPONSOR, 120),
|
||||
entry(VERTEBRATE, 110),
|
||||
entry(MUST_REDACT, 100),
|
||||
entry(REDACTION_INDICATOR, 90),
|
||||
entry(NO_REDACTION_INDICATOR, 80),
|
||||
entry(PUBLISHED_INFORMATION, 70),
|
||||
entry(TEST_METHOD, 60),
|
||||
entry(HINT_ONLY, 50),
|
||||
entry(IMAGE, 30),
|
||||
entry(OCR, 29),
|
||||
entry(LOGO, 28),
|
||||
entry(SIGNATURE, 27),
|
||||
entry(FORMULA, 26),
|
||||
entry(DOSSIER_REDACTIONS, 200),
|
||||
entry(IMPORTED_REDACTION, 200));
|
||||
private final Colors colors = new Colors();
|
||||
|
||||
@Autowired
|
||||
private RedactionController redactionController;
|
||||
@Autowired
|
||||
private AnalyzeService analyzeService;
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
@MockBean
|
||||
private RulesClient rulesClient;
|
||||
@MockBean
|
||||
private DictionaryClient dictionaryClient;
|
||||
@Autowired
|
||||
private RedactionStorageService redactionStorageService;
|
||||
@Autowired
|
||||
private LayoutParsingPipeline layoutParsingPipeline;
|
||||
@Autowired
|
||||
private StorageService storageService;
|
||||
@MockBean
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
@MockBean
|
||||
protected RabbitAdmin rabbitAdmin;
|
||||
@MockBean
|
||||
protected RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;
|
||||
@MockBean
|
||||
private LegalBasisClient legalBasisClient;
|
||||
@MockBean
|
||||
private TenantsClient tenantsClient;
|
||||
@MockBean
|
||||
private TenantAuthenticationManagerResolver tenantAuthenticationManagerResolver;
|
||||
@MockBean
|
||||
private RedisSyncedWebSocketService redisSyncedWebSocketService;
|
||||
@MockBean
|
||||
private RedisMessageListenerContainer redisPubsubContainer;
|
||||
|
||||
|
||||
@BeforeEach
|
||||
public void stubClients() {
|
||||
|
||||
TenantContext.setTenantId("redaction");
|
||||
objectMapper.registerModule(new JavaTimeModule());
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
|
||||
when(rulesClient.getVersion(TEST_DOSSIER_TEMPLATE_ID, RuleFileType.ENTITY)).thenReturn(System.currentTimeMillis());
|
||||
when(rulesClient.getRules(TEST_DOSSIER_TEMPLATE_ID, RuleFileType.ENTITY)).thenReturn(JSONPrimitive.of(RULES));
|
||||
when(rulesClient.getVersion(TEST_DOSSIER_TEMPLATE_ID, RuleFileType.COMPONENT)).thenReturn(-1L);
|
||||
|
||||
loadDictionaryForTest();
|
||||
loadTypeForTest();
|
||||
when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L);
|
||||
when(dictionaryClient.getAllTypesForDossierTemplate(TEST_DOSSIER_TEMPLATE_ID, anyLong(), false)).thenReturn(getTemplateDictionaryTypeResponse());
|
||||
|
||||
when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L);
|
||||
when(dictionaryClient.getAllTypesForDossier(TEST_DOSSIER_ID, anyLong(), false)).thenReturn(getDossierDictionaryTypeResponse());
|
||||
|
||||
mockDictionaryCalls(null);
|
||||
mockDictionaryCalls(0L);
|
||||
|
||||
when(dictionaryClient.getColors(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(colors);
|
||||
}
|
||||
|
||||
|
||||
@AfterEach
|
||||
public void cleanupStorage() {
|
||||
|
||||
if (this.storageService instanceof FileSystemBackedStorageService) {
|
||||
((FileSystemBackedStorageService) this.storageService).clearStorage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates RedactionLog for given file and saves it here: REDACTION_LOG_PATH.
|
||||
* If the RedactionLog already exists, it will be overwritten
|
||||
* Test is ignored, because it's for manual tests.
|
||||
*/
|
||||
@Disabled
|
||||
@Test
|
||||
public void generateRedactionLogForOneFile() {
|
||||
|
||||
String fileName = "files/syngenta/CustomerFiles/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
|
||||
fileSize = 1;
|
||||
generateAndSaveRedactionLog(fileName, true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates RedactionLog for all files and saves it here: REDACTION_LOG_PATH.
|
||||
* If a RedactionLog already exists, the generating for this will be skipped
|
||||
* Please commit generated files, if not the following tests will fail
|
||||
*/
|
||||
@Disabled
|
||||
@Test
|
||||
public void generateRedactionLogForAllFiles() {
|
||||
|
||||
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
||||
System.out.println("Will generate RedactionLog for " + files.size() + " files.");
|
||||
fileSize = files.size();
|
||||
files.forEach(this::generateAndSaveRedactionLog);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Analyses file and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
|
||||
* If RedactionLog Json does not exist, test will fail.
|
||||
*/
|
||||
@Disabled
|
||||
@Test
|
||||
public void analyseFileAndCompareRedactionLog() {
|
||||
|
||||
String fileName = "files/syngenta/CustomerFiles/SYNGENTA_EFSA_sanitisation_GFL_v1_withHighlights.pdf";
|
||||
fileSize = 1;
|
||||
analyseFileAndCompareRedactionLog(fileName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Analyses all files and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
|
||||
* If RedactionLog Json for one file does not exist, whole test will fail.
|
||||
*/
|
||||
@EnabledIfSystemProperty(named = "test-groups", matches = "(.*)rules-test(.*)")
|
||||
@Disabled
|
||||
@Test
|
||||
public void analyseAllFilesAndCompareRedactionLogs() {
|
||||
|
||||
Set<String> fileNames = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
||||
System.out.println("Will analyse " + fileNames.size() + " files and compare its RedactionLogs.");
|
||||
fileSize = fileNames.size();
|
||||
|
||||
Map<String, AssertionError> failedFiles = new HashMap<>();
|
||||
|
||||
for (String fileName : fileNames) {
|
||||
|
||||
try {
|
||||
analyseFileAndCompareRedactionLog(fileName);
|
||||
} catch (AssertionError assertionError) {
|
||||
failedFiles.put(fileName, assertionError);
|
||||
}
|
||||
}
|
||||
|
||||
if (!failedFiles.isEmpty()) {
|
||||
log.warn("WARNING: {} files from {} failed", failedFiles.size(), fileSize);
|
||||
for (String fileName : failedFiles.keySet()) {
|
||||
log.warn(" - '{}' failed with Error: {} See line {} in {}",
|
||||
fileName,
|
||||
failedFiles.get(fileName),
|
||||
failedFiles.get(fileName).getStackTrace()[0].getLineNumber(),
|
||||
failedFiles.get(fileName).getStackTrace()[0].getClassName());
|
||||
}
|
||||
}
|
||||
|
||||
assertThat(failedFiles).isEmpty();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void generateAndSaveRedactionLog(String fileName) {
|
||||
|
||||
generateAndSaveRedactionLog(fileName, false);
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private void generateAndSaveRedactionLog(String fileName, boolean force) {
|
||||
|
||||
counter++;
|
||||
if (!force && doesRedactionLogExist(fileName)) {
|
||||
System.out.println("(" + counter + "/" + fileSize + ") Skip generating RedactionLog as Json for " + fileName + " because it already exists.");
|
||||
|
||||
} else {
|
||||
generateTestFileId(fileName);
|
||||
|
||||
System.out.println("(" + counter + "/" + fileSize + ") Generate RedactionLog as Json for " + fileName + " with fileId " + TEST_FILE_ID);
|
||||
|
||||
loadNerForTest();
|
||||
|
||||
AnalyzeRequest request = prepareStorage(fileName);
|
||||
|
||||
analyzeService.analyze(request);
|
||||
|
||||
RedactionLog redactionLog = redactionStorageService.getRedactionLog(TEST_DOSSIER_ID, TEST_FILE_ID);
|
||||
|
||||
saveRedactionLogAsJson(redactionLog, fileName);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
public void analyseFileAndCompareRedactionLog(String fileName) {
|
||||
|
||||
counter++;
|
||||
generateTestFileId(fileName);
|
||||
System.out.println("(" + counter + "/" + fileSize + ") Analyse " + fileName + " with fileId " + TEST_FILE_ID + " and compare it with its saved RedactionLog");
|
||||
|
||||
RedactionLog savedRedactionLog = loadSavedRedactionLog(fileName);
|
||||
|
||||
loadNerForTest();
|
||||
|
||||
AnalyzeRequest request = prepareStorage(fileName);
|
||||
analyzeDocumentStructure(LayoutParsingType.REDACT_MANAGER);
|
||||
analyzeService.analyze(request);
|
||||
|
||||
EntityLog entityLog = redactionStorageService.getEntityLog(TEST_DOSSIER_ID, TEST_FILE_ID);
|
||||
|
||||
// All timestamps are ignored, because they are for sure different
|
||||
assertThat(entityLog.getAnalysisVersion()).isEqualTo(savedRedactionLog.getAnalysisVersion());
|
||||
assertThat(entityLog.getAnalysisNumber()).isEqualTo(savedRedactionLog.getAnalysisNumber());
|
||||
assertThat(entityLog.getDictionaryVersion()).isEqualTo(savedRedactionLog.getDictionaryVersion());
|
||||
assertThat(entityLog.getDossierDictionaryVersion()).isEqualTo(savedRedactionLog.getDossierDictionaryVersion());
|
||||
assertThat(entityLog.getRulesVersion()).isEqualTo(savedRedactionLog.getRulesVersion());
|
||||
assertThat(entityLog.getLegalBasisVersion()).isEqualTo(savedRedactionLog.getLegalBasisVersion());
|
||||
|
||||
assertThat(entityLog.getEntityLogEntry()
|
||||
.stream()
|
||||
.filter(r -> !r.getEntryType().equals(EntryType.FALSE_POSITIVE))
|
||||
.filter(r -> !r.getEntryType().equals(EntryType.FALSE_RECOMMENDATION))
|
||||
.collect(Collectors.toSet()).size()).isEqualTo(savedRedactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(r -> !r.isFalsePositive())
|
||||
.collect(Collectors.toSet()).size());
|
||||
assertThat(entityLog.getLegalBasis().size()).isEqualTo(savedRedactionLog.getLegalBasis().size());
|
||||
|
||||
for (EntityLogLegalBasis redactionLegalBasis : entityLog.getLegalBasis()) {
|
||||
var savedRedactionLegalBasis = savedRedactionLog.getLegalBasis()
|
||||
.stream()
|
||||
.filter(lb -> lb.getName().equalsIgnoreCase(redactionLegalBasis.getName()))
|
||||
.filter(lb -> lb.getDescription().equalsIgnoreCase(redactionLegalBasis.getDescription()))
|
||||
.filter(lb -> lb.getReason().equalsIgnoreCase(redactionLegalBasis.getReason()))
|
||||
.findFirst();
|
||||
assertThat(savedRedactionLegalBasis).isPresent();
|
||||
}
|
||||
|
||||
for (EntityLogEntry redactionLogEntry : entityLog.getEntityLogEntry()) {
|
||||
var savedRedactionLogEntry = savedRedactionLog.getRedactionLogEntry()
|
||||
.stream()
|
||||
.filter(r -> r.getId().equalsIgnoreCase(redactionLogEntry.getId()))
|
||||
.findFirst();
|
||||
assertThat(savedRedactionLogEntry).isPresent();
|
||||
assertThat(savedRedactionLogEntry.get().getId()).isEqualTo(redactionLogEntry.getId());
|
||||
assertThat(savedRedactionLogEntry.get().getType()).isEqualTo(redactionLogEntry.getType());
|
||||
assertThat(savedRedactionLogEntry.get().getValue()).isEqualTo(redactionLogEntry.getValue());
|
||||
assertThat(savedRedactionLogEntry.get().getReason()).isEqualTo(redactionLogEntry.getReason());
|
||||
assertThat(savedRedactionLogEntry.get().getMatchedRule()).isEqualTo(redactionLogEntry.getMatchedRule());
|
||||
assertThat(savedRedactionLogEntry.get().getLegalBasis()).isEqualTo(redactionLogEntry.getLegalBasis());
|
||||
assertThat(savedRedactionLogEntry.get().isImported()).isEqualTo(redactionLogEntry.isImported());
|
||||
assertThat(savedRedactionLogEntry.get().isRedacted()).isEqualTo(redactionLogEntry.getState().equals(EntryState.APPLIED));
|
||||
assertThat(savedRedactionLogEntry.get().isHint()).isEqualTo(redactionLogEntry.getEntryType().equals(EntryType.HINT));
|
||||
assertThat(savedRedactionLogEntry.get().isRecommendation()).isEqualTo(redactionLogEntry.getEntryType().equals(EntryType.RECOMMENDATION));
|
||||
assertThat(savedRedactionLogEntry.get().isFalsePositive()).isEqualTo(redactionLogEntry.getEntryType().equals(EntryType.FALSE_POSITIVE));
|
||||
assertThat(savedRedactionLogEntry.get().getSection()).isEqualTo(redactionLogEntry.getSection());
|
||||
assertThat(savedRedactionLogEntry.get().getColor()).isEqualTo(redactionLogEntry.getColor());
|
||||
assertThat(savedRedactionLogEntry.get().getSectionNumber()).isEqualTo(redactionLogEntry.getContainingNodeId()
|
||||
.get(0));
|
||||
assertThat(savedRedactionLogEntry.get().getTextBefore()).isEqualTo(redactionLogEntry.getTextBefore());
|
||||
assertThat(savedRedactionLogEntry.get().getTextAfter()).isEqualTo(redactionLogEntry.getTextAfter());
|
||||
assertThat(savedRedactionLogEntry.get().getStartOffset()).isEqualTo(redactionLogEntry.getStartOffset());
|
||||
assertThat(savedRedactionLogEntry.get().getEndOffset()).isEqualTo(redactionLogEntry.getEndOffset());
|
||||
assertThat(savedRedactionLogEntry.get().isImage()).isEqualTo(redactionLogEntry.getEntryType().equals(EntryType.IMAGE));
|
||||
assertThat(savedRedactionLogEntry.get().isImageHasTransparency()).isEqualTo(redactionLogEntry.isImageHasTransparency());
|
||||
assertThat(savedRedactionLogEntry.get().isDictionaryEntry()).isEqualTo(redactionLogEntry.isDictionaryEntry());
|
||||
assertThat(savedRedactionLogEntry.get().isDossierDictionaryEntry()).isEqualTo(redactionLogEntry.isDossierDictionaryEntry());
|
||||
assertThat(savedRedactionLogEntry.get().isExcluded()).isEqualTo(redactionLogEntry.isExcluded());
|
||||
|
||||
for (Position position : redactionLogEntry.getPositions()) {
|
||||
var savedRectangle = savedRedactionLogEntry.get().getPositions()
|
||||
.stream()
|
||||
.filter(r -> r.getPage() == position.getPageNumber())
|
||||
.filter(r -> r.getTopLeft().getX() == position.x())
|
||||
.filter(r -> r.getTopLeft().getY() == position.y())
|
||||
.filter(r -> r.getHeight() == position.w())
|
||||
.filter(r -> r.getWidth() == position.h())
|
||||
.findFirst();
|
||||
assertThat(savedRectangle).isPresent();
|
||||
}
|
||||
|
||||
for (Change change : redactionLogEntry.getChanges()) {
|
||||
var savedChange = savedRedactionLogEntry.get().getChanges()
|
||||
.stream()
|
||||
.filter(c -> c.getAnalysisNumber() == change.getAnalysisNumber())
|
||||
.filter(c -> c.getType().name().equals(change.getType().name()))
|
||||
.findFirst();
|
||||
assertThat(savedChange).isPresent();
|
||||
}
|
||||
|
||||
for (ManualChange manualChange : redactionLogEntry.getManualChanges()) {
|
||||
var savedManualChange = savedRedactionLogEntry.get().getManualChanges()
|
||||
.stream()
|
||||
.filter(m -> m.getManualRedactionType().name().equals(manualChange.getManualRedactionType().name()))
|
||||
.filter(m -> m.getUserId().equalsIgnoreCase(manualChange.getUserId()))
|
||||
.filter(m -> m.getPropertyChanges() == manualChange.getPropertyChanges())
|
||||
.findFirst();
|
||||
assertThat(savedManualChange).isPresent();
|
||||
}
|
||||
|
||||
assertThat(savedRedactionLogEntry.get().getEngines()).containsExactlyInAnyOrder(redactionLogEntry.getEngines()
|
||||
.toArray(Engine[]::new));
|
||||
|
||||
assertThat(savedRedactionLogEntry.get().getReference()).containsAll(redactionLogEntry.getReference());
|
||||
assertThat(savedRedactionLogEntry.get().getImportedRedactionIntersections()).containsAll(redactionLogEntry.getImportedRedactionIntersections());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private boolean doesRedactionLogExist(String pdfFileName) {
|
||||
|
||||
File pdfFile = new File(pdfFileName);
|
||||
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
|
||||
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
||||
File file = new File(directory, fileName);
|
||||
return file.exists();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private void generateTestFileId(String fileName) {
|
||||
|
||||
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
||||
messageDigest.update(fileName.getBytes());
|
||||
TEST_FILE_ID = new BigInteger(1, messageDigest.digest()).toString(16);
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private void saveRedactionLogAsJson(RedactionLog redactionLog, String pdfFileName) {
|
||||
|
||||
File pdfFile = new File(pdfFileName);
|
||||
|
||||
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
|
||||
File dr = new File(directory);
|
||||
boolean created = dr.mkdirs();
|
||||
if (created) {
|
||||
System.out.println("Directory was created");
|
||||
}
|
||||
|
||||
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
||||
File file = new File(directory, fileName);
|
||||
|
||||
objectMapper.writeValue(file, redactionLog);
|
||||
|
||||
System.out.println("Saved RedactionLog for " + fileName + " here " + directory);
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private RedactionLog loadSavedRedactionLog(String pdfFileName) {
|
||||
|
||||
File pdfFile = new File(pdfFileName);
|
||||
String directory = cleanPath(pdfFile.getParentFile().getPath());
|
||||
if (StringUtils.contains(directory, RESOURCES_PATH)) {
|
||||
if (!StringUtils.endsWith(directory, "/")) {
|
||||
directory = directory + "/";
|
||||
}
|
||||
directory = directory + REDACTION_LOG_PATH;
|
||||
} else {
|
||||
if (StringUtils.startsWith(directory, "/")) {
|
||||
directory = StringUtils.substring(directory, 1);
|
||||
}
|
||||
directory = REDACTION_LOG_RESOURCES_PATH + directory;
|
||||
}
|
||||
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
||||
|
||||
File file = new File(directory, fileName);
|
||||
assertThat(file).exists();
|
||||
|
||||
return objectMapper.readValue(file, RedactionLog.class);
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private Set<String> getFileNames(Set<String> fileNames, Path dir) {
|
||||
|
||||
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
|
||||
for (Path path : stream) {
|
||||
if (path.toFile().isDirectory()) {
|
||||
getFileNames(fileNames, path);
|
||||
} else if (StringUtils.endsWith(path.toAbsolutePath().toString(), ".pdf")) {
|
||||
String absolutePath = cleanPath(path.toAbsolutePath().toString());
|
||||
int pos = StringUtils.indexOf(absolutePath, RESOURCES_PATH) + RESOURCES_PATH.length();
|
||||
|
||||
fileNames.add(StringUtils.substring(absolutePath, pos));
|
||||
}
|
||||
}
|
||||
}
|
||||
return fileNames;
|
||||
}
|
||||
|
||||
|
||||
private String cleanPath(String path) {
|
||||
|
||||
return StringUtils.replace(path, "\\", "/");
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private void loadNerForTest() {
|
||||
|
||||
ClassPathResource responseJson = new ClassPathResource("files/ner_response.json");
|
||||
storageService.storeObject(TenantContext.getTenantId(),
|
||||
RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.NER_ENTITIES),
|
||||
responseJson.getInputStream());
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private AnalyzeRequest prepareStorage(String file) {
|
||||
|
||||
ClassPathResource pdfFileResource = new ClassPathResource(file);
|
||||
|
||||
return prepareStorage(pdfFileResource.getInputStream());
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private AnalyzeRequest prepareStorage(InputStream stream) {
|
||||
|
||||
AnalyzeRequest request = AnalyzeRequest.builder()
|
||||
.dossierTemplateId(TEST_DOSSIER_TEMPLATE_ID)
|
||||
.dossierId(TEST_DOSSIER_ID)
|
||||
.fileId(TEST_FILE_ID)
|
||||
.lastProcessed(OffsetDateTime.now())
|
||||
.build();
|
||||
|
||||
storageService.storeObject(TenantContext.getTenantId(),
|
||||
RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.TABLES),
|
||||
new ClassPathResource("files/cv_service_empty_response.json").getInputStream());
|
||||
storageService.storeObject(TenantContext.getTenantId(), RedactionStorageService.StorageIdUtils.getStorageId(TEST_DOSSIER_ID, TEST_FILE_ID, FileType.ORIGIN), stream);
|
||||
|
||||
return request;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void loadDictionaryForTest() {
|
||||
|
||||
dictionary.computeIfAbsent(AUTHOR, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/CBI_author.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(SPONSOR, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/CBI_sponsor.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(VERTEBRATE, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/vertebrate.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(ADDRESS, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/CBI_address.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(NO_REDACTION_INDICATOR, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/no_redaction_indicator.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(REDACTION_INDICATOR, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/redaction_indicator.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(HINT_ONLY, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/hint_only.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(MUST_REDACT, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/must_redact.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(PUBLISHED_INFORMATION, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/published_information.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(TEST_METHOD, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/test_method.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(PII, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/PII.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(PURITY, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/purity.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(IMAGE, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/empty.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(OCR, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/empty.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(LOGO, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/empty.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(SIGNATURE, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/empty.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dictionary.computeIfAbsent(FORMULA, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/empty.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dossierDictionary.computeIfAbsent(DOSSIER_REDACTIONS, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/dossier_redactions.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
dossierDictionary.put(IMPORTED_REDACTION, new ArrayList<>());
|
||||
|
||||
falsePositive.computeIfAbsent(PII, v -> new ArrayList<>())
|
||||
.addAll(ResourceLoader.load("dictionaries/PII_false_positive.txt")
|
||||
.stream()
|
||||
.map(this::cleanDictionaryEntry)
|
||||
.collect(Collectors.toSet()));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void loadTypeForTest() {
|
||||
|
||||
colors.setSkippedColor("#cccccc");
|
||||
colors.setRequestAddColor("#04b093");
|
||||
colors.setRequestRemoveColor("#04b093");
|
||||
}
|
||||
|
||||
|
||||
protected List<Type> getTemplateDictionaryTypeResponse() {
|
||||
|
||||
return dictionary.keySet()
|
||||
.stream()
|
||||
.map(key -> Type.builder()
|
||||
.id(key + ":" + TEST_DOSSIER_TEMPLATE_ID)
|
||||
.type(key)
|
||||
.dossierTemplateId(TEST_DOSSIER_TEMPLATE_ID)
|
||||
.hexColor(typeColorMap.get(key))
|
||||
.isHint(hintTypeMap.get(key))
|
||||
.isCaseInsensitive(caseInSensitiveMap.get(key))
|
||||
.isRecommendation(recommendationTypeMap.get(key))
|
||||
.rank(rankTypeMap.get(key))
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected List<Type> getDossierDictionaryTypeResponse() {
|
||||
|
||||
return dossierDictionary.keySet()
|
||||
.stream()
|
||||
.map(key -> Type.builder()
|
||||
.id(key + ":" + TEST_DOSSIER_TEMPLATE_ID + ":" + TEST_DOSSIER_ID)
|
||||
.type(key)
|
||||
.dossierId(TEST_DOSSIER_ID)
|
||||
.dossierTemplateId(TEST_DOSSIER_TEMPLATE_ID)
|
||||
.hexColor(typeColorMap.get(key))
|
||||
.isHint(hintTypeMap.get(key))
|
||||
.isCaseInsensitive(caseInSensitiveMap.get(key))
|
||||
.isRecommendation(recommendationTypeMap.get(key))
|
||||
.rank(rankTypeMap.get(key))
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
private void mockDictionaryCalls(Long version) {
|
||||
|
||||
when(dictionaryClient.getDictionaryForType(VERTEBRATE + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(VERTEBRATE, false));
|
||||
when(dictionaryClient.getDictionaryForType(ADDRESS + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(ADDRESS, false));
|
||||
when(dictionaryClient.getDictionaryForType(AUTHOR + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(AUTHOR, false));
|
||||
when(dictionaryClient.getDictionaryForType(SPONSOR + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(SPONSOR, false));
|
||||
when(dictionaryClient.getDictionaryForType(NO_REDACTION_INDICATOR + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(NO_REDACTION_INDICATOR,
|
||||
false));
|
||||
when(dictionaryClient.getDictionaryForType(REDACTION_INDICATOR + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(REDACTION_INDICATOR, false));
|
||||
when(dictionaryClient.getDictionaryForType(HINT_ONLY + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(HINT_ONLY, false));
|
||||
when(dictionaryClient.getDictionaryForType(MUST_REDACT + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(MUST_REDACT, false));
|
||||
when(dictionaryClient.getDictionaryForType(PUBLISHED_INFORMATION + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(PUBLISHED_INFORMATION,
|
||||
false));
|
||||
when(dictionaryClient.getDictionaryForType(TEST_METHOD + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(TEST_METHOD, false));
|
||||
when(dictionaryClient.getDictionaryForType(PII + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(PII, false));
|
||||
when(dictionaryClient.getDictionaryForType(PURITY + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(PURITY, false));
|
||||
when(dictionaryClient.getDictionaryForType(IMAGE + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(IMAGE, false));
|
||||
when(dictionaryClient.getDictionaryForType(OCR + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(OCR, false));
|
||||
when(dictionaryClient.getDictionaryForType(LOGO + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(LOGO, false));
|
||||
when(dictionaryClient.getDictionaryForType(SIGNATURE + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(SIGNATURE, false));
|
||||
when(dictionaryClient.getDictionaryForType(FORMULA + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(FORMULA, false));
|
||||
when(dictionaryClient.getDictionaryForType(DOSSIER_REDACTIONS + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(DOSSIER_REDACTIONS, true));
|
||||
when(dictionaryClient.getDictionaryForType(IMPORTED_REDACTION + ":" + TEST_DOSSIER_TEMPLATE_ID, version)).thenReturn(getDictionaryResponse(IMPORTED_REDACTION, true));
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String cleanDictionaryEntry(String entry) {
|
||||
|
||||
return TextNormalizationUtilities.removeHyphenLineBreaks(entry).replaceAll("\\n", " ");
|
||||
}
|
||||
|
||||
|
||||
private Type getDictionaryResponse(String type, boolean isDossierDictionary) {
|
||||
|
||||
return Type.builder()
|
||||
.id(type + ":" + TEST_DOSSIER_TEMPLATE_ID)
|
||||
.hexColor(typeColorMap.get(type))
|
||||
.entries(isDossierDictionary ? toDictionaryEntry(dossierDictionary.get(type)) : toDictionaryEntry(dictionary.get(type)))
|
||||
.falsePositiveEntries(falsePositive.containsKey(type) ? toDictionaryEntry(falsePositive.get(type)) : new ArrayList<>())
|
||||
.falseRecommendationEntries(new ArrayList<>())
|
||||
.isHint(hintTypeMap.get(type))
|
||||
.isCaseInsensitive(caseInSensitiveMap.get(type))
|
||||
.isRecommendation(recommendationTypeMap.get(type))
|
||||
.rank(rankTypeMap.get(type))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
private List<DictionaryEntry> toDictionaryEntry(List<String> entries) {
|
||||
|
||||
List<DictionaryEntry> dictionaryEntries = new ArrayList<>();
|
||||
entries.forEach(entry -> dictionaryEntries.add(DictionaryEntry.builder().value(entry).version(0L).deleted(false).build()));
|
||||
return dictionaryEntries;
|
||||
}
|
||||
|
||||
|
||||
private static String loadFromClassPath(String path) {
|
||||
|
||||
URL resource = Thread.currentThread().getContextClassLoader().getResource(path);
|
||||
if (resource == null) {
|
||||
throw new IllegalArgumentException("could not load classpath resource: " + path);
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream(), StandardCharsets.UTF_8))) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String str;
|
||||
while ((str = br.readLine()) != null) {
|
||||
sb.append(str).append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException("could not load classpath resource: " + path, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
protected LayoutParsingFinishedEvent analyzeDocumentStructure(LayoutParsingType layoutParsingType) {
|
||||
|
||||
return layoutParsingPipeline.parseLayoutAndSaveFilesToStorage(LayoutParsingRequestProvider.build(layoutParsingType,
|
||||
AnalyzeRequest.builder()
|
||||
.dossierId(TEST_DOSSIER_ID)
|
||||
.fileId(TEST_FILE_ID)
|
||||
.build()));
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class})
|
||||
@Import(LayoutParsingServiceProcessorConfiguration.class)
|
||||
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StorageAutoConfiguration.class)})
|
||||
public static class RulesTestConfiguration {
|
||||
|
||||
@Bean
|
||||
public KieContainer kieContainer() {
|
||||
|
||||
KieServices kieServices = KieServices.Factory.get();
|
||||
|
||||
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
|
||||
InputStream input = new ByteArrayInputStream(RULES.getBytes(StandardCharsets.UTF_8));
|
||||
kieFileSystem.write(RESOURCES_PATH + RULES_PATH, kieServices.getResources().newInputStreamResource(input));
|
||||
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
|
||||
kieBuilder.buildAll();
|
||||
KieModule kieModule = kieBuilder.getKieModule();
|
||||
|
||||
return kieServices.newKieContainer(kieModule.getReleaseId());
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
public StorageService inmemoryStorage() {
|
||||
|
||||
return new FileSystemBackedStorageService(ObjectMapperFactory.create());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,533 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "96c1362cb4ea87461d8f5f141df1912a",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 379.96002
|
||||
},
|
||||
"width": 140.39014,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "60 51 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 295,
|
||||
"endOffset": 324,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.898746+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "74b528293158d5266ace1eaf9ee2ad80",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 60 51",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 181.48004
|
||||
},
|
||||
"width": 93.37213,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "Gardinal Telephone number: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 188,
|
||||
"endOffset": 208,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.898749+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d282cd8f02e2628c14342ed52d69c517",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6152",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 621.64
|
||||
},
|
||||
"width": 82.43994,
|
||||
"height": -11.520004,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Micheletti Telephone number: ",
|
||||
"textAfter": " E-mail: sebastien.micheletti@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 164,
|
||||
"endOffset": 181,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.898749+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "245cfd060d4fb078bb211fabfce6d470",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 156.16003
|
||||
},
|
||||
"width": 140.39014,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "60 51 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 217,
|
||||
"endOffset": 246,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.89875+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "67dc43606b8e1489a0594e5b779fa428",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 430.6
|
||||
},
|
||||
"width": 72.440186,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 231,
|
||||
"endOffset": 247,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.89875+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "de79428457282a0781a827b322b5732a",
|
||||
"type": "PII",
|
||||
"value": "sebastien.micheletti@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 595.77997
|
||||
},
|
||||
"width": 160.04922,
|
||||
"height": -10.980011,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "323 6152 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 190,
|
||||
"endOffset": 223,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.89875+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "41340ab190d66ca6dce0ba965ce95f59",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 206.80005
|
||||
},
|
||||
"width": 72.440186,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 153,
|
||||
"endOffset": 169,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.89875+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "02dd2efb100839e705cdcf6f3141d9d5",
|
||||
"type": "PII",
|
||||
"value": "Sebastien Micheletti",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 646.36005
|
||||
},
|
||||
"width": 90.21478,
|
||||
"height": -11.520004,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 125,
|
||||
"endOffset": 145,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.898751+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "530c4f47f0afc48432bd849a90918f41",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 60 51",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 405.28003
|
||||
},
|
||||
"width": 93.37213,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Gardinal Telephone number: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 266,
|
||||
"endOffset": 286,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:51.898751+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,359 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "88e1817fe7d45629df422ad3b229baf2",
|
||||
"type": "PII",
|
||||
"value": "Dr. Ralph Moray",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 534.4
|
||||
},
|
||||
"width": 75.60715,
|
||||
"height": -11.519989,
|
||||
"page": 6
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 592,
|
||||
"endOffset": 607,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593443+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3fe003adb69a87b0042049dc71ea72f0",
|
||||
"type": "PII",
|
||||
"value": "ralph.moray@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 21,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 483.93997
|
||||
},
|
||||
"width": 113.11069,
|
||||
"height": -10.980011,
|
||||
"page": 6
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "(61) 323 6155 ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 682,
|
||||
"endOffset": 706,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593445+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "932ba0c592edaec72916ecd08ad42ef6",
|
||||
"type": "PII",
|
||||
"value": "simon.baker@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 21,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 243.88
|
||||
},
|
||||
"width": 124.99863,
|
||||
"height": -11.52002,
|
||||
"page": 6
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "(0) 1344 416687 ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 275,
|
||||
"endOffset": 299,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593446+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "406a3e8f3f92349fe158d2a917cf0b89",
|
||||
"type": "PII",
|
||||
"value": "Simon Baker",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 307.24
|
||||
},
|
||||
"width": 57.690033,
|
||||
"height": -11.52002,
|
||||
"page": 6
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Basel Switzerland Contact: ",
|
||||
"textAfter": " Syngenta Jealott’s",
|
||||
"comments": [],
|
||||
"startOffset": 195,
|
||||
"endOffset": 206,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593446+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "79f32f495c640d2487a9b35ff87253dc",
|
||||
"type": "PII",
|
||||
"value": "simon.baker@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 21,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Location of the manufacturing site",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 597.4
|
||||
},
|
||||
"width": 124.99863,
|
||||
"height": -11.519989,
|
||||
"page": 7
|
||||
}
|
||||
],
|
||||
"sectionNumber": 11,
|
||||
"textBefore": "(0) 1344 416687 ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 329,
|
||||
"endOffset": 353,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593446+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "eb40fb06fea82e26719bd3ee7e3a5458",
|
||||
"type": "PII",
|
||||
"value": "Simon Baker",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Location of the manufacturing site",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 660.64
|
||||
},
|
||||
"width": 57.690033,
|
||||
"height": -11.520004,
|
||||
"page": 7
|
||||
}
|
||||
],
|
||||
"sectionNumber": 11,
|
||||
"textBefore": "Basel Switzerland Contact: ",
|
||||
"textAfter": " Syngenta Jealott’s",
|
||||
"comments": [],
|
||||
"startOffset": 249,
|
||||
"endOffset": 260,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:28.593446+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,533 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "ff8f5befc04b1ba96a31ccef08e9b77a",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 60 51",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 392.68002
|
||||
},
|
||||
"width": 93.37213,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Gardinal Telephone number: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 267,
|
||||
"endOffset": 287,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.188347+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d2538de31e20138cb5ac638282270a81",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 60 51",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 168.16003
|
||||
},
|
||||
"width": 93.37213,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "Gardinal Telephone number: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 188,
|
||||
"endOffset": 208,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.188349+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d282cd8f02e2628c14342ed52d69c517",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6152",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 621.64
|
||||
},
|
||||
"width": 82.43994,
|
||||
"height": -11.520004,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Micheletti Telephone number: ",
|
||||
"textAfter": " E-mail: sebastien.micheletti@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 164,
|
||||
"endOffset": 181,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.18835+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "351be36d35959ba2790f8a992648abec",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 142.84003
|
||||
},
|
||||
"width": 140.39014,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "60 51 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 217,
|
||||
"endOffset": 246,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.18835+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "005ef4dd889064926f1115b3c5ff4507",
|
||||
"type": "PII",
|
||||
"value": "sebastien.micheletti@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 289.68,
|
||||
"y": 583.77997
|
||||
},
|
||||
"width": 159.98096,
|
||||
"height": -10.980011,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "323 6152 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 190,
|
||||
"endOffset": 223,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.18835+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "20c954f89dcec245563987a4b66c3f2f",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Producer of the active substance: Cyprodinil",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 193.48004
|
||||
},
|
||||
"width": 72.440186,
|
||||
"height": -11.52002,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 153,
|
||||
"endOffset": 169,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.18835+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "02dd2efb100839e705cdcf6f3141d9d5",
|
||||
"type": "PII",
|
||||
"value": "Sebastien Micheletti",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 646.36005
|
||||
},
|
||||
"width": 90.21478,
|
||||
"height": -11.520004,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 125,
|
||||
"endOffset": 145,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.188351+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "72bfdb82afbf9a64dfd984e067dc8f8a",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 417.88
|
||||
},
|
||||
"width": 72.440186,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 232,
|
||||
"endOffset": 248,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.188351+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "77cdc533f6cfd47b227b4e0b71927bd7",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CP 1.2 Producer of the Plant Protection Product and the Active\nSubstances",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 367.36002
|
||||
},
|
||||
"width": 140.39014,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "60 51 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 296,
|
||||
"endOffset": 325,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:37.188351+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,127 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "12ac3d26ce82a77e469c64d56081662d",
|
||||
"type": "CBI_author",
|
||||
"value": "Micheletti S",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Table in: COPY OF THE APPLICATION FOR RENEWAL, MADE UNDER COMMISSION",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 214.8,
|
||||
"y": 651.16003
|
||||
},
|
||||
"width": 54.039078,
|
||||
"height": -11.520004,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Report: Document F/02, ",
|
||||
"textAfter": ". (2014). Cyprodinil",
|
||||
"comments": [],
|
||||
"startOffset": 23,
|
||||
"endOffset": 35,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:30.044122+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "dd614353319e7c5a8cf8b3346dc12fac",
|
||||
"type": "CBI_author",
|
||||
"value": "Micheletti S",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "COPY OF THE APPLICATION FOR RENEWAL, MADE UNDER COMMISSION",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 306.84,
|
||||
"y": 679.12
|
||||
},
|
||||
"width": 59.71997,
|
||||
"height": -12.0,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "F report (",
|
||||
"textAfter": "., 2014).",
|
||||
"comments": [],
|
||||
"startOffset": 247,
|
||||
"endOffset": 259,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:30.044134+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,359 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "98826bfb21f02ab246c1750fe89faa8c",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 396.28003
|
||||
},
|
||||
"width": 72.440186,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 157,
|
||||
"endOffset": 173,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.28637+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "f32886bd47c68bd52b5eca245f77ee9c",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 345.09998
|
||||
},
|
||||
"width": 140.03113,
|
||||
"height": -10.97998,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "323 6051 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 218,
|
||||
"endOffset": 247,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.286372+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d0c65364da169dea1463b4ed437892ff",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6152",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 597.04004
|
||||
},
|
||||
"width": 82.43994,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Micheletti Telephone number: ",
|
||||
"textAfter": " E-mail: sebastien.micheletti@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 164,
|
||||
"endOffset": 181,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.286373+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9ba7b45841c6089520236de607c7556b",
|
||||
"type": "PII",
|
||||
"value": "Sebastien Micheletti",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 621.64
|
||||
},
|
||||
"width": 90.21478,
|
||||
"height": -11.520004,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Basel; Switzerland Contact: ",
|
||||
"textAfter": " Telephone number:",
|
||||
"comments": [],
|
||||
"startOffset": 125,
|
||||
"endOffset": 145,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.286373+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "68a50e56cdd57e1875336ca4fbe3087a",
|
||||
"type": "PII",
|
||||
"value": "sebastien.micheletti@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 571.18
|
||||
},
|
||||
"width": 160.04922,
|
||||
"height": -10.980011,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "323 6152 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 190,
|
||||
"endOffset": 223,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.286373+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "a89504bfb8fb9c1de93976722b51c5ec",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6051",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.92,
|
||||
"y": 370.96002
|
||||
},
|
||||
"width": 82.43994,
|
||||
"height": -11.519989,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Gardinal Telephone number: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 192,
|
||||
"endOffset": 209,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.286374+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,417 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "cb9010d1ad02bb1522b748902bf1b245",
|
||||
"type": "PII",
|
||||
"value": "valerie.caer@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Footer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 214.74043,
|
||||
"y": 127.991455
|
||||
},
|
||||
"width": 124.20589,
|
||||
"height": -11.591187,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 36,
|
||||
"textBefore": "323 6155 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 114,
|
||||
"endOffset": 139,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.442196+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "b5679ad99669cdcb84f547ad7c5ff275",
|
||||
"type": "PII",
|
||||
"value": "Valerie Caer",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.1 Applicant",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 215.5113,
|
||||
"y": 178.45831
|
||||
},
|
||||
"width": 55.97383,
|
||||
"height": -12.077454,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Research Park Contact: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 136,
|
||||
"endOffset": 148,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.442199+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "e1fca50b477fa896d6a0da200febbb5a",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Limited",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "CA 1.1 Applicant",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 214.91939,
|
||||
"y": 253.03778
|
||||
},
|
||||
"width": 78.52232,
|
||||
"height": -12.077454,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "1.1 Applicant Name: ",
|
||||
"textAfter": " Address: Guildford,",
|
||||
"comments": [],
|
||||
"startOffset": 23,
|
||||
"endOffset": 39,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.4422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "dab6fbacddeb8d79e866c6b4641b37ea",
|
||||
"type": "PII",
|
||||
"value": "+44 (0) 1344 416687",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.9515,
|
||||
"y": 583.6385
|
||||
},
|
||||
"width": 93.32568,
|
||||
"height": -12.077423,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "414803 Fax number: ",
|
||||
"textAfter": " E-mail: simon.baker@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 198,
|
||||
"endOffset": 217,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.4422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9933ae2fc52b4b731ddb7c80642f72ae",
|
||||
"type": "PII",
|
||||
"value": "+44 (0) 1344 414803",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 287.01517,
|
||||
"y": 596.2984
|
||||
},
|
||||
"width": 93.308105,
|
||||
"height": -12.077423,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "UK Telephone number: ",
|
||||
"textAfter": " Fax number:",
|
||||
"comments": [],
|
||||
"startOffset": 166,
|
||||
"endOffset": 185,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.4422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "5945a59e63c12d4647b0deb20f4682b7",
|
||||
"type": "PII",
|
||||
"value": "simon.baker@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.91965,
|
||||
"y": 570.9786
|
||||
},
|
||||
"width": 125.01065,
|
||||
"height": -12.077423,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "1344 416687 E-mail: ",
|
||||
"textAfter": " Simon Baker",
|
||||
"comments": [],
|
||||
"startOffset": 226,
|
||||
"endOffset": 250,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.4422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3c2dc4190c2e6643ccd1913a98346aeb",
|
||||
"type": "CBI_author",
|
||||
"value": "Simon Baker",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "CA 1.2 Producer",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.99432,
|
||||
"y": 634.2178
|
||||
},
|
||||
"width": 57.703186,
|
||||
"height": -12.077423,
|
||||
"page": 5
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "416687 E-mail: simon.baker@syngenta.com ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 251,
|
||||
"endOffset": 262,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:24.4422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,475 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "027e744e97c8c1cecb974023f8792055",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6155",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 25,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1 Identity",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 147.86,
|
||||
"y": 541.1677
|
||||
},
|
||||
"width": 82.41362,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 14,
|
||||
"textBefore": "323 6358 Fax: ",
|
||||
"textAfter": " E-mail: regina.dorn@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 234,
|
||||
"endOffset": 251,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976573+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9ddda875972c0fbcda02ae551cd0d07a",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 60 51",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 25,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1.1.2 Producer of the plant protection product",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 148.94,
|
||||
"y": 339.5477
|
||||
},
|
||||
"width": 93.33217,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 15,
|
||||
"textBefore": "Basel Switzerland Phone: ",
|
||||
"textAfter": " Fax: +41",
|
||||
"comments": [],
|
||||
"startOffset": 221,
|
||||
"endOffset": 241,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976577+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d39269482f83c64453153826d8de0a5f",
|
||||
"type": "PII",
|
||||
"value": "Patrick Gardinal",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1.1.2 Producer of the plant protection product",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 148.94,
|
||||
"y": 415.4077
|
||||
},
|
||||
"width": 72.40033,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 15,
|
||||
"textBefore": "Basel Switzerland Contact: ",
|
||||
"textAfter": " Syngenta Crop",
|
||||
"comments": [],
|
||||
"startOffset": 129,
|
||||
"endOffset": 145,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976577+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9e289c70c17cb2b3bf7c96b070d44533",
|
||||
"type": "PII",
|
||||
"value": "patrick.gardinal@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1.1.2 Producer of the plant protection product",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 148.94,
|
||||
"y": 314.22772
|
||||
},
|
||||
"width": 140.26324,
|
||||
"height": -11.0177,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 15,
|
||||
"textBefore": "61 55 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 276,
|
||||
"endOffset": 305,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976578+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "ba922aabe15e334569dc06b212b3a15b",
|
||||
"type": "PII",
|
||||
"value": "regina.dorn@syngenta.com",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1 Identity",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 147.86,
|
||||
"y": 528.4477
|
||||
},
|
||||
"width": 121.451065,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 14,
|
||||
"textBefore": "323 6155 E-mail: ",
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 260,
|
||||
"endOffset": 284,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976578+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "86b754bc4e70f45038b465a66c0e927b",
|
||||
"type": "PII",
|
||||
"value": "Regina Dorn",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 23,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1 Identity",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 147.86,
|
||||
"y": 566.4877
|
||||
},
|
||||
"width": 56.624176,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 14,
|
||||
"textBefore": "Switzerland Contact point: ",
|
||||
"textAfter": " Phone: +41",
|
||||
"comments": [],
|
||||
"startOffset": 192,
|
||||
"endOffset": 203,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.976579+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "a022f9ecad5b06f9da7bc2ebdcc97c17",
|
||||
"type": "PII",
|
||||
"value": "+41 (0) 61 323 61 55",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 25,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1.1.2 Producer of the plant protection product",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 148.94,
|
||||
"y": 326.8277
|
||||
},
|
||||
"width": 93.33217,
|
||||
"height": -11.0177,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 15,
|
||||
"textBefore": "60 51 Fax: ",
|
||||
"textAfter": " E-mail: patrick.gardinal@syngenta.com",
|
||||
"comments": [],
|
||||
"startOffset": 247,
|
||||
"endOffset": 267,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.97658+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "b841bb2734863a14e95cb15efdf98172",
|
||||
"type": "PII",
|
||||
"value": "+41 (61) 323 6358",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 25,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(2) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "B.1 Identity",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 147.86,
|
||||
"y": 553.7677
|
||||
},
|
||||
"width": 82.41362,
|
||||
"height": -11.01767,
|
||||
"page": 4
|
||||
}
|
||||
],
|
||||
"sectionNumber": 14,
|
||||
"textBefore": "Regina Dorn Phone: ",
|
||||
"textAfter": " Fax: +41",
|
||||
"comments": [],
|
||||
"startOffset": 211,
|
||||
"endOffset": 228,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:35:51.97658+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,243 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "36a5e8909a18a5080dd423afb8efd7a7",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 171.20801,
|
||||
"y": 320.0
|
||||
},
|
||||
"width": -12.208008,
|
||||
"height": -20.99997,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Product Metabolism and ",
|
||||
"textAfter": " 1 of",
|
||||
"comments": [],
|
||||
"startOffset": 368,
|
||||
"endOffset": 372,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.751956+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "dca119c3aadd348bc43c0b700c0075c3",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 112.20801,
|
||||
"y": 81.0
|
||||
},
|
||||
"width": -12.208008,
|
||||
"height": -21.0,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Pages RAM 465/02 ",
|
||||
"textAfter": " 1 Tel:",
|
||||
"comments": [],
|
||||
"startOffset": 399,
|
||||
"endOffset": 403,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.751958+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "ef6e0f0ed413dbd7299d992d9a50840b",
|
||||
"type": "CBI_author",
|
||||
"value": "Crook",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 386.5152,
|
||||
"y": 389.0
|
||||
},
|
||||
"width": -12.515198,
|
||||
"height": -26.024994,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "Author : SJ ",
|
||||
"textAfter": " Analytical Science",
|
||||
"comments": [],
|
||||
"startOffset": 12,
|
||||
"endOffset": 17,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.751958+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "0fac36714dd9d1c745565c6dfe06b9b7",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 514.14215,
|
||||
"y": 59.532837
|
||||
},
|
||||
"width": 23.39972,
|
||||
"height": -11.591187,
|
||||
"page": 2
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "RAM 465/02 ",
|
||||
"textAfter": " 2 Summary",
|
||||
"comments": [],
|
||||
"startOffset": 11,
|
||||
"endOffset": 15,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.751958+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "71770acab1fa63f46c026966890b5231",
|
||||
"type": "vertebrate",
|
||||
"value": "rabbit",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 64.69628,
|
||||
"y": 537.62
|
||||
},
|
||||
"width": 13.043676,
|
||||
"height": 34.858643,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 41,
|
||||
"endOffset": 47,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:39:04.328602+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,493 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "a87c52638176ce68b897930b7578b695",
|
||||
"type": "CBI_author",
|
||||
"value": "Aldershof S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 72.84,
|
||||
"y": 380.13998
|
||||
},
|
||||
"width": 50.35881,
|
||||
"height": -10.979996,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 0,
|
||||
"endOffset": 12,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003941+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d09584fe1ba290a52db6ead30071043d",
|
||||
"type": "CBI_author",
|
||||
"value": "Aldershof S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 72.84,
|
||||
"y": 237.69998
|
||||
},
|
||||
"width": 50.35881,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 0,
|
||||
"endOffset": 12,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003943+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "695037ece0212bd42d90f12e2a638e3e",
|
||||
"type": "CBI_author",
|
||||
"value": "Perez",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 349.44,
|
||||
"y": 345.58
|
||||
},
|
||||
"width": 22.18515,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "Aphidius rhopalosiphi (DeStefani-",
|
||||
"textAfter": ") determined in",
|
||||
"comments": [],
|
||||
"startOffset": 173,
|
||||
"endOffset": 178,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003943+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "aeb8beab16f76b0acff1548b3f1280ce",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 322.65997
|
||||
},
|
||||
"width": 147.19922,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 311.13998
|
||||
},
|
||||
"width": 47.57898,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "study on apple ",
|
||||
"textAfter": " MITOX Consultants,",
|
||||
"comments": [],
|
||||
"startOffset": 222,
|
||||
"endOffset": 269,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003944+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3dfc5df9d185b3cc679eaea4ecf476aa",
|
||||
"type": "CBI_address",
|
||||
"value": "MITOX Consultants, Amsterdam, Netherlands",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 299.62
|
||||
},
|
||||
"width": 187.28989,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", NO16ARS GLP",
|
||||
"comments": [],
|
||||
"startOffset": 270,
|
||||
"endOffset": 311,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003944+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "b35a823e28227f364d720c5742ac4d46",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 191.62
|
||||
},
|
||||
"width": 147.19922,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 180.09998
|
||||
},
|
||||
"width": 47.57898,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "study on apple ",
|
||||
"textAfter": " MITOX Consultants,",
|
||||
"comments": [],
|
||||
"startOffset": 214,
|
||||
"endOffset": 261,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003944+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "bff56812bcfa65e57e49d4cdd3437ada",
|
||||
"type": "CBI_address",
|
||||
"value": "MITOX Consultants, Amsterdam, Netherlands",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 168.69998
|
||||
},
|
||||
"width": 187.28989,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", NO170LS GLP",
|
||||
"comments": [],
|
||||
"startOffset": 262,
|
||||
"endOffset": 303,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003945+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "6fc125f517cd8a4c7871f4166b9afb30",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 739.2,
|
||||
"y": 548.74
|
||||
},
|
||||
"width": 18.731384,
|
||||
"height": -10.02,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Regulation 284/2013 A8637C ",
|
||||
"textAfter": " 17 L-CP",
|
||||
"comments": [],
|
||||
"startOffset": 36,
|
||||
"endOffset": 40,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:42:55.003945+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,359 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "ee44114c522560e163029f204f57dc04",
|
||||
"type": "CBI_author",
|
||||
"value": "Doe",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 144.44644,
|
||||
"y": 771.264
|
||||
},
|
||||
"width": 19.68602,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "F. Lastname, J. ",
|
||||
"textAfter": ", M. Mustermann",
|
||||
"comments": [],
|
||||
"startOffset": 16,
|
||||
"endOffset": 19,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.73552+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3661591e5ebd925d9e724e80673c923d",
|
||||
"type": "CBI_author",
|
||||
"value": "Lastname",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 70.80005,
|
||||
"y": 756.62396
|
||||
},
|
||||
"width": 47.1204,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Doe, M. Mustermann ",
|
||||
"textAfter": " M., Doe",
|
||||
"comments": [],
|
||||
"startOffset": 35,
|
||||
"endOffset": 43,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.735522+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "85030e031f06df49e8d346bea9ee2151",
|
||||
"type": "CBI_author",
|
||||
"value": "M. Mustermann",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 169.83484,
|
||||
"y": 771.264
|
||||
},
|
||||
"width": 79.37312,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Lastname, J. Doe, ",
|
||||
"textAfter": " Lastname M.,",
|
||||
"comments": [],
|
||||
"startOffset": 21,
|
||||
"endOffset": 34,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.735522+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c951ad346e940b15facd604897b5e504",
|
||||
"type": "CBI_author",
|
||||
"value": "Doe J.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 139.62485,
|
||||
"y": 756.62396
|
||||
},
|
||||
"width": 29.243988,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Mustermann Lastname M., ",
|
||||
"textAfter": ", Mustermann M.",
|
||||
"comments": [],
|
||||
"startOffset": 48,
|
||||
"endOffset": 54,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.735522+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "fac98ecf00e7a93e3b4f6a8326fa8f50",
|
||||
"type": "CBI_author",
|
||||
"value": "Mustermann",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 174.58084,
|
||||
"y": 756.62396
|
||||
},
|
||||
"width": 63.370804,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "M., Doe J., ",
|
||||
"textAfter": " M.",
|
||||
"comments": [],
|
||||
"startOffset": 56,
|
||||
"endOffset": 66,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.735523+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "862b5f48ea86c7ea2ea30d334648280b",
|
||||
"type": "CBI_author",
|
||||
"value": "F. Lastname",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 70.80005,
|
||||
"y": 771.264
|
||||
},
|
||||
"width": 58.376404,
|
||||
"height": -13.584,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": ", J. Doe,",
|
||||
"comments": [],
|
||||
"startOffset": 0,
|
||||
"endOffset": 11,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.735523+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,882 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "934c88b32350ade58689d8f6d950d91f",
|
||||
"type": "dossier_redactions",
|
||||
"value": "Difenoconazole",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 287.29755,
|
||||
"y": 450.7068
|
||||
},
|
||||
"width": 63.18637,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Residue of ",
|
||||
"textAfter": " (CGA 169374)",
|
||||
"comments": [],
|
||||
"startOffset": 67,
|
||||
"endOffset": 81,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838974+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": true,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "8df15f8b7d1f49b08d6d594e4bda5ac7",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 416.26678
|
||||
},
|
||||
"width": 197.15836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Three Dose Levels ",
|
||||
"textAfter": ", Report N°",
|
||||
"comments": [],
|
||||
"startOffset": 260,
|
||||
"endOffset": 307,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838976+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "6c7d11e49691649bf83d7be3c357150a",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 167.57678
|
||||
},
|
||||
"width": 197.15836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "confined rotational crops ",
|
||||
"textAfter": " Ciba-Geigy Corp.,",
|
||||
"comments": [],
|
||||
"startOffset": 106,
|
||||
"endOffset": 153,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838976+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "000db7c74ae8f0b1ef5e6d5531d3edbf",
|
||||
"type": "dossier_redactions",
|
||||
"value": "Difenoconazole",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 532.1275,
|
||||
"y": 439.1868
|
||||
},
|
||||
"width": 63.186096,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "From Feeding of ",
|
||||
"textAfter": " at Three",
|
||||
"comments": [],
|
||||
"startOffset": 224,
|
||||
"endOffset": 238,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838977+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": true,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9b9d98e79e5b8bbdf430e9b191c0d3b1",
|
||||
"type": "dossier_redactions",
|
||||
"value": "Difenoconazole",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 352.51678
|
||||
},
|
||||
"width": 63.18634,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": ": Aqueous Hydrolysis",
|
||||
"comments": [],
|
||||
"startOffset": 24,
|
||||
"endOffset": 38,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838977+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": true,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "48446f28260187a5be149080a75d0a22",
|
||||
"type": "CBI_author",
|
||||
"value": "Tribolet, R.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 110.9,
|
||||
"y": 450.7068
|
||||
},
|
||||
"width": 46.353844,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 38,
|
||||
"endOffset": 50,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838977+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "a21795d33c39ff80121540b65418ade8",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 733.56,
|
||||
"y": 559.7305
|
||||
},
|
||||
"width": 17.540955,
|
||||
"height": -10.0905,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "- Core Assessment ",
|
||||
"textAfter": " 109 /152",
|
||||
"comments": [],
|
||||
"startOffset": 45,
|
||||
"endOffset": 49,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838977+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "89db76af0679fc485f7afbe4b3bae8fa",
|
||||
"type": "vertebrate",
|
||||
"value": "cattle",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 395.31693,
|
||||
"y": 439.1868
|
||||
},
|
||||
"width": 23.754639,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 191,
|
||||
"endOffset": 197,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838978+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "815744bfd400a6a5d1076d8c7919b91c",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 242.81677
|
||||
},
|
||||
"width": 197.15836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", Report N°",
|
||||
"comments": [],
|
||||
"startOffset": 174,
|
||||
"endOffset": 221,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838978+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "0726fd27ea9b8d9a0a52064b4d18536d",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta - Jealott's Hill International, Bracknell, Berkshire, United Kingdom",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 329.4768
|
||||
},
|
||||
"width": 309.0616,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", Report N°",
|
||||
"comments": [],
|
||||
"startOffset": 127,
|
||||
"endOffset": 204,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838978+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "04b0618faf5a3009f2ed3c3ab96d807a",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 254.33679
|
||||
},
|
||||
"width": 197.15836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "processed fractions, Chile ",
|
||||
"textAfter": " Novartis Crop",
|
||||
"comments": [],
|
||||
"startOffset": 126,
|
||||
"endOffset": 173,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838978+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "7da02f675527d4dd036a23a335f41b1f",
|
||||
"type": "CBI_author",
|
||||
"value": "Muir, G.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 110.9,
|
||||
"y": 352.51678
|
||||
},
|
||||
"width": 34.611,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 10,
|
||||
"endOffset": 18,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838979+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "44d59f95d1b7e4ef17638bf34faed333",
|
||||
"type": "CBI_author",
|
||||
"value": "Kühne-Thu, H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 110.9,
|
||||
"y": 265.7368
|
||||
},
|
||||
"width": 60.656395,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 10,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838979+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2a8f970a069c1269123f8631413b00da",
|
||||
"type": "CBI_author",
|
||||
"value": "Close, C.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 110.9,
|
||||
"y": 179.0968
|
||||
},
|
||||
"width": 36.79226,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 10,
|
||||
"endOffset": 19,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.838979+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "0bfc768a74e1a6c2a3939d267fa7fbf9",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Corp., Greensboro, United States",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 241.85,
|
||||
"y": 156.0268
|
||||
},
|
||||
"width": 181.64938,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", Report N°",
|
||||
"comments": [],
|
||||
"startOffset": 154,
|
||||
"endOffset": 197,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:43.83898+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,619 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "830879b72faf6d55f2f6760f69c0c270",
|
||||
"type": "CBI_address",
|
||||
"value": "Brixham Environmental Laboratory, Brixham, United Kingdom",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 214.65997
|
||||
},
|
||||
"width": 186.23929,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 203.13998
|
||||
},
|
||||
"width": 67.50305,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", BL7101/B GLP",
|
||||
"comments": [],
|
||||
"startOffset": 154,
|
||||
"endOffset": 211,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.79056+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9a876258c26e662d80a56f9e1ff96040",
|
||||
"type": "vertebrate",
|
||||
"value": "rainbow trout",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 313.2239,
|
||||
"y": 368.62
|
||||
},
|
||||
"width": 54.010498,
|
||||
"height": -10.979996,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 78,
|
||||
"endOffset": 91,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790563+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "a09a2d87f003db2c657747417ab1cf1f",
|
||||
"type": "redaction_indicator",
|
||||
"value": "acute toxicity",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.7921569,
|
||||
1.0,
|
||||
0.52156866
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 380.13998
|
||||
},
|
||||
"width": 56.947876,
|
||||
"height": -10.979996,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 30,
|
||||
"endOffset": 44,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790563+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "e871d2dbbade7b05858b431a4e8c1265",
|
||||
"type": "CBI_author",
|
||||
"value": "Wallace S.J.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 162.84,
|
||||
"y": 260.62
|
||||
},
|
||||
"width": 49.775192,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 16,
|
||||
"endOffset": 28,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790563+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "b1c5ea2fbe952aabbdd81ca1f256d425",
|
||||
"type": "CBI_author",
|
||||
"value": "Rufli H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 162.84,
|
||||
"y": 380.13998
|
||||
},
|
||||
"width": 32.613907,
|
||||
"height": -10.979996,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 16,
|
||||
"endOffset": 24,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790563+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "6c31a01796b6e39b795dc278dc46ecf2",
|
||||
"type": "vertebrate",
|
||||
"value": "oncorhynchus mykiss",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 373.09506,
|
||||
"y": 368.62
|
||||
},
|
||||
"width": 89.1272,
|
||||
"height": -10.979996,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 93,
|
||||
"endOffset": 112,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790563+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "62c63ced50041bf6ec8e07b66de17929",
|
||||
"type": "redaction_indicator",
|
||||
"value": "acute toxicity",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.7921569,
|
||||
1.0,
|
||||
0.52156866
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 361.71442,
|
||||
"y": 260.62
|
||||
},
|
||||
"width": 56.907166,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 46,
|
||||
"endOffset": 60,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790564+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "026363a8555e389fc888c94973c25910",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Basel, Oekotoxikologie, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 322.65997
|
||||
},
|
||||
"width": 173.27557,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 311.13998
|
||||
},
|
||||
"width": 47.80893,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 953609 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 189,
|
||||
"endOffset": 242,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790564+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "93809c00fbc2b0024409e861b108eee1",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 345.58
|
||||
},
|
||||
"width": 147.19922,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 302.88,
|
||||
"y": 334.18
|
||||
},
|
||||
"width": 47.57898,
|
||||
"height": -10.980011,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "the flow-through system ",
|
||||
"textAfter": " Ciba-Geigy Basel,",
|
||||
"comments": [],
|
||||
"startOffset": 141,
|
||||
"endOffset": 188,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790564+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "7a2d56da2f414cc86370a7026267f433",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 743.64,
|
||||
"y": 548.74
|
||||
},
|
||||
"width": 18.731384,
|
||||
"height": -10.02,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": "Regulation 284/2013 A8637C ",
|
||||
"textAfter": " 5 L-CP",
|
||||
"comments": [],
|
||||
"startOffset": 36,
|
||||
"endOffset": 40,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:30.790564+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,535 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "ca9a988821a7af8f2774f3c5c8bae48d",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Technology & Projects, Huddersfield, United Kingdom",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 228.62,
|
||||
"y": 278.28052
|
||||
},
|
||||
"width": 236.01602,
|
||||
"height": -10.090515,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "Safety Study Syngenta ",
|
||||
"textAfter": ", HT14/555 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 81,
|
||||
"endOffset": 141,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994419+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "268234d4a7e839315e7d5ace382d167b",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 224.3,
|
||||
"y": 123.55051
|
||||
},
|
||||
"width": 190.21504,
|
||||
"height": -10.090485,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": "Certificate of Analysis ",
|
||||
"textAfter": ", 10013338 Not",
|
||||
"comments": [],
|
||||
"startOffset": 59,
|
||||
"endOffset": 108,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994421+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "0c6d7ccb7f0cba39212473e09fb60e00",
|
||||
"type": "CBI_author",
|
||||
"value": "Angly, H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 135.98,
|
||||
"y": 354.48053
|
||||
},
|
||||
"width": 35.58603,
|
||||
"height": -10.090515,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 24,
|
||||
"endOffset": 33,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "693a33d2ec614caab97519c1f228e1ec",
|
||||
"type": "CBI_author",
|
||||
"value": "O’Connor B.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 135.98,
|
||||
"y": 420.3905
|
||||
},
|
||||
"width": 47.105988,
|
||||
"height": -10.0905,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 24,
|
||||
"endOffset": 35,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "e5672d8bfa30425f0c5350898fdc82ca",
|
||||
"type": "CBI_author",
|
||||
"value": "Naegele, M.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 134.54,
|
||||
"y": 133.99051
|
||||
},
|
||||
"width": 43.182053,
|
||||
"height": -10.090485,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 9,
|
||||
"endOffset": 20,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "5af0f279876bc27c876589b6ee3c3af6",
|
||||
"type": "CBI_author",
|
||||
"value": "Jackson W.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 135.98,
|
||||
"y": 299.04053
|
||||
},
|
||||
"width": 41.33702,
|
||||
"height": -10.090515,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 24,
|
||||
"endOffset": 34,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994422+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2089b6c4756dff5febd7f9ee34d96578",
|
||||
"type": "CBI_author",
|
||||
"value": "Martin, N.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 135.98,
|
||||
"y": 480.2705
|
||||
},
|
||||
"width": 37.854004,
|
||||
"height": -10.0905,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 24,
|
||||
"endOffset": 34,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994423+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "43dce807f8cf8fb17c4696be3ca70b83",
|
||||
"type": "CBI_address",
|
||||
"value": "Solvias AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 228.62,
|
||||
"y": 469.8305
|
||||
},
|
||||
"width": 113.59805,
|
||||
"height": -10.0905,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Surface tension ",
|
||||
"textAfter": " Rep. No.",
|
||||
"comments": [],
|
||||
"startOffset": 56,
|
||||
"endOffset": 86,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994423+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "bb4447654d5f6b37c1744ab56b31a7fa",
|
||||
"type": "CBI_address",
|
||||
"value": "Harlan Laboratories Ltd., Shardlow, Derbyshire, UK",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 228.62,
|
||||
"y": 399.72052
|
||||
},
|
||||
"width": 189.95404,
|
||||
"height": -10.0905,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "Surface Tension Syngenta ",
|
||||
"textAfter": ", 41400715 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 102,
|
||||
"endOffset": 152,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:44:32.994423+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,417 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "0b056948e0845cad87f01ab9ccd3b9a4",
|
||||
"type": "CBI_author",
|
||||
"value": "Zhang Y.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 265.1939,
|
||||
"y": 162.84314
|
||||
},
|
||||
"width": 11.54608,
|
||||
"height": 37.820526,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 22,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830141+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "1e87df9e854f0b9d419eacebf337db54",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 46.147198,
|
||||
"y": 743.63043
|
||||
},
|
||||
"width": 10.452838,
|
||||
"height": 18.645264,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 13,
|
||||
"textBefore": "Section 1 Supplement ",
|
||||
"textAfter": " 4 Reference",
|
||||
"comments": [],
|
||||
"startOffset": 66,
|
||||
"endOffset": 70,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830142+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "1f911cb6816681d12c691f9135feb689",
|
||||
"type": "CBI_author",
|
||||
"value": "Stubbs D.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 416.6939,
|
||||
"y": 162.8592
|
||||
},
|
||||
"width": 11.54608,
|
||||
"height": 39.496826,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830143+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "480c98a59b45e89e8f0d90d14f5f361a",
|
||||
"type": "CBI_author",
|
||||
"value": "Stubbs D.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 467.15393,
|
||||
"y": 162.84319
|
||||
},
|
||||
"width": 11.54608,
|
||||
"height": 39.507843,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830143+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "aecd5a7d888ee0b3f727560c7bdf08d4",
|
||||
"type": "CBI_author",
|
||||
"value": "Hager M.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 366.17392,
|
||||
"y": 162.84319
|
||||
},
|
||||
"width": 11.54608,
|
||||
"height": 38.351547,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 8,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 22,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830143+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "739db5971e8f83e44545259d38997759",
|
||||
"type": "CBI_author",
|
||||
"value": "Zhang Y.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 214.67392,
|
||||
"y": 162.8512
|
||||
},
|
||||
"width": 11.546064,
|
||||
"height": 37.82849,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 22,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830143+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "8e7f7e73b4573c8bdf0e2a4b393dcebd",
|
||||
"type": "CBI_author",
|
||||
"value": "Hager M.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 315.65393,
|
||||
"y": 162.8592
|
||||
},
|
||||
"width": 11.54608,
|
||||
"height": 38.393616,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 7,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 22,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:45:08.830144+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,706 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "35a71ce96c76997a8d426c10b79f4ba5",
|
||||
"type": "CBI_author",
|
||||
"value": "Khalil, S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 141.85815,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 30.450958,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 24,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680501+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "bc8a263d245116b72ea7f9f63a115f50",
|
||||
"type": "CBI_author",
|
||||
"value": "Fankhauser, H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 369.37808,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.970963,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 378.61807,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.381805,
|
||||
"height": 7.771012,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 28,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680504+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2adf5ba15762268bc1b772a1024e56cb",
|
||||
"type": "vertebrate",
|
||||
"value": "rats",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 375.61807,
|
||||
"y": 334.90967
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 11.529175,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 74,
|
||||
"endOffset": 78,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680504+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "6efd0aac20321c20bf7db31de20a2d57",
|
||||
"type": "vertebrate",
|
||||
"value": "rat",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 258.7381,
|
||||
"y": 374.14954
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 11.1163025,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 54,
|
||||
"endOffset": 57,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680504+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "10d0d89dc6d244f89f7c1edc7a4fce00",
|
||||
"type": "CBI_author",
|
||||
"value": "Doubovetzky, M.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 258.7381,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 44.970978,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 267.8581,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.381805,
|
||||
"height": 9.211014,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 29,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680504+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "abf92916135cf16f503fa3a1d0b2880e",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Ltd., Stein, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 421.578,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.381803,
|
||||
"height": 74.97073,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 430.818,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.221985,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "CGA 24705 tech. ",
|
||||
"textAfter": " Report N°",
|
||||
"comments": [],
|
||||
"startOffset": 181,
|
||||
"endOffset": 216,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680504+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2fab85c52c334de17ce578bc98946fa9",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Ltd.,Stein, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 157.21814,
|
||||
"y": 307.1902
|
||||
},
|
||||
"width": 10.381803,
|
||||
"height": 72.930786,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 166.45816,
|
||||
"y": 307.1902
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.221954,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Rat Oral Teratogenicity ",
|
||||
"textAfter": " Report No.",
|
||||
"comments": [],
|
||||
"startOffset": 66,
|
||||
"endOffset": 100,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680505+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "320dbe7c587b2f00d6a8606c32950c8a",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 277.09808,
|
||||
"y": 307.18585
|
||||
},
|
||||
"width": 10.381802,
|
||||
"height": 95.85449,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 286.33807,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.381803,
|
||||
"height": 60.06189,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "Rat oral teratogenicity ",
|
||||
"textAfter": " Novartis Crop",
|
||||
"comments": [],
|
||||
"startOffset": 78,
|
||||
"endOffset": 125,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680505+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "b7dce9eda50e18c3dfd5b18d9feb648d",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Stein, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 295.45807,
|
||||
"y": 307.18585
|
||||
},
|
||||
"width": 10.381802,
|
||||
"height": 95.85449,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 304.69806,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.381803,
|
||||
"height": 58.741882,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 981009 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 126,
|
||||
"endOffset": 173,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680505+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "723928090ba52f1a6e1ed4f314738ab8",
|
||||
"type": "redaction_indicator",
|
||||
"value": "oral toxicity",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.7921569,
|
||||
1.0,
|
||||
0.52156866
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 366.37808,
|
||||
"y": 363.9496
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.941895,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 51,
|
||||
"endOffset": 64,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680505+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d660c0dc7715c7299cf41eae94670f28",
|
||||
"type": "vertebrate",
|
||||
"value": "rat",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 138.85815,
|
||||
"y": 352.78995
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 11.116272,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 42,
|
||||
"endOffset": 45,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.680506+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,424 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "2892843ee2696e999ada76b68d61e22a",
|
||||
"type": "CBI_author",
|
||||
"value": "2¶/RXJKOLQ\u000F\u0003 C.K. Salamon, C.M. Smith, S.H. Casey, H.W.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 373.61093,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.648039,
|
||||
"height": 41.729233,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 382.83514,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.64804,
|
||||
"height": 15.050003,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 392.05936,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.64804,
|
||||
"height": 30.018692,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 401.16403,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.64804,
|
||||
"height": 16.494522,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 410.38864,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.648039,
|
||||
"height": 37.30696,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 419.61325,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.648039,
|
||||
"height": 40.671036,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 69,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250466+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "eab4f61185bca80c8f970e7c18edc8f8",
|
||||
"type": "CBI_author",
|
||||
"value": "Wolf S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 259.87192,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.64804,
|
||||
"height": 24.745651,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 12,
|
||||
"endOffset": 19,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250468+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "5b940b2cb401ed9f5be6fc24f6e77bcf",
|
||||
"type": "CBI_address",
|
||||
"value": "Toxigenics, Inc., Decatur, IL 62526, USA",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 398.16904,
|
||||
"y": 327.567
|
||||
},
|
||||
"width": 9.648037,
|
||||
"height": 92.36856,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 407.39365,
|
||||
"y": 327.567
|
||||
},
|
||||
"width": 9.648039,
|
||||
"height": 40.027863,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "with metolachlor technical ",
|
||||
"textAfter": " Report No.",
|
||||
"comments": [],
|
||||
"startOffset": 151,
|
||||
"endOffset": 191,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250468+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "675eba69b0c2917de55462c817adaa05",
|
||||
"type": "CBI_author",
|
||||
"value": "Robinson N.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 140.04395,
|
||||
"y": 241.282
|
||||
},
|
||||
"width": 9.648054,
|
||||
"height": 40.437485,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 12,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250468+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "7d0a50f9cf00fafdd6b947b1fbce4388",
|
||||
"type": "vertebrate",
|
||||
"value": "rats",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 379.84015,
|
||||
"y": 377.10638
|
||||
},
|
||||
"width": 9.64804,
|
||||
"height": 11.502014,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 119,
|
||||
"endOffset": 123,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250468+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "fc287b74be2421156ab2895c7474ccdd",
|
||||
"type": "CBI_address",
|
||||
"value": "RCC Ltd., Itingen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 305.89514,
|
||||
"y": 327.567
|
||||
},
|
||||
"width": 9.648038,
|
||||
"height": 59.67758,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 314.99982,
|
||||
"y": 327.567
|
||||
},
|
||||
"width": 9.648039,
|
||||
"height": 38.117523,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 856140 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 141,
|
||||
"endOffset": 171,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:36:55.250469+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,832 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "0fdc213987d07b28e2c084af22a52b30",
|
||||
"type": "CBI_author",
|
||||
"value": "Spare",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 619.7868
|
||||
},
|
||||
"width": 22.758606,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1983) CGA77102/000",
|
||||
"comments": [],
|
||||
"startOffset": 60,
|
||||
"endOffset": 65,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304051+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "027bf0dd7f188d16f98b9b403819943a",
|
||||
"type": "vertebrate",
|
||||
"value": "fish",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 70.944,
|
||||
"y": 719.8668
|
||||
},
|
||||
"width": 17.210884,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 0,
|
||||
"endOffset": 4,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304053+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c9d93d74ccd833210380f4baded51b6e",
|
||||
"type": "CBI_author",
|
||||
"value": "Memmert",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 458.8368
|
||||
},
|
||||
"width": 39.34198,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 11,
|
||||
"textBefore": null,
|
||||
"textAfter": " 2006 85925",
|
||||
"comments": [],
|
||||
"startOffset": 85,
|
||||
"endOffset": 92,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304054+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "758286c695b160a3a418fb01fb1925d2",
|
||||
"type": "vertebrate",
|
||||
"value": "oncorhynchus mykiss",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 120.02,
|
||||
"y": 719.8718
|
||||
},
|
||||
"width": 58.42533,
|
||||
"height": -10.531799,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 120.02,
|
||||
"y": 708.3518
|
||||
},
|
||||
"width": 26.543388,
|
||||
"height": -10.531799,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 11,
|
||||
"endOffset": 30,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304054+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "427dc0ab7db19cb7cf952e856a1aae4a",
|
||||
"type": "CBI_author",
|
||||
"value": "Spare",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 531.3168
|
||||
},
|
||||
"width": 22.758606,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 9,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1983) CGA77102/000",
|
||||
"comments": [],
|
||||
"startOffset": 64,
|
||||
"endOffset": 69,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304054+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "355e805635822e3e2030d5273747a01e",
|
||||
"type": "CBI_author",
|
||||
"value": "Hefner",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 329.81677
|
||||
},
|
||||
"width": 27.648987,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 14,
|
||||
"textBefore": null,
|
||||
"textAfter": " 2014 D9345",
|
||||
"comments": [],
|
||||
"startOffset": 111,
|
||||
"endOffset": 117,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304054+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c09daaa524c949aa79ba3e1d532887fd",
|
||||
"type": "CBI_author",
|
||||
"value": "Buccafusco",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 719.8668
|
||||
},
|
||||
"width": 46.46347,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1978) CGA24705/019",
|
||||
"comments": [],
|
||||
"startOffset": 57,
|
||||
"endOffset": 67,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304055+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "56abbd0e4ede3833fcc31d7b39251dd0",
|
||||
"type": "CBI_author",
|
||||
"value": "Eckenstein",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 415.8768
|
||||
},
|
||||
"width": 43.834076,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 12,
|
||||
"textBefore": null,
|
||||
"textAfter": " 2013 D6903",
|
||||
"comments": [],
|
||||
"startOffset": 78,
|
||||
"endOffset": 88,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304055+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "22312f695be04d69f30690e45f1a6f9e",
|
||||
"type": "CBI_author",
|
||||
"value": "Collins",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 649.3068
|
||||
},
|
||||
"width": 28.814362,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1995) CGA77102/007",
|
||||
"comments": [],
|
||||
"startOffset": 58,
|
||||
"endOffset": 65,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304055+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "f1a4c833ff434664529965fcee313af3",
|
||||
"type": "CBI_author",
|
||||
"value": "Collins",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 560.8368
|
||||
},
|
||||
"width": 28.814362,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 8,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1995) CGA77102/007",
|
||||
"comments": [],
|
||||
"startOffset": 61,
|
||||
"endOffset": 68,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304055+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9e984987d0e291a0511e458ab4f64812",
|
||||
"type": "CBI_author",
|
||||
"value": "Sachsse & Ullmann",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 690.3468
|
||||
},
|
||||
"width": 79.34134,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": " (1974) CGA24705/019",
|
||||
"comments": [],
|
||||
"startOffset": 57,
|
||||
"endOffset": 74,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304055+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "1bdeee97a18baeb647cdde79d5c6c63f",
|
||||
"type": "CBI_author",
|
||||
"value": "Liedtke",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 590.3868
|
||||
},
|
||||
"width": 30.437836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 7,
|
||||
"textBefore": null,
|
||||
"textAfter": " (2011) D2464",
|
||||
"comments": [],
|
||||
"startOffset": 52,
|
||||
"endOffset": 59,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304056+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d12f940bc16d8156495713823de26b13",
|
||||
"type": "CBI_author",
|
||||
"value": "Liedtke",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 501.79678
|
||||
},
|
||||
"width": 30.437836,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 10,
|
||||
"textBefore": null,
|
||||
"textAfter": " 2011 D2466",
|
||||
"comments": [],
|
||||
"startOffset": 56,
|
||||
"endOffset": 63,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304056+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d7cfb624b889129ae4c850dd59008143",
|
||||
"type": "CBI_author",
|
||||
"value": "Hoberg",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 457.78,
|
||||
"y": 372.7768
|
||||
},
|
||||
"width": 30.02945,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 13,
|
||||
"textBefore": null,
|
||||
"textAfter": ", 1995 94-8-540",
|
||||
"comments": [],
|
||||
"startOffset": 133,
|
||||
"endOffset": 139,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.304056+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "64eb5ff4ea1db8665fb6e57c5369b411",
|
||||
"type": "PII",
|
||||
"value": "Page",
|
||||
"reason": "Personal information found",
|
||||
"matchedRule": 19,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.4,
|
||||
0.8,
|
||||
1.0
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 152.48778,
|
||||
"y": 654.18
|
||||
},
|
||||
"width": 11.992156,
|
||||
"height": 20.888428,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 8,
|
||||
"textBefore": null,
|
||||
"textAfter": " 1 of",
|
||||
"comments": [],
|
||||
"startOffset": 54,
|
||||
"endOffset": 58,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.097097+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,650 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "ecb77808f9b4bf5d48ac7c98e770b972",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Münchwilen AG, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 195.62683
|
||||
},
|
||||
"width": 109.55878,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 184.2268
|
||||
},
|
||||
"width": 16.76268,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 239.19308,
|
||||
"y": 184.2268
|
||||
},
|
||||
"width": 52.977325,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 172.70679
|
||||
},
|
||||
"width": 47.55899,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", Not GLP,",
|
||||
"comments": [],
|
||||
"startOffset": 185,
|
||||
"endOffset": 234,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380865+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "ea5da83399676b70f03f634bf999546d",
|
||||
"type": "CBI_author",
|
||||
"value": "Oggenfuss P.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 90.504,
|
||||
"y": 264.6568
|
||||
},
|
||||
"width": 42.608887,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 90.504,
|
||||
"y": 253.25677
|
||||
},
|
||||
"width": 8.129761,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 41,
|
||||
"endOffset": 53,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380867+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "877c0ac6b94bc0da83503fe36f1658b4",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection Münchwilen AG, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 368.6968
|
||||
},
|
||||
"width": 109.61984,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 357.1768
|
||||
},
|
||||
"width": 50.427475,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 275.45,
|
||||
"y": 357.1768
|
||||
},
|
||||
"width": 16.762695,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 345.6568
|
||||
},
|
||||
"width": 106.910706,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 115094 GLP,",
|
||||
"comments": [],
|
||||
"startOffset": 165,
|
||||
"endOffset": 228,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380867+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c4345859d80b2af7cf21093b986b3ccc",
|
||||
"type": "CBI_author",
|
||||
"value": "Kettner R.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 90.504,
|
||||
"y": 610.7868
|
||||
},
|
||||
"width": 41.47345,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 41,
|
||||
"endOffset": 51,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380867+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "92f9d91fa7f2391396010fcb298d0453",
|
||||
"type": "CBI_author",
|
||||
"value": "Kendall A.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 90.504,
|
||||
"y": 103.230774
|
||||
},
|
||||
"width": 43.754303,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 13,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380867+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "7e545d20eb3c2e5954306b494513edb6",
|
||||
"type": "CBI_sponsor",
|
||||
"value": "Monthey Syngenta Crop Protection AG, Basel, Switzerland",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 232.17128,
|
||||
"y": 403.13678
|
||||
},
|
||||
"width": 36.045242,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 391.7368
|
||||
},
|
||||
"width": 109.61984,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 380.2168
|
||||
},
|
||||
"width": 94.19174,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "batches produced at ",
|
||||
"textAfter": " Syngenta Crop",
|
||||
"comments": [],
|
||||
"startOffset": 109,
|
||||
"endOffset": 164,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380868+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c428cec3fa7107a63b8dad91472692cd",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection Münchwilen AG, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 541.7568
|
||||
},
|
||||
"width": 109.61984,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 530.2368
|
||||
},
|
||||
"width": 50.427475,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 275.40762,
|
||||
"y": 530.2368
|
||||
},
|
||||
"width": 16.762695,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 518.7168
|
||||
},
|
||||
"width": 106.910706,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 109315 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 200,
|
||||
"endOffset": 263,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380868+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "6a7161e6cff51092e0a5c1807f4217e5",
|
||||
"type": "CBI_author",
|
||||
"value": "Kettner R.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 90.504,
|
||||
"y": 426.1968
|
||||
},
|
||||
"width": 41.47345,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 41,
|
||||
"endOffset": 51,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380868+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "83fa17fa3eae500538804ced745e1ac8",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 218.66681
|
||||
},
|
||||
"width": 109.62976,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 182.69,
|
||||
"y": 207.14679
|
||||
},
|
||||
"width": 94.19174,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "by mass spectroscopy ",
|
||||
"textAfter": " Ciba-Geigy Münchwilen",
|
||||
"comments": [],
|
||||
"startOffset": 137,
|
||||
"endOffset": 184,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:41:52.380868+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,185 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "9f6837120752b85c20e27d4cb199bd51",
|
||||
"type": "CBI_author",
|
||||
"value": "B. Foo",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 92.520004,
|
||||
"y": 725.19165
|
||||
},
|
||||
"width": 30.589584,
|
||||
"height": -12.231651,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": " F. Bar",
|
||||
"comments": [],
|
||||
"startOffset": 0,
|
||||
"endOffset": 6,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.746637+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "fb930b7f3acf65a74b0b59fee32cc6fa",
|
||||
"type": "CBI_author",
|
||||
"value": "F. Bar",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 125.92424,
|
||||
"y": 725.19165
|
||||
},
|
||||
"width": 28.137009,
|
||||
"height": -12.231651,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "B. Foo ",
|
||||
"textAfter": " Foo, B.",
|
||||
"comments": [],
|
||||
"startOffset": 7,
|
||||
"endOffset": 13,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.746639+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "435224747b87ed87b60ab363e6610fba",
|
||||
"type": "CBI_author",
|
||||
"value": "Foo",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 1,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Header",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 92.520004,
|
||||
"y": 699.0316
|
||||
},
|
||||
"width": 17.338272,
|
||||
"height": -12.231651,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Foo F. Bar ",
|
||||
"textAfter": ", B.",
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 17,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.746639+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,614 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "5145a512398521819255a3747c0d4c60",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Ltd., Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 414.85803,
|
||||
"y": 303.34995
|
||||
},
|
||||
"width": 10.381801,
|
||||
"height": 116.46164,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "stability in air ",
|
||||
"textAfter": " Rep. No.",
|
||||
"comments": [],
|
||||
"startOffset": 110,
|
||||
"endOffset": 145,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405866+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "7172a7f50d0b5bb5854cae47722d069a",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Ltd., Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 467.418,
|
||||
"y": 303.34982
|
||||
},
|
||||
"width": 10.381801,
|
||||
"height": 116.46164,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 7,
|
||||
"textBefore": "on vapour pressure ",
|
||||
"textAfter": " Rep. No.",
|
||||
"comments": [],
|
||||
"startOffset": 86,
|
||||
"endOffset": 121,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405868+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "d3b5392993db063f6f7f353b8b694dda",
|
||||
"type": "CBI_address",
|
||||
"value": "Novartis Crop Protection AG, Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 229.81812,
|
||||
"y": 303.3459
|
||||
},
|
||||
"width": 10.381801,
|
||||
"height": 117.69446,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 239.05814,
|
||||
"y": 303.34982
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.221985,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "with S- metolachlor ",
|
||||
"textAfter": " Overview, 30.01.1997",
|
||||
"comments": [],
|
||||
"startOffset": 125,
|
||||
"endOffset": 172,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405869+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "a8f09099bb227f16fea633f2f4df60e9",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Muenchwilen AG, Muenchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 344.05807,
|
||||
"y": 303.34995
|
||||
},
|
||||
"width": 10.381801,
|
||||
"height": 98.73071,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 353.17807,
|
||||
"y": 303.34995
|
||||
},
|
||||
"width": 10.381802,
|
||||
"height": 86.2218,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "/ boiling range ",
|
||||
"textAfter": " Rep. No.",
|
||||
"comments": [],
|
||||
"startOffset": 97,
|
||||
"endOffset": 148,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405869+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2a01a1fb05894447e93f30cd3844abb8",
|
||||
"type": "CBI_author",
|
||||
"value": "Widmer, H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 458.17804,
|
||||
"y": 211.31012
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.01097,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 7,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 44,
|
||||
"endOffset": 54,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405869+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3563e449549b4809e794c26c664b087e",
|
||||
"type": "CBI_author",
|
||||
"value": "Burkhard, N.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 202.21814,
|
||||
"y": 211.31012
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 42.09099,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 34,
|
||||
"endOffset": 46,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.405869+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "96f305a2af77ee911de55ea3aa0ec725",
|
||||
"type": "CBI_address",
|
||||
"value": "Ciba-Geigy Ltd., Basel, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 291.4981,
|
||||
"y": 303.3499
|
||||
},
|
||||
"width": 10.381801,
|
||||
"height": 116.46167,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "/ freezing temperature ",
|
||||
"textAfter": " Rep. No.",
|
||||
"comments": [],
|
||||
"startOffset": 103,
|
||||
"endOffset": 138,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.40587+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "2bbc5d2a61b28db4110b753c4e1f5aa0",
|
||||
"type": "CBI_author",
|
||||
"value": "Schürch, H.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 396.49805,
|
||||
"y": 211.31012
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 38.13098,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 44,
|
||||
"endOffset": 55,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.40587+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "4ee63ca739bc56a48a1608316450a532",
|
||||
"type": "CBI_author",
|
||||
"value": "Geoffroy, A.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 282.25812,
|
||||
"y": 211.31012
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 41.01097,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 44,
|
||||
"endOffset": 56,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.40587+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "535b7e68d32a3f4533bfdb9608ddcc28",
|
||||
"type": "CBI_author",
|
||||
"value": "Das, R.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 334.81808,
|
||||
"y": 211.31012
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 23.850967,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 44,
|
||||
"endOffset": 51,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:37:39.40587+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,424 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "5ac11d7e63981585de17f2f62d6d7bbe",
|
||||
"type": "CBI_address",
|
||||
"value": "Toxigenics, Inc., Decatur, IL 62526, USA",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 397.33795,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.381802,
|
||||
"height": 92.634705,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 406.57794,
|
||||
"y": 307.1898
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 40.127716,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "with metolachlor technical ",
|
||||
"textAfter": " Report No.",
|
||||
"comments": [],
|
||||
"startOffset": 150,
|
||||
"endOffset": 190,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838194+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "03d28f72d93221d57ace2c59f9519232",
|
||||
"type": "CBI_author",
|
||||
"value": "Wolf S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 258.8581,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 24.81099,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 12,
|
||||
"endOffset": 19,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838196+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "467195025b508eea457e570b92ec431a",
|
||||
"type": "vertebrate",
|
||||
"value": "rats",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.52156866,
|
||||
0.96862745
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 378.978,
|
||||
"y": 356.8696
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 11.529144,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 118,
|
||||
"endOffset": 122,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838196+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": true,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "22b63f21b4dbe4afc1e6c5d2e94ca3fe",
|
||||
"type": "CBI_author",
|
||||
"value": "O’Loughlin, C.K. Salamon, C.M. Smith, S.H. Casey, H.W.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 372.73807,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 39.81099,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 381.97806,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 15.090988,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 391.21805,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 30.090988,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 400.338,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 16.53099,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 409.578,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 37.41095,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 418.818,
|
||||
"y": 199.31017
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 40.77089,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 68,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838197+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "f43b8124523a5f86475042182548f0c5",
|
||||
"type": "CBI_author",
|
||||
"value": "Robinson N.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 138.85815,
|
||||
"y": 199.31013
|
||||
},
|
||||
"width": 10.3818035,
|
||||
"height": 40.530945,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 12,
|
||||
"endOffset": 23,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838197+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE",
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "5717d5b0c372525532c8753205a7a10f",
|
||||
"type": "CBI_address",
|
||||
"value": "RCC Ltd., Itingen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 304.93805,
|
||||
"y": 307.18988
|
||||
},
|
||||
"width": 10.381802,
|
||||
"height": 88.83832,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 314.05804,
|
||||
"y": 307.18988
|
||||
},
|
||||
"width": 10.381804,
|
||||
"height": 13.862061,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "AG, Basel, Switzerland ",
|
||||
"textAfter": ", 856140 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 141,
|
||||
"endOffset": 171,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:40:02.838197+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
@ -1,752 +0,0 @@
|
||||
{
|
||||
"analysisVersion": 1,
|
||||
"analysisNumber": 0,
|
||||
"redactionLogEntry": [
|
||||
{
|
||||
"id": "c8d12e90eafc83ccd292e9d16a0b1858",
|
||||
"type": "CBI_author",
|
||||
"value": "Mink C.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 102.75079
|
||||
},
|
||||
"width": 33.19668,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 7,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 21,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822334+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "19035b9f4fb5f5c73fca0edc567c5f84",
|
||||
"type": "CBI_author",
|
||||
"value": "Mink C.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 587.74677
|
||||
},
|
||||
"width": 33.19668,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 21,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822336+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "3fc09e8f62839d24387e9c83c0ed80c1",
|
||||
"type": "CBI_sponsor",
|
||||
"value": "Syngenta, Switzerland",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 437.7168
|
||||
},
|
||||
"width": 89.81004,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "Batches Produced at ",
|
||||
"textAfter": " Syngenta Syngenta",
|
||||
"comments": [],
|
||||
"startOffset": 92,
|
||||
"endOffset": 113,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822337+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "e6d0812441353e456c799d0b6eac7db8",
|
||||
"type": "CBI_author",
|
||||
"value": "Mink C.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 333.6568
|
||||
},
|
||||
"width": 33.19668,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 21,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822337+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "e25eeb521d05b0c4beab15f0de3ac3d6",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 414.6768
|
||||
},
|
||||
"width": 166.15288,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 403.13678
|
||||
},
|
||||
"width": 47.55899,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": "Syngenta, Switzerland Syngenta ",
|
||||
"textAfter": ", CHMU150224 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 123,
|
||||
"endOffset": 172,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822337+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "ca530c086f76e253614e619fe3cbbb4e",
|
||||
"type": "CBI_author",
|
||||
"value": "Voellmin S.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 206.66681
|
||||
},
|
||||
"width": 37.70858,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 195.14679
|
||||
},
|
||||
"width": 8.009956,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 25,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822337+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "bf455fb699bcaebea366486a80a49586",
|
||||
"type": "CBI_sponsor",
|
||||
"value": "Syngenta Nantong, China",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 310.73682
|
||||
},
|
||||
"width": 102.84703,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "Batches Produced at ",
|
||||
"textAfter": " Syngenta Syngenta",
|
||||
"comments": [],
|
||||
"startOffset": 93,
|
||||
"endOffset": 116,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822337+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "9b0672698f0f573bdc459dbc3eae8d5a",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 541.7568
|
||||
},
|
||||
"width": 166.15288,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 530.2368
|
||||
},
|
||||
"width": 47.55899,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Syngenta, Switzerland Syngenta ",
|
||||
"textAfter": ", CHMU150191 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 122,
|
||||
"endOffset": 171,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822338+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c137527626ea8a743ccfc9ad61277778",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 287.69678
|
||||
},
|
||||
"width": 166.15288,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 276.17676
|
||||
},
|
||||
"width": 47.55899,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 5,
|
||||
"textBefore": "Nantong, China Syngenta ",
|
||||
"textAfter": ", CHMU150598 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 126,
|
||||
"endOffset": 175,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822338+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "19df16adacd1ab45363f27f8cb137506",
|
||||
"type": "CBI_sponsor",
|
||||
"value": "Syngenta, Switzerland",
|
||||
"reason": null,
|
||||
"matchedRule": 0,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 564.6768
|
||||
},
|
||||
"width": 89.74959,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 3,
|
||||
"textBefore": "Batches Produced at ",
|
||||
"textAfter": " Syngenta Syngenta",
|
||||
"comments": [],
|
||||
"startOffset": 91,
|
||||
"endOffset": 112,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822338+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "c25ba82ef7059e52bedc5006d43aacca",
|
||||
"type": "CBI_address",
|
||||
"value": "Syngenta Crop Protection, Münchwilen, Switzerland",
|
||||
"reason": "Address found for non vertebrate study",
|
||||
"matchedRule": 3,
|
||||
"rectangle": false,
|
||||
"legalBasis": null,
|
||||
"imported": false,
|
||||
"redacted": false,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
0.8,
|
||||
0.8,
|
||||
0.8
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 183.62683
|
||||
},
|
||||
"width": 166.15288,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
},
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 175.61,
|
||||
"y": 172.2268
|
||||
},
|
||||
"width": 47.57158,
|
||||
"height": -10.526794,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 6,
|
||||
"textBefore": "a tox-reserve Syngenta ",
|
||||
"textAfter": ", 124700 GLP",
|
||||
"comments": [],
|
||||
"startOffset": 78,
|
||||
"endOffset": 127,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822338+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"DICTIONARY"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": true,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
},
|
||||
{
|
||||
"id": "50a6d7f50004bab095d8983985bf6e99",
|
||||
"type": "CBI_author",
|
||||
"value": "Mink C.",
|
||||
"reason": "Author found",
|
||||
"matchedRule": 10,
|
||||
"rectangle": false,
|
||||
"legalBasis": "Article 39(e)(3) of Regulation (EC) No 178/2002",
|
||||
"imported": false,
|
||||
"redacted": true,
|
||||
"section": "Text in table",
|
||||
"color": [
|
||||
1.0,
|
||||
0.88235295,
|
||||
0.5294118
|
||||
],
|
||||
"positions": [
|
||||
{
|
||||
"topLeft": {
|
||||
"x": 83.424,
|
||||
"y": 460.7568
|
||||
},
|
||||
"width": 33.19668,
|
||||
"height": -10.526825,
|
||||
"page": 1
|
||||
}
|
||||
],
|
||||
"sectionNumber": 4,
|
||||
"textBefore": null,
|
||||
"textAfter": null,
|
||||
"comments": [],
|
||||
"startOffset": 14,
|
||||
"endOffset": 21,
|
||||
"imageHasTransparency": false,
|
||||
"excluded": false,
|
||||
"sourceId": null,
|
||||
"changes": [
|
||||
{
|
||||
"analysisNumber": 0,
|
||||
"type": "ADDED",
|
||||
"dateTime": "2022-08-24T16:43:00.822339+02:00"
|
||||
}
|
||||
],
|
||||
"manualChanges": [],
|
||||
"engines": [
|
||||
"RULE"
|
||||
],
|
||||
"reference": [],
|
||||
"importedRedactionIntersections": [],
|
||||
"hint": false,
|
||||
"recommendation": false,
|
||||
"falsePositive": false,
|
||||
"image": false,
|
||||
"dictionaryEntry": false,
|
||||
"dossierDictionaryEntry": false,
|
||||
"localManualRedaction": false,
|
||||
"manuallyRemoved": false
|
||||
}
|
||||
],
|
||||
"legalBasis": [],
|
||||
"dictionaryVersion": 0,
|
||||
"dossierDictionaryVersion": 0,
|
||||
"rulesVersion": 0,
|
||||
"legalBasisVersion": 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user