#include <bits/stdc++.h>
using namespace std;
bool prime[(long long int)1e7 + 1];
bool sortbysec(const pair<int, int> &a, const pair<int, int> &b) {
  return (a.second < b.second);
}
vector<long long int> primeFactors(long long int n) {
  vector<long long int> result;
  if (n % 2 == 0) {
    result.push_back(2);
    while (n % 2 == 0) {
      n = n / 2;
    }
  }
  for (int i = 3; i <= sqrt(n); i = i + 2) {
    if (n % i == 0) {
      result.push_back(i);
      while (n % i == 0) {
        n = n / i;
      }
    }
  }
  if (n > 2) result.push_back(n);
  return result;
}
vector<long long int> printDivisors(long long int n) {
  vector<long long int> div;
  for (int i = 1; i <= sqrt(n); i++) {
    if (n % i == 0) {
      if (n / i == i) {
        div.push_back(i);
      } else {
        div.push_back(i);
        div.push_back(n / i);
      }
    }
  }
  sort(div.begin(), div.end());
  return div;
}
unordered_set<long long int> SieveOfEratosthenes(long long int n) {
  unordered_set<long long int> u;
  memset(prime, true, sizeof(prime));
  for (long long int p = 2; p * p <= n; p++) {
    if (prime[p] == true) {
      for (long long int i = p * p; i <= n; i += p) prime[i] = false;
    }
  }
  for (long long int p = 2; p <= n; p++)
    if (prime[p]) u.insert(p);
  return u;
}
long long int gcd(long long int a, long long int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long int product(long long int num, long long int result[],
                      long long int size) {
  long long int m = 0;
  long long int i = 0;
  long long int ans;
  for (i = 0; i < size; i++) {
    ans = num * result[i] + m;
    m = ans / 10;
    result[i] = ans % 10;
  }
  while (m != 0) {
    result[size] = m % 10;
    m /= 10;
    size++;
  }
  return size;
}
void factorial(long long int n) {
  long long int result[159];
  result[0] = 1;
  long long int i, size = 1;
  for (i = 2; i <= n; i++) {
    size = product(i, result, size);
  }
  for (i = size - 1; i >= 0; i--) {
    cout << result[i];
  }
}
long long int findGCD(vector<long long int> arr, long long int n) {
  long long int result = arr[0];
  for (int i = 1; i < n; i++) {
    result = gcd(arr[i], result);
    if (result == 1) {
      return 1;
    }
  }
  return result;
}
void swap(long long int &a, long long int &b) {
  long long int temp = a;
  a = b;
  b = temp;
}
bool isPrime(long long int n) {
  bool flag = true;
  for (long long int i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
      flag = false;
      break;
    }
  }
  return flag;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int x1, y1, x2, y2, a, b;
  cin >> x1 >> y1 >> x2 >> y2 >> a >> b;
  long long int difX = abs(x1 - x2);
  long long int difY = abs(y1 - y2);
  if (difX % a == 0 && difY % b == 0) {
    if ((difX / a) == (difY / b) || ((difX / a) % 2 == (difY / b) % 2)) {
      cout << "YES" << endl;
    } else {
      cout << "NO" << endl;
    }
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
